日本高清不卡中文字幕-一起草草视频在线观看-亚洲精品一区二区三区色-国产亚洲精品免费视频

您好,歡迎進(jìn)入深圳市穎特新科技有限公司官方網(wǎng)站!

您現(xiàn)在的位置:首頁 新聞資訊 >> 新聞頭條 >> C語言for循環(huán)
新聞資訊
NEWS INFORMATION

C語言for循環(huán)

發(fā)布時(shí)間:2019-05-22

除了while循環(huán),C語言中還有 for 循環(huán),它的使用更加靈活,完全可以取代 while 循環(huán)。

上節(jié)我們使用 while 循環(huán)來計(jì)算1加到100的值,代碼如下:

  1. #include <stdio.h>
  2. int main(){
  3. int i, sum=0;
  4. i = 1; //語句①
  5. while(i<=100 /*語句②*/ ){
  6. sum+=i;
  7. i++; //語句③
  8. }
  9. printf("%d\n",sum);
  10. return 0;
  11. }

可以看到,語句①②③被放到了不同的地方,代碼結(jié)構(gòu)較為松散。為了讓程序更加緊湊,可以使用 for 循環(huán)來代替,如下所示:

  1. #include <stdio.h>
  2. int main(){
  3. int i, sum=0;
  4. for(i=1/*語句①*/; i<=100/*語句②*/; i++/*語句③*/){
  5. sum+=i;
  6. }
  7. printf("%d\n",sum);
  8. return 0;
  9. }

在 for 循環(huán)中,語句①②③被集中到了一起,代碼結(jié)構(gòu)一目了然。

for 循環(huán)的一般形式為:

for(表達(dá)式1; 表達(dá)式2; 表達(dá)式3){
    語句塊
}

它的運(yùn)行過程為:
1) 先執(zhí)行“表達(dá)式1”。

2) 再執(zhí)行“表達(dá)式2”,如果它的值為真(非0),則執(zhí)行循環(huán)體,否則結(jié)束循環(huán)。

3) 執(zhí)行完循環(huán)體后再執(zhí)行“表達(dá)式3”。

4) 重復(fù)執(zhí)行步驟 2) 和 3),直到“表達(dá)式2”的值為假,就結(jié)束循環(huán)。

上面的步驟中,2) 和 3) 是一次循環(huán),會重復(fù)執(zhí)行,for 語句的主要作用就是不斷執(zhí)行步驟 2) 和 3)。

“表達(dá)式1”僅在第一次循環(huán)時(shí)執(zhí)行,以后都不會再執(zhí)行,可以認(rèn)為這是一個初始化語句。“表達(dá)式2”一般是一個關(guān)系表達(dá)式,決定了是否還要繼續(xù)下次循環(huán),稱為“循環(huán)條件”。“表達(dá)式3”很多情況下是一個帶有自增或自減操作的表達(dá)式,以使循環(huán)條件逐漸變得“不成立”。

for循環(huán)的執(zhí)行過程可用下圖表示:


我們再來分析一下“計(jì)算從1加到100的和”的代碼:

  1. #include <stdio.h>
  2. int main(){
  3. int i, sum=0;
  4. for(i=1; i<=100; i++){
  5. sum+=i;
  6. }
  7. printf("%d\n",sum);
  8. return 0;
  9. }

運(yùn)行結(jié)果:
5050

代碼分析:
1) 執(zhí)行到 for 語句時(shí),先給 i 賦初值1,判斷 i<=100 是否成立;因?yàn)榇藭r(shí) i=1,i<=100 成立,所以執(zhí)行循環(huán)體。循環(huán)體執(zhí)行結(jié)束后(sum的值為1),再計(jì)算 i++。

2) 第二次循環(huán)時(shí),i 的值為2,i<=100 成立,繼續(xù)執(zhí)行循環(huán)體。循環(huán)體執(zhí)行結(jié)束后(sum的值為3),再計(jì)算 i++。

3) 重復(fù)執(zhí)行步驟 2),直到第101次循環(huán),此時(shí) i 的值為101,i<=100 不成立,所以結(jié)束循環(huán)。

由此我們可以總結(jié)出for循環(huán)的一般形式:

for(初始化語句; 循環(huán)條件; 自增或自減){
    語句塊
}

for 循環(huán)中的三個表達(dá)式

for 循環(huán)中的“表達(dá)式1(初始化條件)”、“表達(dá)式2(循環(huán)條件)”和“表達(dá)式3(自增或自減)”都是可選項(xiàng),都可以省略(但分號;必須保留)。

1) 修改“從1加到100的和”的代碼,省略“表達(dá)式1(初始化條件)”:

  1. int main(){
  2. int i = 1, sum = 0;
  3. for( ; i<=100; i++){
  4. sum+=i;
  5. }

可以看到,將i=1移到了 for 循環(huán)的外面。

2) 省略了“表達(dá)式2(循環(huán)條件)”,如果不做其它處理就會成為死循環(huán)。例如:

  1. for(i=1; ; i++) sum=sum+i;

相當(dāng)于:

  1. i=1;
  2. while(1){
  3. sum=sum+i;
  4. i++;
  5. }

所謂死循環(huán),就是循環(huán)條件永遠(yuǎn)成立,循環(huán)會一直進(jìn)行下去,永不結(jié)束。死循環(huán)對程序的危害很大,一定要避免。

3) 省略了“表達(dá)式3(自增或自減)”,就不會修改“表達(dá)式2(循環(huán)條件)”中的變量,這時(shí)可在循環(huán)體中加入修改變量的語句。例如:

  1. for( i=1; i<=100; ){
  2. sum=sum+i;
  3. i++;
  4. }


4) 省略了“表達(dá)式1(初始化語句)”和“表達(dá)式3(自增或自減)”。例如:

  1. for( ; i<=100 ; ){
  2. sum=sum+i;
  3. i++;
  4. }

相當(dāng)于:

  1. while(i<=100){
  2. sum=sum+i;
  3. i++;
  4. }


5) 3個表達(dá)式可以同時(shí)省略。例如:

for( ; ; )  語句

相當(dāng)于:

while(1)  語句


6) “表達(dá)式1”可以是初始化語句,也可以是其他語句。例如:

  1. for( sum=0; i<=100; i++ ) sum=sum+i;


7) “表達(dá)式1”和“表達(dá)式3”可以是一個簡單表達(dá)式也可以是逗號表達(dá)式。

  1. for( sum=0,i=1; i<=100; i++ ) sum=sum+i;

或:

  1. for( i=0,j=100; i<=100; i++,j-- ) k=i+j;


8) “表達(dá)式2”一般是關(guān)系表達(dá)式或邏輯表達(dá)式,但也可是數(shù)值或字符,只要其值非零,就執(zhí)行循環(huán)體。例如:

  1. for( i=0; (c=getchar())!='\n'; i+=c );

又如:

  1. for( ; (c=getchar())!='\n' ; )
  2. printf("%c",c);
聯(lián)系方式0755-82591179

傳真:0755-82591176

郵箱:vicky@yingtexin.net

地址:深圳市龍華區(qū)民治街道民治大道973萬眾潤豐創(chuàng)業(yè)園A棟2樓A08

涪陵区| 辽宁省| 英吉沙县| 上思县| 柳州市| 柳州市| 靖安县| 汤原县| 邵阳县| 丽江市| 繁昌县| 旬邑县| 印江| 昌邑市| 巴塘县| 永和县| 石阡县| 龙井市| 云霄县| 晋中市| 唐河县| 临邑县| 安阳县| 诏安县| 邵武市| 昌平区| 荃湾区| 扶风县| 崇阳县| 昌图县| 花莲市| 南和县| 舒城县| 固原市| 县级市| 邵阳县| 宣武区| 噶尔县| 盐亭县| 江阴市| 武胜县|