?? codetc4.dat
字號:
for 語句
功能:C語言中的for語句使用最為靈活,不僅可以用于循環次數已經確定的情況,而且可以用于循環次數不確定的而只給出循環結束條件的情況,它完全可以代替while語句。
形式 1:for(表達式 1;表達式 2;表達式 3)語句
它的執行過程如下:
(1) 先求解表達式 1.
(2) 求解表達式 2,若其值為真(值為非 0),則執行for語句中指定的內嵌語句,然后執行下面第(3)步。若為假(值為 0) ,則結束循環,轉到第(5)步。
(3) 求解表達式 3。
(4) 轉回上面第(2)步驟繼續執行。
(5) 循環結束,執行for語句下面的一個語句。
形式 2:for(循環變量賦初值;循環條件;循環變量增值)語句
例如:for(i=1;i<=100;i++) sum=sum+i
說明:可以看到for語句相當于以下語句
i=1;
while(i<=100)
{
sum=sum+i;
i=i+1;
}
顯然,用for語句簡單、方便。對于以上for語句的一般形式也可以改寫為while循環的形式。
(1) for語句的一般形式中的"表達式 1"可以省略,此時應在for語句之前給循環變量賦初值。注意省略表達式 1時,其后的分號不能省略。例如:for(;i<=100;i++)sum=sum+1;執行時,跳過"求解表達式 1"這一步,其他不變。
(2) 如果表達式 2省略,即不判斷循環條件,循環無終止地進行下去。也就是認為表達式 2始終為真。例如:
for(i=1;;i++) sum=sum+1;
(3) 表達示 3也可以省略,但此時程序設計者應另外設法保證循環能正常結束。例如:
for(i=1;i<=100;)
{
sum=sum+i;
i++;
}
在上面的for語句中只有表達式 1和表達式 2,而沒有表達式 3。i++的操作不放在for語句的表達試 3的位置處,而作為循環體的一部分,效果是一樣的,都能使循環正常結束。
(4) 可以省略表達式 1和表達式 3,只有表達式 2,即只給循環條件。例如:
for(;i<=100;) while(i<=100)
{ {
sum=sum+i; 等同于 sum=sum+1;
i++; i++;
} }
在這種情況下,完全等同于while語句。可見for語句比while語句功能強,除了可以給出循環條件外,還可以賦初值,使循環變量自動增值等。
(5) 3個表達式都可以省略,例如:
for(;;) 語句 相當于 while(1) 語句
即不設初值,不判斷條件(認為表達式 2為真值),循環變量不增值。無終止地執行循環體。
(6) 表達式 1可以是設置循環變量初值的賦值表達式,也可以是與循環變量無關的其他表達式。例如:
for(sum=0;i<=100;i++) sum=sum+i;
表達式 3也可以是與循環控制無關的任意表達式。
表達式 1和表達式 3可以是一個簡單的表達式,也可以是逗號表達式,即包含一個以上的簡單表達式,中間用逗號間隔。例如:
for(sum=0,i=1;i<=100;i++) sum=sum+i; 或 for(i=0,j=100;i<=j;i++,j--) k+=i*j;
表達式 1和表達式 3都是逗號表達式,各包含兩個賦值表達式,即同時設兩個初值,使兩個變量增值。
(7)表達式一般是關系表達式(如i<=100)或邏輯表達式(如a<b && x<y),但也可以是數值表達式或字符表達式,只要其值為非零,就執行循環體。分析下面的例子:
1. for(i=0;(c=getchar())!='\n';i+=c);
在表達式 2中先從終端接收一個字符賦給c,然后判斷此賦值表達式的值是否不等于'\n'(換行符),如果不等于'\n',就執行循環體。
注意:此for語句的循環體為空語句,把本來要在循環體內處理的內容放在表達式 3中,作用是一樣的。可見for語句功能強,可以在表達式中完成本來應在循 環體內完成的操作。
2. for(;(c=getchar())!='\n';) printf("%c",c);
只有表達式 2,而無表達式 1和表達式 3。其作用是每讀入一個字符后立即輸出該字符,直到輸入一個"換行"為止。請注意,從終端鍵盤向計算機輸入時,是在按回車鍵以后才送到內存緩沖區中去的。即不是從終端敲入一個字符馬上輸出一個字符,而是按回車鍵后數據送入內存緩沖區,然后每次從緩沖區讀一個字符,再輸出字符。
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -