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