在线现看午夜福利片|女人16久久免费视频|鲁丝片一区鲁丝片二区鲁丝|一区二区三区欧美在线

  1. 
    
    <b id="glvx9"></b>
        1. <blockquote id="glvx9"><meter id="glvx9"></meter></blockquote>
            首頁 - 網(wǎng)校 - 萬題庫 - 美好明天 - 直播 - 導(dǎo)航

            2018年全國計(jì)算機(jī)二級(jí)C語言考試考點(diǎn)解析(12)

            來源:考試吧 2018-08-01 16:32:31 要考試,上考試吧! 萬題庫
            “2018年全國計(jì)算機(jī)二級(jí)C語言考試考點(diǎn)解析(12)”供考生參考。更多計(jì)算機(jī)等級(jí)考試復(fù)習(xí)資料等信息請(qǐng)?jiān)L問考試吧計(jì)算機(jī)等級(jí)考試網(wǎng)。

              點(diǎn)擊查看:2018年全國計(jì)算機(jī)二級(jí)C語言考試考點(diǎn)解析匯總

              循環(huán)語句和循環(huán)函數(shù)

              Turbo C 2.0提供三種基本的循環(huán)語句: for語句、while語句和do-while語句。

              一、循環(huán)語句

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

              for(<初始化>;<條件表過式>;<增量>)

              語句;

              初始化總是一個(gè)賦值語句,它用來給循環(huán)控制變量賦初值;條件表達(dá)式是一個(gè)關(guān)系表達(dá)式,它決定什么時(shí)候退出循環(huán);增量定義循環(huán)控制變量每循環(huán)一次后按什么方式變化。這三個(gè)部分之間用;分開。

              例如:

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

              語句;

              上例中先給i賦初值1,判斷i是否小于等于10,若是則執(zhí)行語句,之后值增加1。再重新判斷,直到條件為假,即i>10時(shí),結(jié)束循環(huán)。

              注意:

              (1).for循環(huán)中語句可以為語句體,但要用{和}將參加循環(huán)的語句括起來。

              (2).for循環(huán)中的初始化、條件表達(dá)式和增量都是選擇項(xiàng),即可以缺省,但;不能缺省。省略了初始化,表示不對(duì)循環(huán)控制變量賦初值。省略了條件表達(dá)式,則不做其它處理時(shí)便成為死循環(huán)。省略了增量,則不對(duì)循環(huán)控制變量進(jìn)行操作,這時(shí)可在語句體中加入修改循環(huán)控制變量的語句。

              (3).for循環(huán)可以有多層嵌套。

              例如:

              for(;;) 語句;

              for(i=1;;i+=2) 語句;

              for(j=5;;) 語句;

              這些for循環(huán)語句都是正確的。

              main()

              {

              int i,j;

              printf(i j\n);

              for(i=0;i<2;i++)

              for(j=0;j<3;j++)

              printf(%d %d\n,i,j);

              }

              輸出結(jié)果為:

              i j

              0 0

              0 1

              0 2

              1 0

              1 1

              1 2

              用for循環(huán)求1+2+……+100的和:

              main()

              {

              int sn=0,i;

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

              sn+=i; /*1+2+……+100*/

              printf(%d\n,sn);

              }

              從程序可以看出,使用循環(huán)語句可以大大簡化代碼。

              (二)、while循環(huán) 它的一般形式為:

              while(條件)

              語句;

              while循環(huán)表示當(dāng)條件為真時(shí),便執(zhí)行語句。直到條件為假才結(jié)束循環(huán)。并繼續(xù)執(zhí)行循環(huán)程序外的后續(xù)語句。

              例如:

              #include stdio.h

              main()

              {

              char c;

              c='\0'; /*初始化c*/

              while(c!='\n') /*回車結(jié)束循環(huán)*/

              c=getche(); /*帶回顯的從鍵盤接收字符*/

              }

              上例中,while循環(huán)是以檢查c是否為回車符開始,因其事先被初始化為空,所以條件為真,進(jìn)入循環(huán)等待鍵盤輸入字符;一旦輸入回車,則c='\n',條件為假,循環(huán)便告結(jié)束。與for循環(huán)一樣,while循環(huán)總是在循環(huán)的頭部檢驗(yàn)條件,這就意味著循環(huán)可能什么也不執(zhí)行就退出。

              注意:

              (1).在while循環(huán)體內(nèi)也允許空語句。

              例如:

              while((c=getche())!='\n');

              這個(gè)循環(huán)直到鍵入回車為止。

              (2).可以有多層循環(huán)嵌套。

              (3).語句可以是語句體, 此時(shí)必須用{和}括起來。

              用while循環(huán)求1+2+……+100的和:

              main()

              {

              int sn=0,i=0;

              while(++i<=100)

              sn+=i; /*求1+2+……+100*/

              printf(%d\n,sn);

              }

              (三)、do--while循環(huán) 它的一般格式為:

              do

              {

              語句塊;

              }

              while(條件);

              這個(gè)循環(huán)與while循環(huán)的不同在于:它先執(zhí)行循環(huán)中的語句,然后再判斷條件是否為真,如果為真則繼續(xù)循環(huán);如果為假,則終止循環(huán)。因此,do-while循環(huán)至少要執(zhí)行一次循環(huán)語句。

              同樣當(dāng)有許多語句參加循環(huán)時(shí),要用{和}把它們括起來。

              用do--while循環(huán)求1+2+……+100的和:

              main()

              {

              int sn=0,i=1;

              do

              sn+=i; /*求1+2+……+100*/

              while(++i<=100);

              printf(%d\n,sn);

              }

              從上面三個(gè)程序看出,使用for,while和do--while求解同樣的問題,基本思路都差不多,只是在第一次計(jì)算時(shí),注意初值。

              二、循環(huán)控制

              (一)、break語句

              break語句通常用在循環(huán)語句和開關(guān)語句中。當(dāng)break用于開關(guān)語句switch中時(shí),可使程序跳出switch而執(zhí)行switch以后的語句;如果沒有break語句,則將成為一個(gè)死循環(huán)而無法退出。break在switch中的用法已在前面介紹開關(guān)語句時(shí)的例子中碰到,這里不再舉例。

              當(dāng)break語句用于do-while、for、while循環(huán)語句中時(shí),可使程序終止循環(huán)而執(zhí)行循環(huán)后面的語句,通常break語句總是與if語句聯(lián)在一起。即滿足條件時(shí)便跳出循環(huán)。

              例如:

              main()

              {

              int sn=0,i;

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

              {

              if(i==51) break; /*如果i等于51,則跳出循環(huán)*/

              sn+=i; /*1+2+……+50*/

              }

              printf(%d\n,sn);

              }

              可以看出,最終的結(jié)果是1+2+……+50。因?yàn)樵趇等于51的時(shí)候,就跳出循環(huán)了。自己寫寫怎樣在while和do--while循環(huán)中增加break語句。

              注意:

              1. break語句對(duì)if-else的條件語句不起作用。

              2. 在多層循環(huán)中,一個(gè)break語句只向外跳一層。

              例如:

              main()

              {

              int i,j;

              printf(i j\n);

              for(i=0;i<2;i++)

              for(j=0;j<3;j++)

              {

              if(j==2) break;

              printf(%d %d\n,i,j);

              }

              }

              輸出結(jié)果為:

              i j

              0 0

              0 1

              1 0

              1 1

              當(dāng)i==0,j==2時(shí),執(zhí)行break語句,跳出到外層的循環(huán),i變?yōu)?。

              (二)、continue語句

              continue語句的作用是跳過循環(huán)本中剩余的語句而強(qiáng)行執(zhí)行下一次循環(huán)。

              continue語句只用在for、while、do-while等循環(huán)體中, 常與if條件語句一起使用,用來加速循環(huán)。

              例如:

              main()

              {

              int sn=0,i;

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

              {

              if(i==51) continue; /*如果i等于51,則結(jié)束本次循環(huán)*/

              sn+=i; /*1+2+……+50+52+……+100*/

              }

              printf(%d\n,sn);

              }

              從程序中可以看出,continue語句只是當(dāng)前的值沒有執(zhí)行,也就是說當(dāng)前的值跳過去了,接著執(zhí)行下次循環(huán)。

              main()

              {

              int i,j;

              printf(i j\n);

              for(i=0;i<2;i++)

              for(j=0;j<3;j++)

              {

              if(j==1) continue;

              printf(%d %d\n,i,j);

              }

              }

              輸出結(jié)果為:

              i j

              0 0

              0 2

              1 0

              1 2

              (三)、goto語句

              goto語句是一種無條件轉(zhuǎn)移語句,與BASIC中的goto語句相似。goto語句的使用格式為:

              goto 標(biāo)號(hào);

              其中標(biāo)號(hào)是Turbo C 2.0中一個(gè)有效的標(biāo)識(shí)符,這個(gè)標(biāo)識(shí)符加上一個(gè):一起出現(xiàn)在函數(shù)內(nèi)某處,執(zhí)行g(shù)oto語句后,程序?qū)⑻D(zhuǎn)到該標(biāo)號(hào)處并執(zhí)行其后的語句。標(biāo)號(hào)既然是一個(gè)標(biāo)識(shí)符,也就要滿足標(biāo)識(shí)符的命名規(guī)則。另外標(biāo)號(hào)必須與goto語句同處于一個(gè)函數(shù)中,但可以不在一個(gè)循環(huán)層中。通常goto語句與if條件語句連用,當(dāng)滿足某一條件時(shí),程序跳到標(biāo)號(hào)處運(yùn)行。goto語句通常不用,主要因?yàn)樗鼘⑹钩绦驅(qū)哟尾磺澹也灰鬃x,但在多層嵌套退出時(shí),用goto語句則比較合理。

              main()

              {

              int sn=0,i;

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

              {

              if(i==51) goto loop; /*如果i等于51,則跳出循環(huán)*/

              sn+=i; /*1+2+……+50*/

              }

              loop: ;

              printf(%d\n,sn);

              }

              可以看出,這兒的goto語句和break作用很類似。

              這兒的loop: ;

              printf(%d\n,sn);

              也可以寫成loop: printf(%d\n,sn);

              main()

              {

              int sn=0,i;

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

              {

              if(i==51) goto loop; /*如果i等于51,則跳出本次循環(huán)*/

              sn+=i; /*1+2+……+50+52+……+100*/

              loop: ;

              }

              printf(%d\n,sn);

              }

              可以看出這兒的loop語句和continue的作用類似。

              但是某些情況下又必須使用goto語句,否則會(huì)讓程序大大臃腫。如:

              main()

              {

              int i,j,k;

              printf(i j k\n);

              for(i=0;i<2;i++)

              for(j=0;j<3;j++)

              for(k=0;k<3;k++)

              {

              if(k==2) goto loop;

              printf(%d %d %d\n,i,j,k);

              }

              loop: ;

              }

              輸出結(jié)果為:

              i j k

              0 0 0

              0 0 1

              如果不使用goto語句,而使用break,continue語句,應(yīng)該這樣

              main()

              {

              int i,j,k;

              printf(i j\n);

              for(i=0;i<2;i++)

              {

              for(j=0;j<3;j++)

              {

              for(k=0;k<3;k++)

              {

              if(k==2) break;

              printf(%d %d %d\n,i,j,k);

              }

              if(k==2) break;

              }

              if(k==2) break;

              }

              }

              輸出結(jié)果為:

              i j k

              0 0 0

              0 0 1

              所以在同時(shí)跳出多層循環(huán)時(shí),應(yīng)該使用goto語句。記住,所有的goto語句其實(shí)都是可以用break,continue代替的。

              下面舉幾個(gè)例子:

              1.求兩個(gè)整數(shù)的最大公約數(shù)。例如10和15的最大公約數(shù)是5。

              分析:最大公約數(shù)一定小于等于最小的那個(gè)數(shù)一半,同時(shí)能被兩數(shù)整除。

              main()

              {

              int num1,num2,i,min;

              scanf(%d%d,&num1,&num2);

              min=num1

              for(i=min/2;i>0;i--)

              if(num1%i==0&&num2%i==0) break;

              printf(最大公約數(shù)為%d\n,i);

              }

              2.求1!+2!+……+n!(n<10)

              main()

              {

              int n,i;

              long temp=1,sn=0; /*從9!以后,所得的值就超過了int范圍*/

              scanf(%d,&n);

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

              {

              temp*=i;

              sn+=temp; /*如果沒有這一步,求的就是n!*/

              }

              printf(%ld\n,sn);

              }

              那么想想,如果求1!+3!+5!+……+n!應(yīng)該怎么辦?

              3.判斷一個(gè)整數(shù)是不是素?cái)?shù)(素?cái)?shù)就是只能被本身和1整除的數(shù))。

              #include math.h

              main()

              {

              int num,i,flag=0;

              scanf(%d,&num);

              for(i=2;i

              {

              flag=0; /*標(biāo)志變量復(fù)位*/

              if(num%i==0)

              {

              flag=1;

              break;

              }

              }

              if(flag==0) printf(是素?cái)?shù)\n);

              else printf(不是素?cái)?shù)\n);

              }

              可以說,在所有的C語言書上,都有判斷素?cái)?shù)的例題。它的編程思想是:把一個(gè)變量作為標(biāo)志變量,用來標(biāo)志是不是素?cái)?shù);循環(huán)體是從2到sqrt(num),因?yàn)槿绻粋(gè)數(shù)不是素?cái)?shù)的話,一定能分解成num=num1*num2,它們中的最小值一定小于sqrt(num),所以循環(huán)的時(shí)候只要到sqrt(num)就可以了。同時(shí)要注意變量復(fù)位的問題。

            掃描/長按二維碼幫助考試通關(guān)
            2018年等考報(bào)考資訊
            2018等考各科通關(guān)技巧
            2018各科最新預(yù)測(cè)試卷
            2018等考各科備考資料

            微信搜索"考試吧"了解更多考試資訊、下載備考資料

              相關(guān)推薦:

              2018年9月全國計(jì)算機(jī)等級(jí)考試試題匯總(各科目)

              2018年全國計(jì)算機(jī)等級(jí)考試必做試題匯總(各科目)

              2018年全國計(jì)算機(jī)等級(jí)考試復(fù)習(xí)知識(shí)點(diǎn)匯總(各科目)

              2018全國計(jì)算機(jī)等級(jí)考試備考經(jīng)驗(yàn)及應(yīng)試技巧匯總

              歷年真題匯總|考試吧策劃:2018年計(jì)算機(jī)等級(jí)考試報(bào)考指南

            文章搜索
            萬題庫小程序
            萬題庫小程序
            ·章節(jié)視頻 ·章節(jié)練習(xí)
            ·免費(fèi)真題 ·?荚囶}
            微信掃碼,立即獲取!
            掃碼免費(fèi)使用
            • 1
            • 2
            • 3
            • 4
            • 5
            • 6
            • 7
            • 8
            • 9
            • 10
            此欄目下沒有文章
            版權(quán)聲明:如果計(jì)算機(jī)等級(jí)考試網(wǎng)所轉(zhuǎn)載內(nèi)容不慎侵犯了您的權(quán)益,請(qǐng)與我們聯(lián)系800@exam8.com,我們將會(huì)及時(shí)處理。如轉(zhuǎn)載本計(jì)算機(jī)等級(jí)考試網(wǎng)內(nèi)容,請(qǐng)注明出處。
            Copyright © 2004- 考試吧計(jì)算機(jī)等級(jí)考試網(wǎng) 出版物經(jīng)營許可證新出發(fā)京批字第直170033號(hào) 
            京ICP證060677 京ICP備05005269號(hào) 中國科學(xué)院研究生院權(quán)威支持(北京)
            在線模擬試題
            考證通關(guān)殺器
            考試最新資訊
            學(xué)
            一次通關(guān)技巧