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

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

您現(xiàn)在的位置:首頁 新聞資訊 >> 新聞頭條 >> C語言循環(huán)結(jié)構(gòu)
新聞資訊
NEWS INFORMATION

C語言循環(huán)結(jié)構(gòu)

關(guān)鍵字:C語言教程 發(fā)布時間:2019-05-22

該章內(nèi)容:本章我們學(xué)習(xí)三大結(jié)構(gòu)之一:循環(huán)結(jié)構(gòu)。通常采用循環(huán)結(jié)構(gòu)來解決有規(guī)律性的重復(fù)性工作,如求學(xué)生的總成績;統(tǒng)計車站某月的人流量。在程序設(shè)計中對那些需要重復(fù)執(zhí)行的操作我們采用循環(huán)結(jié)構(gòu)來完成,幾乎所有實用的程序都包含循環(huán)。c語言中有三種循環(huán)語句來構(gòu)成循環(huán)結(jié)構(gòu):while語句,do-while語句和for語句。本章是考試的重點章節(jié)。

學(xué)習(xí)方法:先了解循環(huán)結(jié)構(gòu)相關(guān)的基礎(chǔ)知識,熟悉三種循環(huán)結(jié)構(gòu)的特點,先讀懂循環(huán)的程序,再慢慢學(xué)習(xí)編寫程序。最終一定要學(xué)會用循環(huán)來解決規(guī)律性的重復(fù)性工作的問題。

第一節(jié)   while語句及其構(gòu)成的循環(huán)結(jié)構(gòu)

知識點:while語句的執(zhí)行過程;循環(huán)體中語句書寫的位置對程序的影響;

重要程度:★★★★

程序一:

while(y++);      (循環(huán)體為空,while只管后面一個語句,管多個用大括號!。。

printf(“%d”,y);

----------------------------------------

程序二:

while(y++)       (循環(huán)體為printf(“%d”,y);)

printf(“%d”,y);

當(dāng)以上兩個程序的y初始化為-2的時候,兩個程序運算的結(jié)果是不同的,請注意原因就是:程序二中的while(y++)后面有沒有分號。(這幾年考試的熱點

注意:while只管后面一個語句,管多個要用大括號!。ǹ荚嚐狳c)

                    

圖1  while循環(huán)流程圖

例1:以下程序的輸出結(jié)果是________(for、while這些循環(huán)都只管后面一個分號

main( )

{      int x=2;

       while(x- -);

            printf("%d",x);

}

分析:本題需要特別注意的是while(x--)后面緊跟一個分號,它表示while循環(huán)的循環(huán)體部分是一個空語句,而不是printf語句。

(1)程序首先將x的值初始化為2。進(jìn)入while循環(huán)后,表達(dá)式x--的值為2,為真,執(zhí)行空循環(huán)體,此時x的值為1。第一輪循環(huán)結(jié)束。

(2)進(jìn)入第二輪循環(huán),x--的值為1,表達(dá)式仍然為真,繼續(xù)執(zhí)行空循環(huán)體,此時x的值為0。第二輪循環(huán)結(jié)束。

(3)進(jìn)入第三輪循環(huán),x--的值為0,表達(dá)式仍然為假,跳出循環(huán),執(zhí)行printf語句,此時x的值為-1。答案為-1。

第二節(jié)   do-while語句及其構(gòu)成的循環(huán)結(jié)構(gòu)

知識點:do-while語句的執(zhí)行過程;do-while和while的相似和不同之處;

重要程度:★★★★

do-while語句的一般形式如下:

do

循環(huán)體

while (表達(dá)式);

 

 

 

                                                           圖3  do-while語句流程圖

注意:

(1)do-while循環(huán)語句的循環(huán)體至少執(zhí)行一次。

(2)在while(表達(dá)式)后的“;”不可以少。它表示do-while語句的結(jié)束。

(3)do-while語句與while語句可以相互轉(zhuǎn)換。

例1:有如下程序

main( )

{  int x=23;

do

{  printf("%d",x--);}

while(!x);

}

該程序的執(zhí)行結(jié)果是 (。。

A) 321   B) 23   C) 不輸出任何內(nèi)容   D) 陷入死循環(huán)

分析:本例就是告訴大家do-while循環(huán)至少執(zhí)行一次循環(huán)體。

首先執(zhí)行循環(huán)體,將表達(dá)式x--的值輸出,其值為23。接著判斷!x為假,因此跳出do-while循環(huán)。最后得到輸出結(jié)果為23,答案選擇B。不要先去判斷表達(dá)式!x的真假,這樣容易選到C。

例2:有以下程序(注:字符a的ASCIl碼值為97)
#include
main()
{char*s={"abe");
do
{printf(”%d”,*s%10);++s;)
while(*s);
)
程序運行后的輸出結(jié)果是(    )。B
A)abc   
B)789   
C)7890   
D)979899
第三節(jié)   for語句及其構(gòu)成的循環(huán)結(jié)構(gòu)(重點章節(jié))

知識點:for語句的執(zhí)行過程;for語句中三個表達(dá)式使用方法;for 、while、 do-while之間的聯(lián)系和區(qū)別;

重要程度:★★★★★

for(表達(dá)式1;表達(dá)式2;表達(dá)式3)

循環(huán)體語句

三個表達(dá)式要背誦的:

表達(dá)式1:作用是初始化循環(huán)的變量;(執(zhí)行一次)

表達(dá)式2:循環(huán)條件的判斷;(可執(zhí)行多次)

表達(dá)式3:作用是循環(huán)變量增值或減少。(可執(zhí)行多次)

 

其執(zhí)行過程如下:

(1)     求解表達(dá)式1。

(2)     求解表達(dá)式2,若其值為“真”非0,則執(zhí)行

for語句控制的循環(huán)體語句,然后執(zhí)行步驟(3)。

若為“假”0,則結(jié)束循環(huán),轉(zhuǎn)到第(5)步。

(3)     求解表達(dá)式3

(4)     返回第(2)步繼續(xù)執(zhí)行。

(5)     循環(huán)結(jié)束,執(zhí)行for語句后面的語句。

                                                圖4  for循環(huán)流程圖

例1:如有以下程序

main()

{

   int i , sum=0;

   for(i=1;i<6;i++) sum+=i;

   printf("%d\n",sum);

}

執(zhí)行后sum的值是( )

A)15        B)14     C) 不確定     D)0

分析:本例用一個for循環(huán)實現(xiàn)了1到5的累加。首先i為1,sum為0,i<6為真,執(zhí)行sum+=i;使sum的值變?yōu)?,然后執(zhí)行i++,使i的值變?yōu)?,i<6仍然為真,繼續(xù)執(zhí)行循環(huán)體sum+=i;,使sum的值變?yōu)?,再執(zhí)行i++,使i的值變?yōu)?。如此反復(fù),直到i為6,i<6為假,跳出循環(huán),執(zhí)行printf語句輸出sum的值。答案選A。本例有兩種變形,請讀者自己分析結(jié)果。希望讀者深刻理解,循環(huán)體語句可以是一條語句,也可以是一條復(fù)合語句,甚至是條空語句。

變形1:main()                                變形2:main()

{                                            {

      inti , sum=0;                                   int i , sum=0;

      for(i=1;i<6;i++);                                             for(i=1;i<6;i++)

      sum+=i;                                      {sum+=i;

printf("%d\n",sum);                                     printf("%d\n",sum);}

}                                            }

 

關(guān)于for語句我們這里有幾點說明:

(1)for語句可以完全代替while語句:

表達(dá)式1;

while(表達(dá)式2)

{

循環(huán)體語句

表達(dá)式3;

}

(2)for后面小括號中的表達(dá)式1和表達(dá)式3都可以缺省,表達(dá)式1可以移到for語句之前,表達(dá)式3可以移到for循環(huán)體的尾部,但分號一定不能省。如:

                   i=1;

for(;i<=100;)

{     

sum=sum+i;

i++;

}

同理表達(dá)式1和表達(dá)式3既可以是單個的表達(dá)式,也可以是由多個表達(dá)式構(gòu)成,中間用逗號“,”隔開。如:for(sum=0,i=1;i<=100;i++,i++)。

(3)表達(dá)式2可以缺省,此時相當(dāng)于表達(dá)式2的值永遠(yuǎn)為真,循環(huán)將無限執(zhí)行下去,一般就會形成死循環(huán)。這樣就會出現(xiàn)三個表達(dá)式都缺省的情況。如 for(;;),等同于while(1)。

(4)看懂:for(sum=0,i=1;i<=100,sum=sum+i; i++)這個長得很特殊的循環(huán)的程序。

例2:以下程序的輸出結(jié)果是(。。

main()

{ int a=0,i;

  for(i=1;i<5;i++)

  {

    switch(i)

    {   case0:

      case 3:a+=2;

      case 1:

      case 2:a+=3;

      default:a+=5;

    }

  }

  printf("%d\n",a);

}

A) 31     B)13      C) 10      D) 20

分析:本例是for語句和switch語句的結(jié)合應(yīng)用。首先i為1,i<5為真,執(zhí)行循環(huán)體,循環(huán)體是一條switch語句,轉(zhuǎn)到case 1它不做任何操作,特別注意它后面的case也要執(zhí)行,因此執(zhí)行a+=3;和a+=5;,此時a為8了。接著執(zhí)行i++,i變?yōu)?,i<5為真,繼續(xù)執(zhí)行循環(huán)體switch語句,執(zhí)行case2和后面的default,此時a變?yōu)?6。如此反復(fù),直到i為5,i<5為假,跳出循環(huán)。最后結(jié)果為31。答案選A。

例3:有以下程序
#include <stdio.h>
double f(double x);
main()
{double a=0;int i;
for(i=0;i<30;i+=10)a+=f((double)i);
printf("%5.0f\n",a);
}
double f(double x)
(return x*x+1;)
程序運行后的輸出結(jié)果是(    )。
A)503   
B)401   
C)500   
D)1404

第四節(jié)   循環(huán)的嵌套

知識點:嵌套循環(huán)的執(zhí)行的過程; (學(xué)會做題目,掌握循環(huán)的方法)

重要程度:★★★★

例1

有以下程序

main( )

{    

int i,j,sum=0;

for(i=1;i<5;i++)

for(j=1;j<4;j++)

sum++;

printf("%d",sum);

}

程序的輸出結(jié)果是_______

分析:本題考察點在嵌套的for循環(huán)中,內(nèi)層和外層循環(huán)的執(zhí)行過程。內(nèi)層循環(huán)結(jié)構(gòu)的循環(huán)體是sum變量的自加,外層循環(huán)的循環(huán)體是內(nèi)層的for循環(huán)結(jié)構(gòu)。首先i的值為1,進(jìn)入循環(huán)體(內(nèi)層for循環(huán)結(jié)構(gòu)),j的值為1,sum的值變?yōu)?;內(nèi)層循環(huán)繼續(xù)執(zhí)行,j為2,sum再次自加為2;j自加為3,sum也為3;j自加為4的時候,j<4為假,因此跳出內(nèi)層循環(huán)。外層循環(huán)的循環(huán)體執(zhí)行完畢一次,下面計算i++。

i的值變?yōu)?,進(jìn)入循環(huán)體,重復(fù)上述過程,sum一共增加3,值為6。跳出內(nèi)層循環(huán)。外層循環(huán)的循環(huán)體執(zhí)行完畢。再次計算i++。

i的值變?yōu)?,重復(fù)以上過程,sum的值增加3。i的值變?yōu)?,sum繼續(xù)增加3。當(dāng)i的值變?yōu)?的時候,i<5為假,跳出外層循環(huán)。輸出sum的值。由于外層循環(huán)每執(zhí)行一次,sum要自加3次,所以一共sum自加12次。最后sum的值為12。各個變量的變化情況見圖5所示。

                                   i             1               2                   3                   4

                                   j             1 2  3         1  2  3         1  2  3         1 2  3

                                   sum        1 2  3         4  5  6         7  8  9         10 11 12

圖5  例6中各變量的變化情況

考試核心:

1、 近幾年是考試的重點,復(fù)習(xí)時候,把習(xí)題冊上最近三年的嵌套循環(huán)完成就可以了。

2、 嵌套循環(huán)是上機考試天空題目的重點。

3、 一定要知道嵌套循環(huán)的實質(zhì),和運算的整個流程。

   sum = 0;

for(i=1;i<=10;i++){

for(j=2;j<=5;j++) sum++;

       這個程序中,sum就一共執(zhí)行了10(外層循環(huán)次數(shù))乘以4(嵌套的二次循環(huán))等于40次。

 

第五節(jié)  break語句和continue語句在循環(huán)體中的運用

知識點:break和continue的區(qū)別; break和continue的使用范圍;

重要程度:★★★★★

1、break語句

break; 英文的意思是打破的意思。所以看到break,我們馬上要知道它是終止了循環(huán)這個過程。

例1:以下程序運行后的輸出結(jié)果是

main()

{      int x=15;

      while(x>10)

       {     x++;

             if(x%3) {x++;break;}   //誤區(qū),break是打破一層循環(huán),不是一層括號。

        x++;

      }

       printf(“%d\n”,x);

}

A)15                       B)16                       C)17                       D)18

分析:本例是break語句在循環(huán)體中的運用。x的初值為15,滿足while循環(huán)條件,執(zhí)行循環(huán)體。x++使x的值變?yōu)?6。進(jìn)入if語句,計算16%3的值為1,if后的表達(dá)式為真,故執(zhí)行復(fù)合語句,x自加為17,接著執(zhí)行break語句,跳出整個while循環(huán)。顯然后面的x++并不執(zhí)行。因此x的值為17,答案選C。

注意: break語句只能出現(xiàn)在switch語句體和循環(huán)結(jié)構(gòu)中。

2、continue語句

continue;英文的意思是繼續(xù)的意思.。其作用是結(jié)束本輪循環(huán),跳過本輪循環(huán)體中余下尚未執(zhí)行的語句,接著下一輪繼續(xù)進(jìn)行循環(huán)。

注意:continue語句和break語句的區(qū)別:continue語句只結(jié)束本輪循環(huán),而不是終止整個循環(huán)。而break語句則是結(jié)束整個循環(huán)。

main( )

{      int x=1;

      while(x<3)

       {     x++;

             if(x%2) continue;

        x++;

      }

       printf(“%d\n”,x);

}

 

 

 

main( )

{      int x=1;

      while(x<3)

       {     x++;

             if(x%2) break;

        x++;

      }

       printf(“%d\n”,x);

}

 

 

   

    以上兩個程序看上去是只有break和countine的差別,但是運算起來差別很大。第一個程序運算的結(jié)果為2,第二個程序運算的結(jié)果為3。

例2:把100~500之間的能3整除的數(shù)輸出。(深刻理解)

main( )

{     int n;

for(n=100;n<=500;n++)

{     if(n%3!=0) continue;

printf("%3d",n);

}

}

分析:當(dāng)n不能被3整除時,表達(dá)式n%3!=0為真,執(zhí)行continue語句,跳過printf語句,直接執(zhí)行n++,然后再對n<=500進(jìn)行判斷,決定是否執(zhí)行循環(huán)體。當(dāng)n能被3整除時,表達(dá)式n%3!=0為假,跳過continue語句,執(zhí)行printf語句將該數(shù)輸出。

考試核心:

1、含有break和continue的程序運算考察,習(xí)題冊上有多個經(jīng)典考題的代表。

2、break和continue的概念區(qū)別是考試愛出題的地方。

3、自己寫一下,輸出1-100之間被三整除的數(shù),并且每行輸出三個數(shù)字的程序。

main( )

{     int n=1,count=0;

for(n=1;n<=100;n++)

{     if(n%3==0){printf("%3d",n);count++;}

    if(count%3==0)printf(“\n”);

}}

聯(lián)系方式0755-82591179

傳真:0755-82591176

郵箱:vicky@yingtexin.net

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

榆中县| 龙胜| 密云县| 蓬安县| 炎陵县| 凤山县| 简阳市| 漯河市| 德惠市| 南澳县| 班玛县| 河池市| 无极县| 泉州市| 榆中县| 新巴尔虎左旗| 泰兴市| 江川县| 辛集市| 唐河县| 城步| 卓资县| 抚远县| 商丘市| 来安县| 横峰县| 上蔡县| 牡丹江市| 巴南区| 南乐县| 永新县| 友谊县| 泽州县| 隆林| 且末县| 信宜市| 新干县| 卢龙县| 潞西市| 集安市| 荥经县|