




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
第5
章程序的基本控制結(jié)構(gòu)v程序設(shè)計基礎(chǔ)——從問題到程序(第3版)本章基本內(nèi)容選擇結(jié)構(gòu)
循環(huán)結(jié)構(gòu)
其他控制語句順序結(jié)構(gòu)
任何程序都可以由順序、選擇和循環(huán)這三種基本控制結(jié)構(gòu)組成,因此,靈活掌握基本控制結(jié)構(gòu)是編寫程序的重要基礎(chǔ)!【引例5.1】四則運算【問題】計算兩個整數(shù)的和、差、積、商。。【想法】依照四則運算的規(guī)則,將兩個整數(shù)進行加、減、乘、除運算?!舅惴ā吭O(shè)變量x和y表示兩個整數(shù),依次計算并輸出x和y的和、差、積、商,算法如下:
1.計算并輸出x+y;2.計算并輸出x-y;3.計算并輸出x*y;4.計算并輸出x/y;偽代碼【程序】算法需要順序執(zhí)行每一條指令,可以采用順序結(jié)構(gòu)實現(xiàn)。程序如下:#include<stdio.h>intmain(){intx,y;
printf("請輸入兩個整數(shù):");
scanf("%d%d",&x,&y);
printf("%d與%d的和是%d\t",x,y,x+y);
printf("%d與%d的差是%d\n",x,y,x-y);
printf("%d與%d的積是%d\t",x,y,x*y);
printf("%d與%d的商是%5.2f\n",x,y,(double)x/y);
return0;}程序中涉及到新的語法?【引例5.1】四則運算
復合語句:由一對花括號括起來的若干條語句組成。從邏輯上講,復合語句是一個整體,可以將它看成是一條語句,可以放在能夠使用語句的任何地方。
【語法】復合語句的一般形式:
{
語句1
語句2
語句n}……沒有分號可以是任何語句【語義】依次執(zhí)行花括號中的每條語句。語句1語句2語句n5.1
順序結(jié)構(gòu)復合語句實現(xiàn)順序結(jié)構(gòu)例5.1設(shè)計復合語句實現(xiàn)交換兩個變量的值。{temp=x;x=y;y=temp;}temp1020xy1020xy2020xytemp10temp10(a)第一步temp=x
(b)第二步x=y(c)第三步y(tǒng)=temp5.1
順序結(jié)構(gòu)復合語句實現(xiàn)順序結(jié)構(gòu)102010【問題】給定一個兩位數(shù),將這個兩位數(shù)的個位和十位顛倒得到其逆值(也稱逆向值),例如85的逆值是58?!鞠敕ā吭O(shè)兩位數(shù)的個位數(shù)字是x,十位數(shù)字為y,則該數(shù)的逆值為x×10
+
y。需要分離出這個兩位數(shù)的個位和十位,分離的方法是整除和求余,例如,通過對85除10取整數(shù)部分得到十位數(shù)字8,通過對85除10取余數(shù)部分得到個位數(shù)字5。【算法】設(shè)變量num表示一個兩位數(shù),變量x表示整數(shù)num的個位數(shù)字,變量y表示整數(shù)num的十位數(shù)字,變量numDevo表示整數(shù)num的逆值,算法如下:
step1:x=num%10;step2:y=num/10;step3:numDevo=x*10+y;step4:輸出numDevo;偽代碼程序設(shè)計實例——整數(shù)的逆值【程序】算法需要順序執(zhí)行每一條指令,可以采用順序結(jié)構(gòu)實現(xiàn)。程序如下:#include<stdio.h>
intmain(){intnum,x,y,numDevo;printf("請輸入一個兩位數(shù):");scanf("%d",&num);
x=num%10;y=num/10;numDevo=x*10+y;printf("%2d的逆值為:%2d\n",num,numDevo);return0;}程序設(shè)計實例——整數(shù)的逆值【引例5.2】奇偶判定【問題】判斷給定整數(shù)的奇偶性?!鞠敕ā繉⒄麛?shù)除以2,若余數(shù)等于0,則該整數(shù)是偶數(shù),否則是奇數(shù)。【算法】設(shè)變量x表示一個整數(shù),用求余運算判斷其奇偶性。算法如下:
1.為變量x賦值;2.如果x%2的結(jié)果等于0,則x是偶數(shù);否則x是奇數(shù);偽代碼【程序】首先用變量x接收用戶從鍵盤輸入的整數(shù),然后根據(jù)求余運算的結(jié)果得出其奇偶性。程序如下:#include<stdio.h>intmain(){
intx;
printf("請輸入一個整數(shù):");
scanf("%d",&x);
if(x%2==0)printf("%d是偶數(shù)\n",x);
elseprintf("%d是奇數(shù)\n",x);
return0;}【引例5.2】奇偶判定程序中涉及到新的語法?邏輯值控制的選擇結(jié)構(gòu)1.單分支的選擇結(jié)構(gòu),一般由if語句實現(xiàn)?!菊Z法】if語句的一般形式如下:
if(表達式)語句判斷條件必須有括號【語義】計算表達式的值;當表達式的值為真時執(zhí)行語句;否則順序執(zhí)行if語句的下一條語句。表達式語句TF5.2選擇結(jié)構(gòu)2.雙分支的選擇結(jié)構(gòu),一般由if-else語句實現(xiàn)?!菊Z義】計算表達式的值;當表達式的值為真時執(zhí)行語句1;否則執(zhí)行語句2。if(表達式)語句1else
語句2判斷條件表達式成立執(zhí)行表達式不成立執(zhí)行必須有括號表達式語句1TF語句25.2選擇結(jié)構(gòu)邏輯值控制的選擇結(jié)構(gòu)【語法】if-else語句的一般形式如下:例5.4求兩個整數(shù)中的較大者。解1:設(shè)整數(shù)x和y的較大值為max,可以先假定x較大,再判斷max是否小于y,如果max小于y,則較大值為y,否則較大值仍為max。解1:
max=x;if(max<y)max=y;解2:
if(x>=y)
max=x;
else
max=y;5.2選擇結(jié)構(gòu)邏輯值控制的選擇結(jié)構(gòu)解2:設(shè)整數(shù)x和y的較大值為max,可以直接將x和y進行比較,若x≥y,則較大值為x,否則,較大值為y。條件表達式有括號!從語法上看,分支結(jié)構(gòu)中的語句可以是任何語句,如果又是一個分支語句,則構(gòu)成分支結(jié)構(gòu)的嵌套。3.分支結(jié)構(gòu)的嵌套if(x>y)if(y>z)x=0;elsex=1;if(x>y)if(y>z)x=0;elsex=1;5.2選擇結(jié)構(gòu)邏輯值控制的選擇結(jié)構(gòu)如果嵌套在if語句中的語句是if-else語句,或嵌套在if-else語句中的語句是if語句,則會出現(xiàn)多個if和多個else重疊并且個數(shù)不等的情況,這時要注意if和else的配對問題。else與其前面最近的尚未配對的if相配對。例5.5編寫程序?qū)崿F(xiàn)數(shù)學中的符號函數(shù):sign(x)=1,當x>00,當x=0-1,當x<0解:設(shè)變量sign表示sign(x)的值,用嵌套的if-else語句實現(xiàn)比較。語句如下:if(x>0)sign=1;elseif(x<0)sign=-1;else/*注意嵌套if-else語句的縮進格式*/sign=0;5.2選擇結(jié)構(gòu)邏輯值控制的選擇結(jié)構(gòu)
多分支的選擇結(jié)構(gòu),由switch語句實現(xiàn),switch語句也稱為開關(guān)語句或選擇語句?!菊Z法】switch語句的一般形式如下:
switch(表達式)
{
case常量表達式1:語句1[break;]
case常量表達式2:語句2[break;]
case常量表達式n:語句n[break;]
[default:語句n+1break;]
}算術(shù)表達式……相當于語句標號沒有分號5.2選擇結(jié)構(gòu)算術(shù)值控制的選擇結(jié)構(gòu)【語義】當表達式的值與某一個常量表達式的值相等時,順序執(zhí)行該case后面的語句。
值=語句n值1語句1計算表達式的值值2語句2值n……breakbreakbreak……語句n+1defaultbreak5.2選擇結(jié)構(gòu)算術(shù)值控制的選擇結(jié)構(gòu)例5.6將百分制成績轉(zhuǎn)換為對應的等級制成績,轉(zhuǎn)換規(guī)則為:100~90:A;89~80:B;79~70:C;69~60:D;59~0:E
解:設(shè)百分制成績?yōu)閟core,則score是[0,100]區(qū)間的一個實數(shù),注意到十位數(shù)字決定轉(zhuǎn)換等級,因此將score轉(zhuǎn)換為整數(shù)再整除10。設(shè)字符型變量grade表示等級制成績,語句如下:switch((int)score/10)/*switch語句表達式的運算結(jié)果通常為整型*/{case10:
/*case10和case9共用一個程序段*/case9:grade='A';break;case8:grade='B';break;case7:grade='C';break;case6:grade='D';break;default:grade='E';break;}5.2選擇結(jié)構(gòu)算術(shù)值控制的選擇結(jié)構(gòu)
step1:x1=x%10;y=x/10;step2:x2=y%10;step3:x3=y/10;step4:如果x1*x1*x1+x2*x2*x2+x3*x3*x3等于x,則該數(shù)是水仙花數(shù);否則該數(shù)不是水仙花數(shù);偽代碼【問題】所謂水仙花數(shù)是指一個三位數(shù),其各位數(shù)字的立方和等于該數(shù)本身。例如:153=13+53+33,則153是一個水仙花數(shù)。要求從鍵盤上輸入一個三位數(shù),判斷該數(shù)是否是一個水仙花數(shù)。程序設(shè)計實例1——水仙花數(shù)【算法】設(shè)變量x存儲一個三位數(shù),變量x1、x2和x3分別存儲x的個位、十位和百位數(shù)字,算法如下:【想法】首先將這個三位數(shù)的個位、十位和百位分離出來,然后判斷各位數(shù)字的立方和是否等于該數(shù)?!境绦颉渴紫扔米兞縳接收從鍵盤輸入的三位正整數(shù),分離出個位、十位和百位數(shù)字,再用if語句實現(xiàn)判斷,程序如下:#include<stdio.h>intmain(){
intx,x1,x2,x3,y;
printf("請輸入一個三位整數(shù):");scanf("%d",&x);x1=x%10;y=x/10;x2=y%10;x3=y/10;if(x1*x1*x1+x2*x2*x2+x3*x3*x3==x)printf("%d是水仙花數(shù)\n",x);elseprintf("%d不是水仙花數(shù)\n",x);return0;}程序設(shè)計實例1——水仙花數(shù)
1.為變量yy和mm賦值;2.根據(jù)mm確定天數(shù),有下列三種情況:(1)mm是1、3、5、7、8、10、12,則days=31;(2)mm是4、6、9、11,則days=30;(3)mm是2,若yy年不是閏年,則days=28;否則days=29;3.輸出days;偽代碼【問題】輸入某年某月,確定該月有多少天?!舅惴ā吭O(shè)變量days表示某年某月的天數(shù),算法如下:【想法】設(shè)變量yy、mm表示某年某月,根據(jù)月份確定天數(shù),需要判斷閏年的情況。程序設(shè)計實例2——某年某月的某一天【程序】用switch語句為某月的天數(shù)days賦值,注意多個case子句可以共用一段程序。程序如下:#include<stdio.h>intmain(){intyy,mm,days;printf("請輸入日期(年月):");scanf("%d%d",&yy,&mm);switch(mm){case1:case3:case5:case7:case8:case10:case12:days=31;break;case4:case6:case9:case11:days=30;break;case2:if((yy%4==0&&yy%100!=0)||(yy%400==0))days=29;elsedays=28;break;}printf("%d年%d月有%d天\n",yy,mm,days);return0;}程序設(shè)計實例2——某年某月的某一天【引例5.3】偶數(shù)和【問題】計算100以內(nèi)所有偶數(shù)的和?!鞠敕ā吭O(shè)變量sum作為累加器,依次將2、4、…、100累加到sum中?!舅惴ā繉⒆兞縮um初始化為0,循環(huán)變量i的初值為2、終值為100、步長為2,重復執(zhí)行加法操作,算法如下:
1.初始化累加器sum=0;2.循環(huán)變量i從2~100重復執(zhí)行下述操作:2.1sum=sum+i;2.2i=i+2;3.輸出sum;偽代碼【程序】循環(huán)變量具有確定的初值、終值和循環(huán)步長,用for循環(huán)實現(xiàn)。程序如下:#include<stdio.h>
intmain(){intsum=0,i;/*sum存儲累加和,i是循環(huán)變量*/for(i=2;i<=100;i=i+2){sum=sum+i;}printf("100之內(nèi)所有偶數(shù)的和為:%d\n",sum);return0;}【引例5.3】偶數(shù)和程序中涉及到新的語法?
當型循環(huán)結(jié)構(gòu),一般由while語句實現(xiàn),因此,也稱while循環(huán)。
【語法】while語句的一般形式如下:【語義】計算表達式的值;當表達式的值為真時執(zhí)行語句(循環(huán)體);重新計算表達式的值,決定是否再次執(zhí)行循環(huán)體;當表達式的值為假時結(jié)束循環(huán),執(zhí)行while語句的下一條語句。
while(表達式)語句循環(huán)體循環(huán)條件必須有括號表達式語句TF5.3循環(huán)結(jié)構(gòu)當型循環(huán)結(jié)構(gòu)例5.7
計算n!。【想法】由數(shù)學知識可知,n!=n×n-1×……×2×1,設(shè)變量result保存計算結(jié)果,首先將變量result初始化為1,然后將result乘以1再存入變量result、將result乘以2再存入變量result、……,直至將result乘以n再存入變量result,則result的值即為n!。step1:初始化階乘結(jié)果result=1;step2:循環(huán)變量i從1~n,重復執(zhí)行下述操作:step2.1:result=result*i;step2.2:i++;step3:輸出result;偽代碼5.3循環(huán)結(jié)構(gòu)當型循環(huán)結(jié)構(gòu)【算法】設(shè)變量result保存階乘結(jié)果,i
表示乘數(shù)。算法如下:兩個注意:1.循環(huán)變量一定要初始化,否則程序的運行結(jié)果可能不確定;2.循環(huán)體中一定要有改變循環(huán)變量的語句(循環(huán)變量的修正),否則可能出現(xiàn)死循環(huán)?!境绦颉坑脀hile循環(huán)實現(xiàn),語句如下:
result=1;i=1;/*result為階乘結(jié)果,i為循環(huán)變量*/while(i<=n)/*當i小于等于n時執(zhí)行循環(huán)*/{result=result*i;/*將result乘以i再存入變量result*/i++;/*循環(huán)變量增1*/}5.3循環(huán)結(jié)構(gòu)例5.7
計算n!。當型循環(huán)結(jié)構(gòu)
直到型循環(huán)結(jié)構(gòu)由do-while語句實現(xiàn),也稱do-while循環(huán)。
【語法】do-while語句的一般形式如下:【語義】執(zhí)行語句(即循環(huán)體);計算表達式的值,當表達式的值為真時再次執(zhí)行語句,當表達式的值為假時結(jié)束循環(huán),順序執(zhí)行do-while語句的下一條語句。do語句while(表達式);循環(huán)體循環(huán)條件,括號不能省略一定要有分號表達式語句TF5.3循環(huán)結(jié)構(gòu)直到型循環(huán)結(jié)構(gòu)例5.8
計算n!?!境绦颉坑胐o-while循環(huán)實現(xiàn),語句如下:
result=1;i=1;/*result為階乘結(jié)果,i為循環(huán)變量1*/do/*至少執(zhí)行一次循環(huán)體*/{result=result*i;i++;/*循環(huán)變量增1*/}while(i<=n);使用while和do-while循環(huán)需要考慮以下三個問題:(1)循環(huán)的條件是什么?(2)重復做什么操作?(3)循環(huán)體至少執(zhí)行一次嗎?5.3循環(huán)結(jié)構(gòu)直到型循環(huán)結(jié)構(gòu)
計數(shù)型循環(huán)結(jié)構(gòu)由for語句實現(xiàn),因此,也稱for循環(huán)。
【語法】for語句的一般形式如下:【語義】計算表達式1的值;判斷表達式2是否成立,如果成立則執(zhí)行語句(即循環(huán)體),如果不成立則退出循環(huán);計算表達式3的值;判斷表達式2是否成立,以決定是否再次執(zhí)行循環(huán)體。
for(表達式1;表達式2;表達式3)
語句循環(huán)體循環(huán)條件循環(huán)的初值循環(huán)變量的修正由括號括起,由分號分隔表達式2語句TF計算表達式1計算表達式35.3循環(huán)結(jié)構(gòu)計數(shù)型循環(huán)結(jié)構(gòu)例5.9
計算n!。【程序】用for循環(huán)實現(xiàn),語句如下:
for(result=1,i=1;i<=n;i++)/*表達式1為逗號表達式*/result=result*i;使用for循環(huán)需要考慮以下四個問題:(1)循環(huán)的起點(從哪開始)是什么?(2)循環(huán)的終點(到哪結(jié)束)是什么?(3)每次循環(huán)的步長是多大?(4)重復做什么操作?5.3循環(huán)結(jié)構(gòu)計數(shù)型循環(huán)結(jié)構(gòu)i=0;for(;i<n;i++)//省略表達式1,可以在for循環(huán)外面為循環(huán)變量賦初值{……}for(i=0;;i++)//省略表達式2,可以在循環(huán)體測試循環(huán)條件{if(i<n)break;}for(i=0;i<n;)//省略表達式3,可以在循環(huán)體內(nèi)改變循環(huán)變量{i++;}5.3循環(huán)結(jié)構(gòu)計數(shù)型循環(huán)結(jié)構(gòu)表達式1、表達式2和表達式3均可以省略,但是分號不能省略。同一個問題,往往既可以用當型循環(huán),也可以用直到型循環(huán)或計數(shù)型循環(huán),但在實際應用中,應根據(jù)具體情況選用不同的循環(huán)結(jié)構(gòu),選用的一般原則是:1.如果循環(huán)次數(shù)在執(zhí)行循環(huán)體之前就已確定,一般選用計數(shù)型循環(huán);如果循環(huán)次數(shù)由循環(huán)體的執(zhí)行情況確定,一般選用當型循環(huán)或直到型循環(huán)。2.如果循環(huán)體至少執(zhí)行一次,可以選用當型循環(huán)也可以選用直到型循環(huán),如果循環(huán)體有可能一次也不執(zhí)行,則選用當型循環(huán)。
5.3循環(huán)結(jié)構(gòu)三種循環(huán)結(jié)構(gòu)之間的比較熟練掌握至少一種循環(huán)結(jié)構(gòu)!【問題】計算整數(shù)中所含數(shù)字的位數(shù)。step1:初始化位數(shù)digits=0;step2:重復執(zhí)行下述操作,直到x等于0:step2.1:digits++;step2.2:x=x/10;step3:輸出digits;偽代碼程序設(shè)計實例1——整數(shù)的位數(shù)【算法】設(shè)變量x表示整數(shù),digits存儲整數(shù)x的位數(shù),算法如下:【想法】將整數(shù)反復除以10,直到商為0,執(zhí)行除法的次數(shù)就是該整數(shù)所含數(shù)字的位數(shù)。例如:285/10=28,28/10=2,2/10=0,共執(zhí)行3次除法,則285包含3位數(shù)字。用while循環(huán)實現(xiàn)intx,digits=1;x=x/10;while(x!=0){digits++;x=x/10;}【程序】由于整數(shù)至少含有一位數(shù)字,顯然選用直到型循環(huán)更合適。程序如下:#include<stdio.h>
intmain(){intx,digits=0;
/*digits存儲整數(shù)x的位數(shù)*/printf("請輸入一個整數(shù):");scanf("%d",&x);
do{digits++;/*位數(shù)增加1位*/x=x/10;/*將x縮小10倍*/}while(x!=0);/*當x不等于0時執(zhí)行循環(huán)*/printf("有%d位數(shù)字\n",digits);return0;}程序設(shè)計實例1——整數(shù)的位數(shù)【問題】輾轉(zhuǎn)相除法求兩個自然數(shù)
m和
n的最大公約數(shù)。除數(shù)m被除數(shù)n
余數(shù)r352510251051050
step1:r=m%n;
step2:當r!=0時,重復執(zhí)行下述操作:
step2.1:m=n;step2.2:n=r;step2.3:r=m%n;step3:輸出n;偽代碼程序設(shè)計實例2——歐幾里得算法【算法】算法如下:【想法】將m和n輾轉(zhuǎn)相除直到余數(shù)為0。例如,m=35,n=25,m除以n的余數(shù)用
r表示,計算過程如下:【程序】首先用變量m和n接收從鍵盤輸入的兩個整數(shù),然后用while循環(huán)實現(xiàn)輾轉(zhuǎn)相除。程序如下:#include<stdio.h>
intmain(){intm,n,r;printf("請輸入兩個正整數(shù):");scanf("%d%d",&m,&n);r=m%n;while(r!=0)
/*當余數(shù)r不等于0時執(zhí)行循環(huán)*/{m=n;n=r;r=m%n;}printf("這兩個整數(shù)的最大公約數(shù)是:%d\n",n);return0;}程序設(shè)計實例2——歐幾里得算法如果循環(huán)結(jié)構(gòu)中的語句又是一個循環(huán)語句,則構(gòu)成循環(huán)結(jié)構(gòu)的嵌套。合法的嵌套循環(huán)形式如下:內(nèi)層循環(huán)…
內(nèi)層循環(huán)外層循環(huán)5.3循環(huán)結(jié)構(gòu)循環(huán)結(jié)構(gòu)的嵌套例5.13打印九九乘法表。解:九九乘法表需要一行一行地打印,共打印9行,打印第i行時需要打印i列。程序需要兩層嵌套的循環(huán),外層循環(huán)變量為i,其變化范圍為[1,9],內(nèi)層循環(huán)變量為j,其變化范圍為[1,i]。for(i=1;i<=9;i++)/*打印第i行*/{for(j=1;j<=i;j++)/*打印第j列*/printf("%d×%d=%2d",j,i,i*j);/*列號在前,占2個寬度*/printf("\n");/*第i行打印完畢,換行*/}5.3循環(huán)結(jié)構(gòu)循環(huán)結(jié)構(gòu)的嵌套for(i=1;i<=9;i++){for(j=1;j<=i;j++)printf("%d×%d=%2d",j,i,i*j);printf("\n");}5.3循環(huán)結(jié)構(gòu)【問題】已知公雞5元一只,母雞3元一只,小雞1元三只,用100元錢買100只雞,問公雞、母雞、小雞各多少只?x+y+z=1005×x+3×y+z/3=1000≤x≤200≤y≤330≤z≤100程序設(shè)計實例3——百元買百雞問題【想法】設(shè)公雞、母雞和小雞的個數(shù)為x、y、z,則有如下方程組成立:
注意到方程組可能有多個解,則需要輸出所有滿足條件的解?!舅惴ā吭O(shè)變量x表示公雞的個數(shù),y表示母雞的個數(shù),z表示小雞的個數(shù),count表示解的個數(shù),算法如下:step1:初始化解的個數(shù)count=0;step2:循環(huán)變量x從0~20循環(huán)執(zhí)行下述操作:
step2.1:循環(huán)變量y從0~33循環(huán)執(zhí)行下述操作:
step2.1.1:z=100–x–y;
step2.1.2:如果5*x+3*y+z/3等于100,則count++;
輸出x、y和z的值;
step2.1.3:y++;
step2.2:x++;step3:如果count等于0,則輸出無解信息;偽代碼程序設(shè)計實例3——百元買百雞問題【問題】對給定的整數(shù)x,判定是否是素數(shù)。step1:循環(huán)變量i從2~x-1,循環(huán)執(zhí)行下述操作:step1.1:如果x%i等于0,則說明x不是素數(shù),跳出循環(huán);step1.2:i++;
step2:如果提前跳出循環(huán),則x不是素數(shù);否則x是素數(shù);偽代碼【引例5.4】素數(shù)判定【算法】設(shè)變量x存儲需要判定的整數(shù),算法如下:
【想法】素數(shù)除了1和其自身外沒有其他因子。將整數(shù)x除以2~x-1,如果能整除,則x不是素數(shù)?!境绦颉坑米兞縳接收從鍵盤輸入的整數(shù),然后用for循環(huán)進行拭除,程序如下:#include<stdio.h>
intmain(){
intx,i;
printf("請輸入一個整數(shù):");
scanf("%d",&x);
for(i=2;i<x;i++)/*從2開始試除,一直試到x–1*/{if(x%i==0)/*能夠整除,不是素數(shù),跳出循環(huán)*/break;}if(i<x)/*如果是提前跳出循環(huán)*/
printf("%d不是素數(shù)\n",x);else
printf("%d是素數(shù)\n",x);return0;}【引例5.4】素數(shù)判定程序中涉及到新的語法?
break語句用于跳出switch語句和循環(huán)語句,【語法】break語句一般與if語句配合使用,其一般形式如下:【語義】如果條件表達式成立,則跳出循環(huán)語句,執(zhí)行循環(huán)語句的下一條語句。循環(huán)語句{……if(條件表達式)break;……}5.4
其他控制語句break語句例5.14從鍵盤上輸入10個整數(shù),判斷是否含有負數(shù)。for(flag=0,i=1;i<=10;i++)/*已知循環(huán)次數(shù),用for循環(huán)*/{scanf("%d",&x);
if(x<0){/*接收到負數(shù)*/flag=1;break;/*沒有必要接收其他數(shù)據(jù),跳出循環(huán)*/}}if(flag==1)printf("輸入的整數(shù)中有負數(shù)\n");elseprintf("輸入的整數(shù)中沒有負數(shù)\n");解:依次讀取從鍵盤上輸入的整數(shù)并進行判斷,當輸入負整數(shù)時,沒有必要繼續(xù)讀入數(shù)據(jù),執(zhí)行break語句跳出循環(huán)。設(shè)變量flag表示中間退出循環(huán)的標志,語句如下:5.4
其他控制語句break語句
continue語句只是結(jié)束本次循環(huán)的執(zhí)行,但沒有跳出循環(huán)?!菊Z法】continue語句一般與if語句配合使用,其一般形式如下:【語義】如果條件表達式成立,則結(jié)束本次循環(huán),重新開始新一輪的循環(huán)。循環(huán)語句
{
……
if(條件表達式)continue;
……
}5.4
其他控制語句continue語句例5.15從鍵盤上輸入10個整數(shù),輸出其中的負數(shù)并統(tǒng)計負數(shù)出現(xiàn)的次數(shù)。解:依次讀取從鍵盤上輸入的整數(shù)并進行判斷,如果該數(shù)為正數(shù),則執(zhí)行continue語句,程序回到for語句執(zhí)行i++,開始下一輪循環(huán),否則輸出該數(shù)并累計次數(shù)。設(shè)變量count表示負數(shù)出現(xiàn)的次數(shù),語句如下:for(count=0,i=1;i<=10;i++){scanf("%d",&x);
if(x>=0)continue;/*接收非負數(shù),跳過for循環(huán)余下語句*/printf("%4d",x);
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 課程思政課題申報書范本
- 門面出租消防合同范本
- 木業(yè)設(shè)備安裝合同范本
- 2025至2030年中國數(shù)控三步仿金電鍍電源數(shù)據(jù)監(jiān)測研究報告
- 2025至2030年中國懷山藥脯數(shù)據(jù)監(jiān)測研究報告
- 2025至2030年中國影雕品數(shù)據(jù)監(jiān)測研究報告
- 幼兒集體舞表演與仿編幼兒邀請舞創(chuàng)編課件
- 2025至2030年中國多微孔覆膜纖維濾芯數(shù)據(jù)監(jiān)測研究報告
- 2025至2030年中國塑料中間連接盒數(shù)據(jù)監(jiān)測研究報告
- 硬件基礎(chǔ)知識
- 生物-湖北省鄂東新領(lǐng)先協(xié)作體2025屆高三下學期2月調(diào)考(二模)試題和答案
- 6 千人糕 教學設(shè)計-2023-2024學年語文二年級下冊統(tǒng)編版
- 社會問題(第三版)課件匯 向德平 第1-7章 社會問題概述 - 人口問題
- 深圳2025年廣東深圳市公辦中小學招聘事業(yè)單位工作人員178人筆試歷年參考題庫附帶答案詳解
- 7 鹿角和鹿腿 第二課時 公開課一等獎創(chuàng)新教學設(shè)計
- 2025屆高考化學二輪復習:晶胞的相關(guān)性質(zhì)及計算(含解析)
- 2025年陜西延長石油集團礦業(yè)公司招聘筆試參考題庫含答案解析
- 英語-廣東省廣州市2024-2025學年高一上學期期末檢測卷(一)試題和答案
- 社會學概論課件
- 外科學總論--創(chuàng)傷ppt
- 舉世無雙的建筑師
評論
0/150
提交評論