68精品久久久久久欧美,最近中文字幕完整在线看一,久久亚洲男人天堂,最近中文字幕完整视频高清1

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

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

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

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

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

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

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

知識(shí)點(diǎn):while語(yǔ)句的執(zhí)行過(guò)程;循環(huán)體中語(yǔ)句書(shū)寫(xiě)的位置對(duì)程序的影響;

重要程度:★★★★

程序一:

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

printf(“%d”,y);

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

程序二:

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

printf(“%d”,y);

當(dāng)以上兩個(gè)程序的y初始化為-2的時(shí)候,兩個(gè)程序運(yùn)算的結(jié)果是不同的,請(qǐng)注意原因就是:程序二中的while(y++)后面有沒(méi)有分號(hào)。(這幾年考試的熱點(diǎn)

注意:while只管后面一個(gè)語(yǔ)句,管多個(gè)要用大括號(hào)。。ǹ荚嚐狳c(diǎn))

                    

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

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

main( )

{      int x=2;

       while(x- -);

            printf("%d",x);

}

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

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

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

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

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

知識(shí)點(diǎn):do-while語(yǔ)句的執(zhí)行過(guò)程;do-while和while的相似和不同之處;

重要程度:★★★★

do-while語(yǔ)句的一般形式如下:

do

循環(huán)體

while (表達(dá)式);

 

 

 

                                                           圖3  do-while語(yǔ)句流程圖

注意:

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

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

(3)do-while語(yǔ)句與while語(yǔ)句可以相互轉(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);
)
程序運(yùn)行后的輸出結(jié)果是(    )。B
A)abc   
B)789   
C)7890   
D)979899
第三節(jié)   for語(yǔ)句及其構(gòu)成的循環(huán)結(jié)構(gòu)(重點(diǎn)章節(jié))

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

重要程度:★★★★★

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

循環(huán)體語(yǔ)句

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

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

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

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

 

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

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

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

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

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

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

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

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

                                                圖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

分析:本例用一個(gè)for循環(huán)實(shí)現(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語(yǔ)句輸出sum的值。答案選A。本例有兩種變形,請(qǐng)讀者自己分析結(jié)果。希望讀者深刻理解,循環(huán)體語(yǔ)句可以是一條語(yǔ)句,也可以是一條復(fù)合語(yǔ)句,甚至是條空語(yǔ)句。

變形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語(yǔ)句我們這里有幾點(diǎn)說(shuō)明:

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

表達(dá)式1;

while(表達(dá)式2)

{

循環(huán)體語(yǔ)句

表達(dá)式3;

}

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

                   i=1;

for(;i<=100;)

{     

sum=sum+i;

i++;

}

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

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

(4)看懂:for(sum=0,i=1;i<=100,sum=sum+i; i++)這個(gè)長(zhǎng)得很特殊的循環(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語(yǔ)句和switch語(yǔ)句的結(jié)合應(yīng)用。首先i為1,i<5為真,執(zhí)行循環(huán)體,循環(huán)體是一條switch語(yǔ)句,轉(zhuǎn)到case 1它不做任何操作,特別注意它后面的case也要執(zhí)行,因此執(zhí)行a+=3;和a+=5;,此時(shí)a為8了。接著執(zhí)行i++,i變?yōu)?,i<5為真,繼續(xù)執(zhí)行循環(huán)體switch語(yǔ)句,執(zhí)行case2和后面的default,此時(shí)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;)
程序運(yùn)行后的輸出結(jié)果是(    )。
A)503   
B)401   
C)500   
D)1404

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

知識(shí)點(diǎn):嵌套循環(huán)的執(zhí)行的過(guò)程; (學(xué)會(huì)做題目,掌握循環(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é)果是_______

分析:本題考察點(diǎn)在嵌套的for循環(huán)中,內(nèi)層和外層循環(huán)的執(zhí)行過(guò)程。內(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的時(shí)候,j<4為假,因此跳出內(nèi)層循環(huán)。外層循環(huán)的循環(huán)體執(zhí)行完畢一次,下面計(jì)算i++。

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

i的值變?yōu)?,重復(fù)以上過(guò)程,sum的值增加3。i的值變?yōu)?,sum繼續(xù)增加3。當(dāng)i的值變?yōu)?的時(shí)候,i<5為假,跳出外層循環(huán)。輸出sum的值。由于外層循環(huán)每執(zhí)行一次,sum要自加3次,所以一共sum自加12次。最后sum的值為12。各個(gè)變量的變化情況見(jiàn)圖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、 近幾年是考試的重點(diǎn),復(fù)習(xí)時(shí)候,把習(xí)題冊(cè)上最近三年的嵌套循環(huán)完成就可以了。

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

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

   sum = 0;

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

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

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

 

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

知識(shí)點(diǎn):break和continue的區(qū)別; break和continue的使用范圍;

重要程度:★★★★★

1、break語(yǔ)句

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

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

main()

{      int x=15;

      while(x>10)

       {     x++;

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

        x++;

      }

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

}

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

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

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

2、continue語(yǔ)句

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

注意:continue語(yǔ)句和break語(yǔ)句的區(qū)別:continue語(yǔ)句只結(jié)束本輪循環(huán),而不是終止整個(gè)循環(huán)。而break語(yǔ)句則是結(jié)束整個(gè)循環(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);

}

 

 

   

    以上兩個(gè)程序看上去是只有break和countine的差別,但是運(yùn)算起來(lái)差別很大。第一個(gè)程序運(yùn)算的結(jié)果為2,第二個(gè)程序運(yùn)算的結(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整除時(shí),表達(dá)式n%3!=0為真,執(zhí)行continue語(yǔ)句,跳過(guò)printf語(yǔ)句,直接執(zhí)行n++,然后再對(duì)n<=500進(jìn)行判斷,決定是否執(zhí)行循環(huán)體。當(dāng)n能被3整除時(shí),表達(dá)式n%3!=0為假,跳過(guò)continue語(yǔ)句,執(zhí)行printf語(yǔ)句將該數(shù)輸出。

考試核心:

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

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

3、自己寫(xiě)一下,輸出1-100之間被三整除的數(shù),并且每行輸出三個(gè)數(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萬(wàn)眾潤(rùn)豐創(chuàng)業(yè)園A棟2樓A08

旬邑县| 清镇市| 桐庐县| 大埔县| 固原市| 伊金霍洛旗| 柘城县| 余干县| 抚松县| 高碑店市| 宕昌县| 固始县| 葫芦岛市| 商南县| 赤壁市| 武安市| 常德市| 达尔| 凤山县| 霍林郭勒市| 射洪县| 河东区| 城市| 唐山市| 裕民县| 承德市| 疏附县| 温宿县| 腾冲县| 柳州市| 南乐县| 班玛县| 万宁市| 龙岩市| 故城县| 洛南县| 临清市| 商洛市| 文水县| 东至县| 靖远县|