yjh第04章選擇結(jié)構(gòu)程序設(shè)計(jì)_第1頁(yè)
yjh第04章選擇結(jié)構(gòu)程序設(shè)計(jì)_第2頁(yè)
yjh第04章選擇結(jié)構(gòu)程序設(shè)計(jì)_第3頁(yè)
yjh第04章選擇結(jié)構(gòu)程序設(shè)計(jì)_第4頁(yè)
yjh第04章選擇結(jié)構(gòu)程序設(shè)計(jì)_第5頁(yè)
已閱讀5頁(yè),還剩45頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

1、 第 五 章 選擇結(jié)構(gòu)程序設(shè)計(jì)關(guān)系運(yùn)算符與關(guān)系表達(dá)式邏輯運(yùn)算符與邏輯表達(dá)式if語(yǔ)句(條件運(yùn)算符與條件表達(dá)式)switch語(yǔ)句程序舉例第四章 選擇結(jié)構(gòu)程序設(shè)計(jì)選擇結(jié)構(gòu)程序設(shè)計(jì) 第 五 章 選擇結(jié)構(gòu)程序設(shè)計(jì)4.1 程序語(yǔ)言概述語(yǔ)言概述(C中語(yǔ)句的種類有多少?)C語(yǔ)句概述C語(yǔ)句種類控制語(yǔ)句函數(shù)調(diào)用語(yǔ)句 表達(dá)式語(yǔ)句空語(yǔ)句 ;復(fù)合語(yǔ)句 由一次函數(shù)調(diào)用加一個(gè)分號(hào)構(gòu)成一個(gè)語(yǔ)句,如 printf(“This is a C statement.”);a=3 i=i+1a=3; i=i+1;任何表達(dá)式加上分號(hào)就成為語(yǔ)句。if( )else 條件語(yǔ)句for( ) 循環(huán)語(yǔ)句while( ) 循環(huán)語(yǔ)句dowhile(

2、) 循環(huán)語(yǔ)句continue 結(jié)束本次循環(huán)語(yǔ)句break 中止執(zhí)行switch或循環(huán)語(yǔ)句switch 多分支選擇語(yǔ)句goto 轉(zhuǎn)向語(yǔ)句return 從函數(shù)返回語(yǔ)句用 把一些語(yǔ)句括起來就成為復(fù)合語(yǔ)句。如: z=x+y; t=z/100; printf(“%f”,t); 第 五 章 選擇結(jié)構(gòu)程序設(shè)計(jì)4.3.1 ifif語(yǔ)句語(yǔ)句vif語(yǔ)句的三種形式形式一:格式:if (expression) statement;執(zhí)行過程:exprstatement非0=0例:if (xy) printf(“%d”,x);exprstatement1statement2非0=0l形式二:u格式:if (express

3、ion) statement1; else statement2;u執(zhí)行過程:例:if (xy) max=x; else max=y; 第 五 章 選擇結(jié)構(gòu)程序設(shè)計(jì)if ( expr1 ) statement1;else if (expr2 ) statement2; else if (expr3 ) statement3; . else statementn; 形式三:格式形式三:格式 第 五 章 選擇結(jié)構(gòu)程序設(shè)計(jì)expr1statemnt1非0=0expr2expr3statemntnstatemnt3statemnt2非0非0=0=0例:if (salary1000) index=0.4

4、; else if (salary800) index=0.3; else if (salary600) index=0.2; else if (salary400) index=0.1; else index=0; 執(zhí)行過程:執(zhí)行過程: 第 五 章 選擇結(jié)構(gòu)程序設(shè)計(jì)如:if(a=b&x=y) printf(“a=b,x=y”); if(3) printf(“OK”); if(a) printf(“%d”,a);說明:說明:uif后面的表達(dá)式類型任意u語(yǔ)句可以是復(fù)合語(yǔ)句用 u if(x) if(x!=0) if(!x) if(x=0)例 考慮下面程序的輸出結(jié)果: #include ma

5、in() int x,y; scanf(“%d,%d”,&x,&y); if(xy) x=y; y=x; else x+; y+; printf(“%d,%dn”,x,y);Compile Error!編譯出錯(cuò) 第 五 章 選擇結(jié)構(gòu)程序設(shè)計(jì)/*c#include main() int x,y; printf(Enter an integer:); scanf(%d,&x); y=x; if(y0) y= -y; printf(ninteger:%d absolute value:%dn,x,y);h5_1.c*/例例: 求一個(gè)數(shù)的絕對(duì)值求一個(gè)數(shù)的絕對(duì)值運(yùn)行:Enter

6、an integer:-12 integer:-12 absolute value :12/*變量定義*/*語(yǔ)句提示*/*鍵盤輸入一個(gè)數(shù)值*/ 第 五 章 選擇結(jié)構(gòu)程序設(shè)計(jì)/*ch5_2.c*/#include main() int a,b; /*變量定義*/ printf(Enter integer a:); /*語(yǔ)句提示*/ scanf(%d,&a); /*鍵盤輸入一個(gè)數(shù)值*/ printf(Enter integer b:); /*語(yǔ)句提示*/ scanf(%d,&b); /*鍵盤輸入一個(gè)數(shù)值*/ if(a=b) printf(a=bn); else printf(a!=

7、bn);例例:輸入兩個(gè)數(shù)并判斷兩數(shù)相等否輸入兩個(gè)數(shù)并判斷兩數(shù)相等否運(yùn)行:運(yùn)行:Enter integer a:12 Enter integer b:12 a=b 運(yùn)行:運(yùn)行:Enter integer a:12 Enter integer b:9 a!=b 第 五 章 選擇結(jié)構(gòu)程序設(shè)計(jì)/*ch5_3.c*/#include main() char c; /*變量定義*/ printf(Enter a character:); /*語(yǔ)句提示*/ c=getchar(); /*鍵盤輸入一個(gè)字符*/ if(c=0&c=A&c=a&c=z) printf(The charact

8、er is a lower lettern); else printf(The character is other charactern);例例 判斷輸入字符種類判斷輸入字符種類運(yùn)行:Enter a character: The character is a control character運(yùn)行:Enter a character:8 The character is a digit運(yùn)行: Enter a character: D The character is a capital letter運(yùn)行: Enter a character: h The character is a low

9、er letter運(yùn)行: Enter a character:F1 The character is other characterThe character is a control characterThe character is a digitThe character is a capital letterThe character is a lower letterThe character is other character 第 五 章 選擇結(jié)構(gòu)程序設(shè)計(jì)4.3.24.3.2 if if 語(yǔ)句嵌套:語(yǔ)句嵌套:一般形式if (expr1) if (expr2) statement1

10、 else statement2else if(expr3) statement3 else statement4內(nèi)嵌if內(nèi)嵌if 第 五 章 選擇結(jié)構(gòu)程序設(shè)計(jì)例:輸入兩數(shù)并判斷其大小關(guān)系例:輸入兩數(shù)并判斷其大小關(guān)系/*ch5_4.c*/#include main() int x,y; printf(Enter integer x,y:); scanf(“%d %d”,x,y)%d,%d,&x,&y); if(x!=y) if(xy) printf(XYn); else printf(XYn); else printf(X=Yn);運(yùn)行:Enter integer x,y:12

11、 23 XY Enter integer x,y:12 12 X=Y 第 五 章 選擇結(jié)構(gòu)程序設(shè)計(jì)if (expr1) if (expr2) statement1 else statement2內(nèi)嵌ifif (expr1) if (expr2) statement1else statement3 內(nèi)嵌ifif (expr1) statement1else if(expr3) statement3 else statement4內(nèi)嵌if 第 五 章 選擇結(jié)構(gòu)程序設(shè)計(jì)if else 配對(duì)原則:配對(duì)原則:缺省缺省 時(shí),時(shí),else總是和它總是和它上面離它最近的未配對(duì)的上面離它最近的未配對(duì)的if配對(duì)配

12、對(duì)if()if()if()else.else.else. 第 五 章 選擇結(jié)構(gòu)程序設(shè)計(jì)例: if (a=b) if(b=c) printf(“a=b=c”); else printf(“a!=b”);修改: if (a=b) if(b=c) printf(“a=b=c”); else printf(“a!=b”);實(shí)現(xiàn)if else 正確配對(duì)方法:加 第 五 章 選擇結(jié)構(gòu)程序設(shè)計(jì)例: 考慮下面程序輸出結(jié)果: main() int x=100,a=10,b=20; int v1=5,v2=0; if(a70n”); case D: printf(“score60n”); .break; 第 五

13、章 選擇結(jié)構(gòu)程序設(shè)計(jì)lcase后可包含多個(gè)可執(zhí)行語(yǔ)句,且不必加 ;lswitch可嵌套;l多個(gè)case可共用一組執(zhí)行語(yǔ)句。l如果表達(dá)式的值不屬于E1,E2,En ,也沒有default語(yǔ)句,則該switch結(jié)構(gòu)不起任何作用 如: case A: case B: case C: printf(“score70n”); Break; case D: printf(“score60n”); . 第 五 章 選擇結(jié)構(gòu)程序設(shè)計(jì)例 switch(score) case 5: printf(“Very good!”); case 4: printf(“Good!”); case 3: printf(“Pas

14、s!”); case 2: printf(“Fail!”); default : printf(“data error!”); 運(yùn)行結(jié)果:score為5時(shí),輸出: Very good! Good! Pass! Fail! data error!Break;Break;Break;Break;Break; 第 五 章 選擇結(jié)構(gòu)程序設(shè)計(jì)例 void main() int x=1,y=0,a=0,b=0; switch(x) case 1: switch(y) case 0: a+; break; case 1: b+; break; case 2: a+;b+; break; case 3: a+

15、;b+; printf(“na=%d,b=%d”,a,b); 運(yùn)行結(jié)果:a=2,b=1 第 五 章 選擇結(jié)構(gòu)程序設(shè)計(jì)/*ch5_5.c*/#include main() int c; printf(Enter m or n or h or other:); c=getchar(); switch(c) case m: printf(nGood morning!n);break; case n: printf(nGood night!n); break; case h: printf(nHello!n); break; default : printf(n?n); break; 例:根據(jù)輸入字母

16、輸出字符串例:根據(jù)輸入字母輸出字符串返回 第 五 章 選擇結(jié)構(gòu)程序設(shè)計(jì)4.4.1 while語(yǔ)句v一般形式:while(表達(dá)式) 循環(huán)體語(yǔ)句;v執(zhí)行流程:expr循環(huán)體假(0)真(非0)while 第 五 章 選擇結(jié)構(gòu)程序設(shè)計(jì)v說明:循環(huán)體有可能一次也不執(zhí)行;循環(huán)體可為任意類型語(yǔ)句;循環(huán)體如果包含一個(gè)以上的語(yǔ)句,應(yīng)該用:下列情況,退出while循環(huán);條件表達(dá)式不成立(為零);循環(huán)體內(nèi)遇break,returnbreak,return,gotogoto;循環(huán)體中一般有使循環(huán)趨向結(jié)束的語(yǔ)句,也有無限循環(huán), 如 while(1)while(1) 循環(huán)體循環(huán)體; ;v特點(diǎn):先判斷表達(dá)式,后執(zhí)行循環(huán)體

17、第 五 章 選擇結(jié)構(gòu)程序設(shè)計(jì)例 用while循環(huán)求 1001nn#include main() int i,sum=0; i=1; while(i=100) sum=sum+i; i+; printf(%d,sum);循環(huán)初值循環(huán)終值循環(huán)變量增值循環(huán)條件循環(huán)體 第 五 章 選擇結(jié)構(gòu)程序設(shè)計(jì)例 顯示110的平方#include main() int i=1; while(i=10) printf(%d*%d=%dn,i,i,i*i); i+; 運(yùn)行結(jié)果:1*1=12*2=43*3=94*4=165*5=256*6=367*7=498*8=649*9=8110*10=100 第 五 章 選擇結(jié)構(gòu)程

18、序設(shè)計(jì)4.4.2 dowhile語(yǔ)句v一般形式:do 循環(huán)體語(yǔ)句; while(表達(dá)式);v執(zhí)行流程:do循環(huán)體expr假(0)真(非0)while 第 五 章 選擇結(jié)構(gòu)程序設(shè)計(jì)v特點(diǎn):先執(zhí)行循環(huán)體,后判斷表達(dá)式v說明:l至少執(zhí)行一次循環(huán)體ldowhile可轉(zhuǎn)化成while結(jié)構(gòu)expr循環(huán)體假(0)真(非0)循環(huán)體While循環(huán) 第 五 章 選擇結(jié)構(gòu)程序設(shè)計(jì)例 用dowhile循環(huán)求 1001nn#include main() int i,sum=0; i=1; do sum+=i;i+; while(i=100); printf(%d,sum); 第 五 章 選擇結(jié)構(gòu)程序設(shè)計(jì)while和do

19、while比較#include main() int i,sum=0; scanf(%d,&i); do sum+=i;i+; while(i=10); printf(“sum=%d,sum);#include main() int i,sum=0; scanf(%d,&i); while(i=10) sum+=i;i+; printf( sum= %d,sum);運(yùn)行結(jié)果:1 sum= 55運(yùn)行結(jié)果:1 sum= 55運(yùn)行結(jié)果:11 sum=0運(yùn)行結(jié)果:11 sum= 11結(jié)論:當(dāng)while后面的表達(dá)式的第一次的值為“真”時(shí),兩種循環(huán)得到的結(jié)果相同。否則,兩者結(jié)果不相同。 第

20、 五 章 選擇結(jié)構(gòu)程序設(shè)計(jì)4.4.3 for語(yǔ)句v一般形式for(expr1 ; expr2 ; expr3) 循環(huán)體語(yǔ)句;v執(zhí)行流程:expr2循環(huán)體假(0)真(非0)forexpr1expr3 第 五 章 選擇結(jié)構(gòu)程序設(shè)計(jì)vfor語(yǔ)句一般應(yīng)用形式:for(循環(huán)變量賦初值;循環(huán)條件;循環(huán)變量增值)循環(huán)體語(yǔ)句;v說明:for語(yǔ)句中expr1, expr2 ,expr3 類型任意,都可省略,但他們之間分號(hào);不可省無限循環(huán): for(;)for語(yǔ)句可以轉(zhuǎn)換成while結(jié)構(gòu)expr1;while(expr2)循環(huán)體語(yǔ)句;expr3;例 用for循環(huán)求 1001nn#include main() in

21、t i,sum=0; for(i=1;i=100;i+) sum+=i; printf(%d,sum); 第 五 章 選擇結(jié)構(gòu)程序設(shè)計(jì)例:#include main( ) int i=0; for(i=0;i10;i+) putchar(a+i); 運(yùn)行結(jié)果均為: abcdefghij例:#include main( ) int i=0; for(;i10;i+) putchar(a+i); 例:#include main( ) int i=0; for(;i10;) putchar(a+(i+); 例:#include main( ) int i=0; for(;i10;putchar(a+

22、i),i+) ; 第 五 章 選擇結(jié)構(gòu)程序設(shè)計(jì)#includemain() int i,j,k; for(i=0,j=100;i=j;i+,j-) k=i+j; printf(%d+%d=%dn,i,j,k); 第 五 章 選擇結(jié)構(gòu)程序設(shè)計(jì)#includemain() char c; for(;(c=getchar()!=n;) printf(%c ,c);#include main() int i,c; for(i=0;(c=getchar()!=n;i+=3)printf(%c ,i+c);輸出字符,以輸出字符,以回車換行結(jié)束?;剀嚀Q行結(jié)束。 第 五 章 選擇結(jié)構(gòu)程序設(shè)計(jì)4.4.4 其它控

23、制語(yǔ)句 1、break語(yǔ)句功能:在循環(huán)語(yǔ)句和switch語(yǔ)句中,終止并跳出循環(huán)體,即提前結(jié)束循環(huán),接著執(zhí)行循環(huán)下面的語(yǔ)句。說明:break只能終止并跳出最近一層的結(jié)構(gòu)break不能用于循環(huán)語(yǔ)句和switch語(yǔ)句之外的任何其它語(yǔ)句之中。 第 五 章 選擇結(jié)構(gòu)程序設(shè)計(jì)exprbreak;假(0)真(非0)whiledobreak;.expr假(0)真(非0)while 第 五 章 選擇結(jié)構(gòu)程序設(shè)計(jì)expr2break;.假(0)真(非0)forexpr1expr3switchexpr語(yǔ)句組1break;語(yǔ)句組2break;語(yǔ)句組nbreak;語(yǔ)句組break;.const 1const 2cons

24、t ndefaultcase 第 五 章 選擇結(jié)構(gòu)程序設(shè)計(jì)例 break舉例:輸出圓面積,面積大于100時(shí)停止#define PI 3.14159main() int r; float area; for(r=1;r100) break; printf(r=%d,area=%.2fn,r,area); 第 五 章 選擇結(jié)構(gòu)程序設(shè)計(jì)2、continue語(yǔ)句v功能:結(jié)束本次循環(huán),跳過循環(huán)體中尚未執(zhí)行的語(yǔ)句,進(jìn)行下一次是否執(zhí)行循環(huán)體的判斷v僅用于循環(huán)語(yǔ)句中exprcontinue;假(0)真(非0)while真(非0)docontinue;.expr假(0)whileexpr2continue;.假

25、(0)真(非0)forexpr1expr3 第 五 章 選擇結(jié)構(gòu)程序設(shè)計(jì)例:輸出100200之間的不能被3整除的數(shù)#include main() int n; for(n=100;n=200;n+) if(n%3= =0) continue; printf(%d ,n); 返回 第 五 章 選擇結(jié)構(gòu)程序設(shè)計(jì)v功能:無條件轉(zhuǎn)移語(yǔ)句v說明(語(yǔ)句標(biāo)號(hào)):不能用整數(shù)作標(biāo)號(hào);只能出現(xiàn)在goto所在函數(shù)內(nèi),且唯一;只能加在可執(zhí)行語(yǔ)句前面;限制使用goto語(yǔ)句; (1)與if語(yǔ)句一起構(gòu)成循環(huán)結(jié)構(gòu)。 (2)從循環(huán)體中跳轉(zhuǎn)到循環(huán)體外。 3、goto語(yǔ)句及用語(yǔ)句及用goto構(gòu)成循環(huán)構(gòu)成循環(huán)goto語(yǔ)句一般格式:語(yǔ)

26、句一般格式: goto 語(yǔ)句標(biāo)號(hào); .標(biāo)號(hào):語(yǔ)句; 第 五 章 選擇結(jié)構(gòu)程序設(shè)計(jì)例例 用用if 和和goto語(yǔ)句構(gòu)成循環(huán),求語(yǔ)句構(gòu)成循環(huán),求1001nn#include main() int i,sum=0; i=1;loop: if(i=100) sum+=i; i+; goto loop; printf(%d,sum);sum=0+1sum=1+2=3sum=3+3=6sum=6+4sum=4950+100=5050循環(huán)初值循環(huán)終值循環(huán)變量增值循環(huán)條件循環(huán)體 第 五 章 選擇結(jié)構(gòu)程序設(shè)計(jì)4.4.5 循環(huán)的嵌套v三種循環(huán)可互相嵌套,層數(shù)不限v外層循環(huán)可包含兩個(gè)以上內(nèi)循環(huán),但不能相互交叉v嵌套

27、循環(huán)的執(zhí)行流程(1) while() while() . (2) do do while( ); . while( );(3) while() do while( ); . (4) for( ; ;) do while(); while() .內(nèi)循環(huán)外循環(huán)內(nèi)循環(huán)v嵌套循環(huán)的跳轉(zhuǎn)禁止:l從外層跳入內(nèi)層l跳入同層的另一循環(huán) 第 五 章 選擇結(jié)構(gòu)程序設(shè)計(jì)例 循環(huán)嵌套,輸出九九表1234567891234567892468101214161836912151821242791827364554637281.ij#include main() int i,j; for(i=1;i10;i+) printf(%4d,i); printf(n-n); for(i=1;i10;i+) for(j=1;j10;j+) printf(j= =9)?%4dn:

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論