第4章簡(jiǎn)單程序設(shè)計(jì)_第1頁(yè)
第4章簡(jiǎn)單程序設(shè)計(jì)_第2頁(yè)
第4章簡(jiǎn)單程序設(shè)計(jì)_第3頁(yè)
第4章簡(jiǎn)單程序設(shè)計(jì)_第4頁(yè)
第4章簡(jiǎn)單程序設(shè)計(jì)_第5頁(yè)
已閱讀5頁(yè),還剩103頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、 C語(yǔ)言語(yǔ)言程序設(shè)計(jì)程序設(shè)計(jì) 第第4 4章章 程序控制結(jié)構(gòu)程序控制結(jié)構(gòu) Page 1 第第4章章 程序控制結(jié)構(gòu)程序控制結(jié)構(gòu)4.1 C4.1 C語(yǔ)言的執(zhí)行語(yǔ)句語(yǔ)言的執(zhí)行語(yǔ)句4.2 4.2 順序結(jié)構(gòu)順序結(jié)構(gòu) 4.3 4.3 選擇結(jié)構(gòu)選擇結(jié)構(gòu)4.4 4.4 循環(huán)結(jié)構(gòu)循環(huán)結(jié)構(gòu) C語(yǔ)言語(yǔ)言程序設(shè)計(jì)程序設(shè)計(jì) 第第4 4章章 程序控制結(jié)構(gòu)程序控制結(jié)構(gòu) Page 2 4.1 C C語(yǔ)言的執(zhí)行語(yǔ)句語(yǔ)言的執(zhí)行語(yǔ)句C程序組成程序組成C C程序程序源程序文件源程序文件1 1源程序文件源程序文件2 2源程序文件源程序文件3 3預(yù)處理命令預(yù)處理命令函數(shù)函數(shù)n n函數(shù)函數(shù)1 1數(shù)據(jù)聲明數(shù)據(jù)聲明函數(shù)首部函數(shù)首部函數(shù)體函數(shù)體數(shù)

2、據(jù)聲明數(shù)據(jù)聲明執(zhí)行語(yǔ)句執(zhí)行語(yǔ)句 C語(yǔ)言語(yǔ)言程序設(shè)計(jì)程序設(shè)計(jì) 第第4 4章章 程序控制結(jié)構(gòu)程序控制結(jié)構(gòu) Page 3 4.1 C語(yǔ)言的執(zhí)行語(yǔ)句語(yǔ)言的執(zhí)行語(yǔ)句C語(yǔ)句的分類:語(yǔ)句的分類:1.表達(dá)式語(yǔ)句表達(dá)式語(yǔ)句2.空語(yǔ)句空語(yǔ)句3.復(fù)合語(yǔ)句復(fù)合語(yǔ)句4.控制語(yǔ)句控制語(yǔ)句 C語(yǔ)言語(yǔ)言程序設(shè)計(jì)程序設(shè)計(jì) 第第4 4章章 程序控制結(jié)構(gòu)程序控制結(jié)構(gòu) Page 4 表達(dá)式語(yǔ)句表達(dá)式語(yǔ)句賦值語(yǔ)句:變量賦值語(yǔ)句:變量 = 表達(dá)式表達(dá)式 ; 功能:將功能:將“=”右側(cè)表達(dá)式的值賦給左側(cè)右側(cè)表達(dá)式的值賦給左側(cè)變量的值。變量的值。函數(shù)調(diào)用語(yǔ)句;函數(shù)調(diào)用語(yǔ)句; 例如例如 putchar(ch); C語(yǔ)言語(yǔ)言程序設(shè)計(jì)程序設(shè)計(jì) 第

3、第4 4章章 程序控制結(jié)構(gòu)程序控制結(jié)構(gòu) Page 5 空語(yǔ)句和復(fù)合語(yǔ)句空語(yǔ)句和復(fù)合語(yǔ)句空語(yǔ)句:僅由一個(gè)分號(hào)構(gòu)成的語(yǔ)句,在執(zhí)行時(shí)空語(yǔ)句:僅由一個(gè)分號(hào)構(gòu)成的語(yǔ)句,在執(zhí)行時(shí)不產(chǎn)生任何指令。不產(chǎn)生任何指令。復(fù)合語(yǔ)句:用一對(duì)花括號(hào)復(fù)合語(yǔ)句:用一對(duì)花括號(hào) 將多個(gè)語(yǔ)句括起來(lái)將多個(gè)語(yǔ)句括起來(lái)構(gòu)成一個(gè)整體。構(gòu)成一個(gè)整體。 注意:注意: 1)復(fù)合語(yǔ)句中的每個(gè)語(yǔ)句必須以分號(hào);結(jié)束)復(fù)合語(yǔ)句中的每個(gè)語(yǔ)句必須以分號(hào);結(jié)束但右花括號(hào)但右花括號(hào)后不能有分號(hào)后不能有分號(hào) 2)復(fù)合語(yǔ)句中可以有自己的數(shù)據(jù)說(shuō)明)復(fù)合語(yǔ)句中可以有自己的數(shù)據(jù)說(shuō)明 C語(yǔ)言語(yǔ)言程序設(shè)計(jì)程序設(shè)計(jì) 第第4 4章章 程序控制結(jié)構(gòu)程序控制結(jié)構(gòu) Page 6 控制

4、語(yǔ)句控制語(yǔ)句條件選擇語(yǔ)句:條件選擇語(yǔ)句:if開關(guān)分支語(yǔ)句:開關(guān)分支語(yǔ)句:switch當(dāng)循環(huán)語(yǔ)句:當(dāng)循環(huán)語(yǔ)句:while直到循環(huán)語(yǔ)句:直到循環(huán)語(yǔ)句:do while計(jì)數(shù)循環(huán)語(yǔ)句:計(jì)數(shù)循環(huán)語(yǔ)句:for中止本次循環(huán)語(yǔ)句:中止本次循環(huán)語(yǔ)句:continue中止整個(gè)循環(huán)語(yǔ)句:中止整個(gè)循環(huán)語(yǔ)句:break函數(shù)返回語(yǔ)句:函數(shù)返回語(yǔ)句:return無(wú)條件轉(zhuǎn)移語(yǔ)句:無(wú)條件轉(zhuǎn)移語(yǔ)句:goto C語(yǔ)言語(yǔ)言程序設(shè)計(jì)程序設(shè)計(jì) 第第4 4章章 程序控制結(jié)構(gòu)程序控制結(jié)構(gòu) Page 7 順序結(jié)構(gòu)順序結(jié)構(gòu)順序結(jié)構(gòu)程序:由兩個(gè)或兩個(gè)以上的語(yǔ)句組成,順序結(jié)構(gòu)程序:由兩個(gè)或兩個(gè)以上的語(yǔ)句組成,先執(zhí)行先執(zhí)行 A 操作,然后再執(zhí)行操作,

5、然后再執(zhí)行 B 操作。操作。 傳統(tǒng)流程圖傳統(tǒng)流程圖 N-S流程圖流程圖 A B A B C語(yǔ)言語(yǔ)言程序設(shè)計(jì)程序設(shè)計(jì) 第第4 4章章 程序控制結(jié)構(gòu)程序控制結(jié)構(gòu) Page 8 順序結(jié)構(gòu)程序設(shè)計(jì)舉例順序結(jié)構(gòu)程序設(shè)計(jì)舉例 例例4.1 輸入任意兩個(gè)整數(shù),求它們的和及平均值。要求平輸入任意兩個(gè)整數(shù),求它們的和及平均值。要求平均值取兩位小數(shù)輸出。均值取兩位小數(shù)輸出。#include int main() int num1,num2; float sum,aver; printf(Please input two integers: n); scanf(%d,%d,&num1,&num2);

6、sum=(float)num1+num2; /*求累計(jì)和求累計(jì)和*/ aver=sum/2.0; /*求平均值求平均值*/ printf(sum=%.0f,aver=%.2fn,sum,aver); return 0; C語(yǔ)言語(yǔ)言程序設(shè)計(jì)程序設(shè)計(jì) 第第4 4章章 程序控制結(jié)構(gòu)程序控制結(jié)構(gòu) Page 9 順序結(jié)構(gòu)程序設(shè)計(jì)舉例順序結(jié)構(gòu)程序設(shè)計(jì)舉例例例4.2 給定一個(gè)三位正整數(shù),分別輸出它的個(gè)位數(shù)、十位數(shù)給定一個(gè)三位正整數(shù),分別輸出它的個(gè)位數(shù)、十位數(shù)和百位數(shù)。和百位數(shù)。#include int main() int m,m0,m1,m2; printf(Input a number(100999):

7、 ); scanf(%d,&m); m0=m%10; m1=(m/10)%10; m2=m/100; printf(The three digits are); printf(%d,%d,%d n,m0,m1,m2); return 0; C語(yǔ)言語(yǔ)言程序設(shè)計(jì)程序設(shè)計(jì) 第第4 4章章 程序控制結(jié)構(gòu)程序控制結(jié)構(gòu) Page 10 順序結(jié)構(gòu)程序設(shè)計(jì)舉例順序結(jié)構(gòu)程序設(shè)計(jì)舉例例例4.4 求方程求方程ax2+bx+c=0的根。的根。a、b、c由鍵盤輸入,由鍵盤輸入,a0且且b2-4ac0。#include #include int main() float a,b,c,d,x1,x2; printf

8、(Input a,b,c: ); scanf(%f,%f,%f,&a,&b,&c); d=b*b-4*a*c;/*求判別式的值賦給求判別式的值賦給d*/ x1=(-b+sqrt(d)/(2*a); x2=(-b-sqrt(d)/(2*a); printf(x1=%.4fnx2=%.4fn,x1,x2); return 0; C語(yǔ)言語(yǔ)言程序設(shè)計(jì)程序設(shè)計(jì) 第第4 4章章 程序控制結(jié)構(gòu)程序控制結(jié)構(gòu) Page 11 4.3 選擇結(jié)構(gòu)選擇結(jié)構(gòu) C語(yǔ)言的選擇控制結(jié)構(gòu)語(yǔ)句有:語(yǔ)言的選擇控制結(jié)構(gòu)語(yǔ)句有:if語(yǔ)句和語(yǔ)句和switch語(yǔ)句語(yǔ)句if 語(yǔ)句是用來(lái)判斷所給定的條件是否滿語(yǔ)句是用來(lái)

9、判斷所給定的條件是否滿足,根據(jù)判定的結(jié)果足,根據(jù)判定的結(jié)果(真或假真或假)決定執(zhí)行決定執(zhí)行給定的某種操作之一。給定的某種操作之一。 C語(yǔ)言語(yǔ)言程序設(shè)計(jì)程序設(shè)計(jì) 第第4 4章章 程序控制結(jié)構(gòu)程序控制結(jié)構(gòu) Page 12 if 語(yǔ)句的形式語(yǔ)句的形式1單分支結(jié)構(gòu)單分支結(jié)構(gòu) 格式格式: if (表達(dá)式表達(dá)式) 語(yǔ)句語(yǔ)句 執(zhí)行過(guò)程:執(zhí)行過(guò)程:語(yǔ)句語(yǔ)句成立成立表達(dá)式表達(dá)式不成立不成立 C語(yǔ)言語(yǔ)言程序設(shè)計(jì)程序設(shè)計(jì) 第第4 4章章 程序控制結(jié)構(gòu)程序控制結(jié)構(gòu) Page 13 if語(yǔ)句舉例語(yǔ)句舉例1例例 輸入兩個(gè)實(shí)數(shù),按升序輸出兩個(gè)實(shí)數(shù)。輸入兩個(gè)實(shí)數(shù),按升序輸出兩個(gè)實(shí)數(shù)。解法一:解法一:#include int

10、main( ) float a,b; scanf(%f%f,&a,&b); if ( ab) printf(%f,%fn,b,a); return 0;單邊條件單邊條件(條件判斷(條件判斷兩次)兩次) C語(yǔ)言語(yǔ)言程序設(shè)計(jì)程序設(shè)計(jì) 第第4 4章章 程序控制結(jié)構(gòu)程序控制結(jié)構(gòu) Page 14 if 語(yǔ)句的形式語(yǔ)句的形式2雙分支結(jié)構(gòu)雙分支結(jié)構(gòu) 格式格式: if (表達(dá)式表達(dá)式) 語(yǔ)句語(yǔ)句1 else 語(yǔ)句語(yǔ)句2 執(zhí)行過(guò)程:執(zhí)行過(guò)程:不成立不成立語(yǔ)句語(yǔ)句1語(yǔ)句語(yǔ)句2成立成立表達(dá)式表達(dá)式 C語(yǔ)言語(yǔ)言程序設(shè)計(jì)程序設(shè)計(jì) 第第4 4章章 程序控制結(jié)構(gòu)程序控制結(jié)構(gòu) Page 15 if語(yǔ)句舉例語(yǔ)句

11、舉例1例例 輸入兩個(gè)實(shí)數(shù),按升序輸出兩個(gè)實(shí)數(shù)。輸入兩個(gè)實(shí)數(shù),按升序輸出兩個(gè)實(shí)數(shù)。解法二:解法二:#include int main ( ) float a,b; scanf(%f%f,&a,&b); if (ab) printf(%f, %fn,b,a); else printf(%f,%fn,a,b); return 0;雙邊條件雙邊條件(條件判斷(條件判斷一次)一次) C語(yǔ)言語(yǔ)言程序設(shè)計(jì)程序設(shè)計(jì) 第第4 4章章 程序控制結(jié)構(gòu)程序控制結(jié)構(gòu) Page 16 if語(yǔ)句舉例語(yǔ)句舉例1解法三:解法三:#include int main( ) float a,b,t; scanf(%f

12、%f,&a,&b); if( ab) t=a; a=b; b=t; /*兩個(gè)變量交換數(shù)據(jù)兩個(gè)變量交換數(shù)據(jù)*/ printf(%f,%fn,a,b); return 0;單邊條件單邊條件(條件判斷(條件判斷一次)一次)3個(gè)語(yǔ)句用花括號(hào)個(gè)語(yǔ)句用花括號(hào)括起來(lái)構(gòu)成括起來(lái)構(gòu)成1個(gè)復(fù)個(gè)復(fù)合語(yǔ)句合語(yǔ)句若不使用復(fù)合語(yǔ)句,若不使用復(fù)合語(yǔ)句,則可用則可用t=a, a=b, b=t; C語(yǔ)言語(yǔ)言程序設(shè)計(jì)程序設(shè)計(jì) 第第4 4章章 程序控制結(jié)構(gòu)程序控制結(jié)構(gòu) Page 17 if 語(yǔ)句的形式語(yǔ)句的形式3多分支結(jié)構(gòu)多分支結(jié)構(gòu) 格式格式: if (表達(dá)式表達(dá)式1) 語(yǔ)句語(yǔ)句1 else if (表達(dá)式表達(dá)式2

13、) 語(yǔ)句語(yǔ)句2 else if (表達(dá)式表達(dá)式3) 語(yǔ)句語(yǔ)句3 : : else if (表達(dá)式表達(dá)式n) 語(yǔ)句語(yǔ)句n else 語(yǔ)句語(yǔ)句n+1假假語(yǔ)句語(yǔ)句1真真表達(dá)式表達(dá)式1 1表達(dá)式表達(dá)式2 2表達(dá)式表達(dá)式3 3表達(dá)式表達(dá)式n n語(yǔ)句語(yǔ)句n+1語(yǔ)句語(yǔ)句n語(yǔ)句語(yǔ)句3語(yǔ)句語(yǔ)句2真真真真真真假假假假假假 C語(yǔ)言語(yǔ)言程序設(shè)計(jì)程序設(shè)計(jì) 第第4 4章章 程序控制結(jié)構(gòu)程序控制結(jié)構(gòu) Page 18 if語(yǔ)句舉例語(yǔ)句舉例2 例例 根據(jù)所輸入的根據(jù)所輸入的x之值,求之值,求解法一:用多分支解法一:用多分支if 語(yǔ)句語(yǔ)句 #include int main ( ) int x,y; scanf(%d,&

14、x); if(x0) y=1; else if(x=0) y=0; else y=-1; printf(x=%d,y=%dn,x,y); return 0; 1 (x0)y= 0 (x=0) -1 (x0) C語(yǔ)言語(yǔ)言程序設(shè)計(jì)程序設(shè)計(jì) 第第4 4章章 程序控制結(jié)構(gòu)程序控制結(jié)構(gòu) Page 19 if語(yǔ)句舉例語(yǔ)句舉例2解法二:用多個(gè)單分支解法二:用多個(gè)單分支if 語(yǔ)句語(yǔ)句#include int main ( ) int x,y; scanf(%d,&x); if(x0) y=1; if(x=0) y=0; if(x0) y=-1; printf(x=%d,y=%dn,x,y); retu

15、rn 0; C語(yǔ)言語(yǔ)言程序設(shè)計(jì)程序設(shè)計(jì) 第第4 4章章 程序控制結(jié)構(gòu)程序控制結(jié)構(gòu) Page 20 if語(yǔ)句舉例語(yǔ)句舉例2解法三:用雙分支解法三:用雙分支if 語(yǔ)句的嵌套語(yǔ)句的嵌套 #include int main ( ) int x,y; scanf(%d,&x); if (x=0) if (x0) y=1; else y=0; else y=-1; printf(x=%d,y=%dn,x,y); return 0;這是一個(gè)這是一個(gè)嵌套結(jié)構(gòu)嵌套結(jié)構(gòu) C語(yǔ)言語(yǔ)言程序設(shè)計(jì)程序設(shè)計(jì) 第第4 4章章 程序控制結(jié)構(gòu)程序控制結(jié)構(gòu) Page 21 if 語(yǔ)句的嵌套語(yǔ)句的嵌套 在在if 語(yǔ)句中又包含

16、一個(gè)或多個(gè)語(yǔ)句中又包含一個(gè)或多個(gè)if 語(yǔ)句語(yǔ)句,稱為稱為if 語(yǔ)句語(yǔ)句的嵌套的嵌套 一般形式一般形式: if (條件條件1 ) if (條件條件2 ) 語(yǔ)句語(yǔ)句1 else 語(yǔ)句語(yǔ)句2 else if (條件條件3) 語(yǔ)句語(yǔ)句3 else 語(yǔ)句語(yǔ)句4if 與與 else 的配對(duì)關(guān)系:從最內(nèi)層開始的配對(duì)關(guān)系:從最內(nèi)層開始, else 總是與總是與它上面最近的且尚未配對(duì)的它上面最近的且尚未配對(duì)的 if 配對(duì)。配對(duì)。 為了使邏輯關(guān)系清晰,為了使邏輯關(guān)系清晰,建議采用建議采用“分層縮進(jìn)書分層縮進(jìn)書寫格式寫格式”。 C語(yǔ)言語(yǔ)言程序設(shè)計(jì)程序設(shè)計(jì) 第第4 4章章 程序控制結(jié)構(gòu)程序控制結(jié)構(gòu) Page 22 在

17、內(nèi)嵌在內(nèi)嵌if語(yǔ)句中要注意配對(duì)關(guān)系語(yǔ)句中要注意配對(duì)關(guān)系 結(jié)合右圖,觀察以下程序:結(jié)合右圖,觀察以下程序:#include int main ( ) int x,y; scanf(%d,&x); y= -1; if (x!=0) if (x0) y=1; else y=0; printf(x=%d,y=%dn,x,y); 輸入輸入 0 輸出結(jié)果:輸出結(jié)果:x=0,y= -1真正的配對(duì)真正的配對(duì)結(jié)果錯(cuò)誤結(jié)果錯(cuò)誤假假y=1真真 x!=0 x!=0 x0 x0y=-1y=0真真假假 C語(yǔ)言語(yǔ)言程序設(shè)計(jì)程序設(shè)計(jì) 第第4 4章章 程序控制結(jié)構(gòu)程序控制結(jié)構(gòu) Page 23 在內(nèi)嵌在內(nèi)嵌if語(yǔ)句中要注

18、意配對(duì)關(guān)系語(yǔ)句中要注意配對(duì)關(guān)系在內(nèi)嵌在內(nèi)嵌if語(yǔ)句中加花括號(hào)改變配對(duì)關(guān)系語(yǔ)句中加花括號(hào)改變配對(duì)關(guān)系#include int main ( ) int x,y; scanf(%d,&x); y=-1; if (x!=0) if (x0) y=1; else y=0; printf(x=%d,y=%dn,x,y); return 0;結(jié)論:如果內(nèi)層結(jié)論:如果內(nèi)層if 語(yǔ)句為單邊結(jié)構(gòu),要加花括號(hào)語(yǔ)句為單邊結(jié)構(gòu),要加花括號(hào)花括號(hào)改變配花括號(hào)改變配對(duì)關(guān)系對(duì)關(guān)系結(jié)果正確結(jié)果正確正確配對(duì)正確配對(duì) C語(yǔ)言語(yǔ)言程序設(shè)計(jì)程序設(shè)計(jì) 第第4 4章章 程序控制結(jié)構(gòu)程序控制結(jié)構(gòu) Page 24 條件運(yùn)算符的應(yīng)用條

19、件運(yùn)算符的應(yīng)用例:輸入一個(gè)字符,判斷它是否大寫字母,若是例:輸入一個(gè)字符,判斷它是否大寫字母,若是將其轉(zhuǎn)換為小寫;否則原樣輸出。將其轉(zhuǎn)換為小寫;否則原樣輸出。 #include int main( ) char ch ; scanf(%c,&ch); ch=(ch=A & ch=Z)? ch+32:ch; printf (%cn,ch) return 0; C語(yǔ)言語(yǔ)言程序設(shè)計(jì)程序設(shè)計(jì) 第第4 4章章 程序控制結(jié)構(gòu)程序控制結(jié)構(gòu) Page 25 switch 語(yǔ)句(多分支選擇語(yǔ)句,開關(guān)語(yǔ)句)語(yǔ)句(多分支選擇語(yǔ)句,開關(guān)語(yǔ)句) switch 語(yǔ)句的格式語(yǔ)句的格式: switch (表達(dá)

20、式表達(dá)式) case 常量表達(dá)式常量表達(dá)式1 : 語(yǔ)句語(yǔ)句1; break; case 常量表達(dá)式常量表達(dá)式2 : 語(yǔ)句語(yǔ)句2; break; case 常量表達(dá)式常量表達(dá)式3 : 語(yǔ)句語(yǔ)句3; break; case 常量表達(dá)式常量表達(dá)式n : 語(yǔ)句語(yǔ)句n;break; default : 語(yǔ)句語(yǔ)句n+1 執(zhí)行過(guò)程:執(zhí)行過(guò)程: 先計(jì)算先計(jì)算switch后面表達(dá)式的值,后面表達(dá)式的值,如果與某個(gè)如果與某個(gè)case后的常量值相等,則執(zhí)行其后后的常量值相等,則執(zhí)行其后的語(yǔ)句;若所有的語(yǔ)句;若所有case中的常量值都不能與之匹中的常量值都不能與之匹配,則執(zhí)行配,則執(zhí)行default后的語(yǔ)句后的語(yǔ)句n

21、+1。根據(jù)此表達(dá)式的根據(jù)此表達(dá)式的值找入口值找入口一般為常量,一般為常量,VC要要求為求為int或或char型型 C語(yǔ)言語(yǔ)言程序設(shè)計(jì)程序設(shè)計(jì) 第第4 4章章 程序控制結(jié)構(gòu)程序控制結(jié)構(gòu) Page 26 switch 語(yǔ)句流程圖(無(wú)語(yǔ)句流程圖(無(wú)break語(yǔ)句)語(yǔ)句)注意注意: 執(zhí)行完入口語(yǔ)句后執(zhí)行完入口語(yǔ)句后,則自動(dòng)轉(zhuǎn)到下一個(gè)則自動(dòng)轉(zhuǎn)到下一個(gè)case后面的語(yǔ)句執(zhí)行;后面的語(yǔ)句執(zhí)行;表達(dá)式表達(dá)式語(yǔ)句語(yǔ)句1語(yǔ)句語(yǔ)句2語(yǔ)句語(yǔ)句3語(yǔ)句語(yǔ)句n語(yǔ)句語(yǔ)句n+1=常量常量3=常量常量2=常量常量1=其它其它=常量常量n C語(yǔ)言語(yǔ)言程序設(shè)計(jì)程序設(shè)計(jì) 第第4 4章章 程序控制結(jié)構(gòu)程序控制結(jié)構(gòu) Page 27 swi

22、tch 語(yǔ)句流程圖(有語(yǔ)句流程圖(有break語(yǔ)句)語(yǔ)句)注意注意: 如果語(yǔ)句中有如果語(yǔ)句中有break;,則執(zhí)行完一個(gè)入,則執(zhí)行完一個(gè)入口語(yǔ)句后跳出口語(yǔ)句后跳出switch選擇結(jié)構(gòu)。選擇結(jié)構(gòu)。 表達(dá)式表達(dá)式語(yǔ)句語(yǔ)句1語(yǔ)句語(yǔ)句2語(yǔ)句語(yǔ)句3語(yǔ)句語(yǔ)句n語(yǔ)句語(yǔ)句n+1=常量常量3=常量常量2=常量常量1=其它其它=常量常量n C語(yǔ)言語(yǔ)言程序設(shè)計(jì)程序設(shè)計(jì) 第第4 4章章 程序控制結(jié)構(gòu)程序控制結(jié)構(gòu) Page 28 switch語(yǔ)句舉例語(yǔ)句舉例例:輸入成績(jī)等級(jí)例:輸入成績(jī)等級(jí),打印出百分制分?jǐn)?shù)段。打印出百分制分?jǐn)?shù)段。#include int main( ) char c; printf(Please en

23、ter a charn); c=getchar( ); c=(c=a & c=z)?c-32:c; switch(c) case A : printf(“90100n); break; case B : printf(“8089n); break; case C : printf(“7079n); break; case D : printf(“6069n); break; case E : printf(60n); break; default : printf(errorn); return 0;注意:注意:case后面應(yīng)為字后面應(yīng)為字符常量符常量A、B等,不等,不能為變量能為變量

24、A、B等。等。 C語(yǔ)言語(yǔ)言程序設(shè)計(jì)程序設(shè)計(jì) 第第4 4章章 程序控制結(jié)構(gòu)程序控制結(jié)構(gòu) Page 29 switch語(yǔ)句舉例(無(wú)語(yǔ)句舉例(無(wú)break語(yǔ)句的效果)語(yǔ)句的效果)例例4.9:輸入成績(jī)等級(jí):輸入成績(jī)等級(jí),打印出百分制分?jǐn)?shù)段。打印出百分制分?jǐn)?shù)段。#include int main( ) char c; printf(Please enter a charn); c=getchar( ); c=(c=a & c=z)?c-32:c; switch(c) case A : printf(“90100n); case B : printf(“8089n); case C : print

25、f(“7079n); case D : printf(“6069n); case E : printf(60n); default : printf(errorn); return 0;去掉去掉break語(yǔ)句,程序語(yǔ)句,程序運(yùn)行后,從鍵盤上輸入運(yùn)行后,從鍵盤上輸入b,則程序運(yùn)行,則程序運(yùn)行的順序和結(jié)果如下:的順序和結(jié)果如下: 8089 70796069 60 error C語(yǔ)言語(yǔ)言程序設(shè)計(jì)程序設(shè)計(jì) 第第4 4章章 程序控制結(jié)構(gòu)程序控制結(jié)構(gòu) Page 30 switch 語(yǔ)句使用說(shuō)明語(yǔ)句使用說(shuō)明 各個(gè)分支中如果沒有各個(gè)分支中如果沒有break語(yǔ)句,則執(zhí)行了相語(yǔ)句,則執(zhí)行了相應(yīng)的操作后,會(huì)自動(dòng)轉(zhuǎn)到

26、下一個(gè)應(yīng)的操作后,會(huì)自動(dòng)轉(zhuǎn)到下一個(gè)case后面的語(yǔ)后面的語(yǔ)句執(zhí)行。句執(zhí)行。case后面的常量值不能相同。后面的常量值不能相同。各個(gè)分支中允許有多個(gè)語(yǔ)句,可以不用各個(gè)分支中允許有多個(gè)語(yǔ)句,可以不用 括起括起來(lái)。來(lái)。各個(gè)各個(gè)case和和default分支的順序可以改變,但分支的順序可以改變,但default總是最后考慮的入口。如果各個(gè)分支中總是最后考慮的入口。如果各個(gè)分支中均有均有break語(yǔ)句,各個(gè)分支的出現(xiàn)次序不影響語(yǔ)句,各個(gè)分支的出現(xiàn)次序不影響執(zhí)行結(jié)果。執(zhí)行結(jié)果??梢允苟鄠€(gè)可以使多個(gè)case共用同一組執(zhí)行語(yǔ)句。共用同一組執(zhí)行語(yǔ)句。 C語(yǔ)言語(yǔ)言程序設(shè)計(jì)程序設(shè)計(jì) 第第4 4章章 程序控制結(jié)構(gòu)程序

27、控制結(jié)構(gòu) Page 31 例例4.10 輸入百分制成績(jī),要求輸出相應(yīng)的五級(jí)制成績(jī)。輸入百分制成績(jī),要求輸出相應(yīng)的五級(jí)制成績(jī)。百分制成績(jī)與五級(jí)制成績(jī)之間的轉(zhuǎn)換標(biāo)準(zhǔn)為:百分制成績(jī)與五級(jí)制成績(jī)之間的轉(zhuǎn)換標(biāo)準(zhǔn)為:90分以分以上為上為“A”,80-89分為分為“B”,70-79分為分為“C”,60-69分分為為“D”,60分以下為分以下為“E”。#include int main ( ) int score; scanf(%d,&score); switch (score/10) case 10: case 9: printf(An);break; case 8: printf(Bn);brea

28、k; case 7: printf(Cn);break; case 6: printf(Dn);break; default: printf(En); return 0; switch 語(yǔ)句舉例語(yǔ)句舉例 C語(yǔ)言語(yǔ)言程序設(shè)計(jì)程序設(shè)計(jì) 第第4 4章章 程序控制結(jié)構(gòu)程序控制結(jié)構(gòu) Page 32 上題也可用多分支上題也可用多分支if語(yǔ)句實(shí)現(xiàn),見課本語(yǔ)句實(shí)現(xiàn),見課本P71例例4.7。#include int main ( ) int score; scanf(%d,&score); if (score=90) printf(An); else if (score=80) printf(Bn);

29、else if (score=70) printf(Cn); else if (score=60) printf(Dn); else printf(En); return 0; C語(yǔ)言語(yǔ)言程序設(shè)計(jì)程序設(shè)計(jì) 第第4 4章章 程序控制結(jié)構(gòu)程序控制結(jié)構(gòu) Page 33 選擇結(jié)構(gòu)程序設(shè)計(jì)舉例選擇結(jié)構(gòu)程序設(shè)計(jì)舉例 判斷字母、數(shù)字判斷字母、數(shù)字 分段函數(shù)值的計(jì)算分段函數(shù)值的計(jì)算 三個(gè)數(shù)中求最大數(shù)三個(gè)數(shù)中求最大數(shù) 求三角形面積求三角形面積判斷閏年判斷閏年計(jì)算器程序計(jì)算器程序求一元二次方程的根求一元二次方程的根 對(duì)三個(gè)數(shù)進(jìn)行升序排序?qū)θ齻€(gè)數(shù)進(jìn)行升序排序 C語(yǔ)言語(yǔ)言程序設(shè)計(jì)程序設(shè)計(jì) 第第4 4章章 程序控制結(jié)構(gòu)

30、程序控制結(jié)構(gòu) Page 34 例例1:從鍵盤上輸入一個(gè)字符判斷是數(shù)字、字母:從鍵盤上輸入一個(gè)字符判斷是數(shù)字、字母或其它字符。課本或其它字符。課本P81 例例4.13 #include int main( ) char c; c=getchar( ) ; if ( c=A&c=a & c=0 & c=9 ) printf(digitn); else printf(othern); return 0; C語(yǔ)言語(yǔ)言程序設(shè)計(jì)程序設(shè)計(jì) 第第4 4章章 程序控制結(jié)構(gòu)程序控制結(jié)構(gòu) Page 35 例例2:計(jì)算分段函數(shù)。課本:計(jì)算分段函數(shù)。課本P73 例例4.8#include int

31、 main ( ) float x,y; scanf(%f,&x); if(x0) y=0; else if(xmax,則,則max改為改為b; v 將將c與與max進(jìn)行比較,若進(jìn)行比較,若cmax,則,則max改為改為c. 于于是變量是變量max中存放的就是三個(gè)數(shù)中的最大數(shù)。中存放的就是三個(gè)數(shù)中的最大數(shù)。 C語(yǔ)言語(yǔ)言程序設(shè)計(jì)程序設(shè)計(jì) 第第4 4章章 程序控制結(jié)構(gòu)程序控制結(jié)構(gòu) Page 37 解解1) #include int main( ) int a,b,c,t; scanf(%d,%d,%d, &a,&b,&c); if(ab) t=a;a=b;b=t;

32、if(ac) t=a;a=c;c=t; printf(“max=%dn,a); return 0;解解2) #include int main( ) int a,b,c,max; scanf(%d,%d,%d, &a,&b,&c); max=a; if(bmax) max=b; if(cmax) max=c; printf(“max=%dn,max); return 0; C語(yǔ)言語(yǔ)言程序設(shè)計(jì)程序設(shè)計(jì) 第第4 4章章 程序控制結(jié)構(gòu)程序控制結(jié)構(gòu) Page 38 例:對(duì)三個(gè)數(shù)進(jìn)行升序排序例:對(duì)三個(gè)數(shù)進(jìn)行升序排序 思路:思路:1.先將先將a、b進(jìn)行比較,將二者之中的較小者放入進(jìn)

33、行比較,將二者之中的較小者放入變量變量a中,較大者放入中,較大者放入b中,這樣中,這樣a中就是中就是a、b中較小數(shù);中較小數(shù);2.再將變量再將變量a與變量與變量c進(jìn)行比較,將進(jìn)行比較,將a、c中的較小中的較小者放到者放到a中,較大者放到中,較大者放到c中,這樣,變量中,這樣,變量a中存中存放的就一定是三個(gè)數(shù)中的最小數(shù);放的就一定是三個(gè)數(shù)中的最小數(shù);3.最后將最后將b和和c進(jìn)行比較,將二者之中較小者放入進(jìn)行比較,將二者之中較小者放入變量變量b中,較大者放入變量中,較大者放入變量c中,就完成了對(duì)三中,就完成了對(duì)三個(gè)數(shù)的升序排序。個(gè)數(shù)的升序排序。 也就是說(shuō),對(duì)三個(gè)數(shù)進(jìn)行排序,需要進(jìn)行也就是說(shuō),對(duì)三個(gè)

34、數(shù)進(jìn)行排序,需要進(jìn)行3次比較。次比較。 C語(yǔ)言語(yǔ)言程序設(shè)計(jì)程序設(shè)計(jì) 第第4 4章章 程序控制結(jié)構(gòu)程序控制結(jié)構(gòu) Page 39 #include int main( ) int a,b,c,t; scanf(%d,%d,%d,&a,&b,&c); if(ab) t=a;a=b;b=t; if(ac) t=a;a=c;c=t; if(bc) t=b;b=c;c=t; printf(%d,%d,%dn,a,b,c); return 0; C語(yǔ)言語(yǔ)言程序設(shè)計(jì)程序設(shè)計(jì) 第第4 4章章 程序控制結(jié)構(gòu)程序控制結(jié)構(gòu) Page 40 例例4 輸入三角形三邊長(zhǎng),求三角形面積。課本輸入三角形

35、三邊長(zhǎng),求三角形面積。課本P82 例例4.14#include #include int main() float a,b,c,s,area; scanf(%f,%f,%f,&a,&b,&c); if ( a+bc & a+cb & b+ca ) s=(a+b+c)/2; area=sqrt(s*(s-a)*(s-b)*(s-c); printf(area=%7.2fn,area); else printf(Not a triangle.n); return 0; C語(yǔ)言語(yǔ)言程序設(shè)計(jì)程序設(shè)計(jì) 第第4 4章章 程序控制結(jié)構(gòu)程序控制結(jié)構(gòu) Page 41 例例

36、5:判斷閏年算法,閏年的條件:判斷閏年算法,閏年的條件:能被能被4整除,整除,但不能被但不能被100整除;整除;能被能被100整除,又能被整除,又能被400整除。整除。 否否輸出輸出year不不是閏年是閏年 是是year%4!=0 year%100!=0 year%400!=0 輸出輸出year是是閏年閏年 輸出輸出year不不是閏年是閏年 輸出輸出year是是閏年閏年 是是是是否否否否 C語(yǔ)言語(yǔ)言程序設(shè)計(jì)程序設(shè)計(jì) 第第4 4章章 程序控制結(jié)構(gòu)程序控制結(jié)構(gòu) Page 42 解解1)用多邊)用多邊if語(yǔ)句實(shí)現(xiàn)語(yǔ)句實(shí)現(xiàn) #include int main() int year; scanf(%d,

37、&year); if (year%4!=0) printf (%d is not a leap yearn,year); else if (year%100!=0) printf (%d is a leap yearn,year); else if (year%400!=0) printf (%d is not a leap yearn,year); else printf (%d is a leap yearn,year); return 0; C語(yǔ)言語(yǔ)言程序設(shè)計(jì)程序設(shè)計(jì) 第第4 4章章 程序控制結(jié)構(gòu)程序控制結(jié)構(gòu) Page 43 解解2)多邊)多邊if語(yǔ)句語(yǔ)句+用變量用變量leap標(biāo)

38、識(shí)是否閏年標(biāo)識(shí)是否閏年 #include int main( ) int year,leap; scanf(%d,&year); if (year%4!=0) leap=0; else if (year%100!=0) leap=1; else if (year%400!=0) leap=0; else leap=1; if (leap) printf(%d is a leap yearn,year); else printf(%d is not a leap yearn,year); return 0; C語(yǔ)言語(yǔ)言程序設(shè)計(jì)程序設(shè)計(jì) 第第4 4章章 程序控制結(jié)構(gòu)程序控制結(jié)構(gòu) Page

39、44 解解3)直接用復(fù)合條件判斷閏年)直接用復(fù)合條件判斷閏年 #include int main( ) int year,leap; scanf(%d,&year); if (year%4=0&year%100!=0) | (year%400=0) printf(%d is a leap yearn,year); else printf(%d is not a leap yearn,year); return 0; C語(yǔ)言語(yǔ)言程序設(shè)計(jì)程序設(shè)計(jì) 第第4 4章章 程序控制結(jié)構(gòu)程序控制結(jié)構(gòu) Page 45 例例6 計(jì)算器程序。用戶輸入運(yùn)算數(shù)和四則運(yùn)算符,輸出運(yùn)計(jì)算器程序。用戶輸入運(yùn)算

40、數(shù)和四則運(yùn)算符,輸出運(yùn)算結(jié)果。當(dāng)輸入運(yùn)算符不是算結(jié)果。當(dāng)輸入運(yùn)算符不是“+”、“-”、“*”或或“/”時(shí)時(shí)提示出錯(cuò),當(dāng)輸入除數(shù)為提示出錯(cuò),當(dāng)輸入除數(shù)為0時(shí)也提示出錯(cuò)。時(shí)也提示出錯(cuò)。課本課本P80 例例4.12#include #include int main() float a,b; char c; scanf(%f%c%f,&a,&c,&b); switch(c) case +: printf(=%fn,a+b);break; case -: printf(=%fn,a-b);break; case *: printf(=%fn,a*b);break; case /

41、: if( b=0 ) printf(Division by zero!n); else printf(=%fn,a/b); break; default: printf(Operator error!n); return 0; C語(yǔ)言語(yǔ)言程序設(shè)計(jì)程序設(shè)計(jì) 第第4 4章章 程序控制結(jié)構(gòu)程序控制結(jié)構(gòu) Page 46 例例7 求一元二次方程的根算法。課本求一元二次方程的根算法。課本P85 例例4.17輸入輸入 a,b,c a=0 輸出輸出“非非二次方程二次方程”disc=b2-4ac disc=0 輸出兩個(gè)實(shí)根輸出兩個(gè)實(shí)根 輸出兩個(gè)復(fù)根輸出兩個(gè)復(fù)根 C語(yǔ)言語(yǔ)言程序設(shè)計(jì)程序設(shè)計(jì) 第第4 4章章 程序

42、控制結(jié)構(gòu)程序控制結(jié)構(gòu) Page 47 #include int main( ) float a,b,c,disc,x1,x2,real,imag; scanf(%f,%f,%f,&a,&b,&c); if( fabs(a)=1e-6) printf(“not a quadraticn); else disc=b*b-4*a*c; if( fabs(disc)0) x1=(-b+sqrt(disc)/(2*a); x2=(-b-sqrt(disc)/(2*a); printf(distinct real roots: %8.4f and %8.4f, x1,x2); el

43、se real=-b/(2*a); imag=sqrt(-disc)/(2*a); printf(complex roots: n); printf(%8.4f+%8.4fin,real,imag); printf(%8.4f-%8.4fin,real,imag); return 0;表示表示a等于等于0表示表示disc等于等于0注意注意a= =0 這種這種表示不夠準(zhǔn)確!表示不夠準(zhǔn)確! C語(yǔ)言語(yǔ)言程序設(shè)計(jì)程序設(shè)計(jì) 第第4 4章章 程序控制結(jié)構(gòu)程序控制結(jié)構(gòu) Page 48 4.4 循環(huán)結(jié)構(gòu)循環(huán)結(jié)構(gòu)C語(yǔ)言的循環(huán)結(jié)構(gòu)共有下列三種:語(yǔ)言的循環(huán)結(jié)構(gòu)共有下列三種:v while 語(yǔ)句語(yǔ)句 v do-whi

44、le 語(yǔ)句語(yǔ)句 v for 語(yǔ)句語(yǔ)句 C語(yǔ)言語(yǔ)言程序設(shè)計(jì)程序設(shè)計(jì) 第第4 4章章 程序控制結(jié)構(gòu)程序控制結(jié)構(gòu) Page 49 4.4 循環(huán)結(jié)構(gòu)循環(huán)結(jié)構(gòu)舉例舉例 求求1100之間所有整數(shù)的和之間所有整數(shù)的和 開始開始0sum1ii=100sum+isumi+1i否否是是輸出輸出sum的值的值;開始開始0sum1ii=100sum+isumi+1i否否是是輸出輸出sum的值的值;當(dāng)當(dāng)型型循循環(huán)環(huán)直直到到型型循循環(huán)環(huán) C語(yǔ)言語(yǔ)言程序設(shè)計(jì)程序設(shè)計(jì) 第第4 4章章 程序控制結(jié)構(gòu)程序控制結(jié)構(gòu) Page 50 while 語(yǔ)句語(yǔ)句 格式:格式: while (表達(dá)式表達(dá)式) 語(yǔ)句語(yǔ)句 語(yǔ)句語(yǔ)句循環(huán)體循環(huán)體假假

45、(0)真真(非非0)表達(dá)式表達(dá)式注:循環(huán)體可能一注:循環(huán)體可能一次也不執(zhí)行。次也不執(zhí)行。當(dāng)表達(dá)式為真時(shí)當(dāng)表達(dá)式為真時(shí) 語(yǔ)句語(yǔ)句 (循環(huán)體)(循環(huán)體) C語(yǔ)言語(yǔ)言程序設(shè)計(jì)程序設(shè)計(jì) 第第4 4章章 程序控制結(jié)構(gòu)程序控制結(jié)構(gòu) Page 51 while 語(yǔ)句語(yǔ)句例例4.18 用用while語(yǔ)句求語(yǔ)句求1100之間整數(shù)和之間整數(shù)和#include int main( ) int i,sum; sum=0; i=1; while( i=100) sum=sum+i; i+; printf(i=%d,sum=%dn,i,sum); return 0;語(yǔ)句語(yǔ)句sum=sum+i;和語(yǔ)句和語(yǔ)句i+;能否能否改

46、變位置?程序的哪些地方應(yīng)作改變位置?程序的哪些地方應(yīng)作相應(yīng)的改動(dòng)?相應(yīng)的改動(dòng)? 如果在如果在while語(yǔ)句之前對(duì)變量語(yǔ)句之前對(duì)變量sum賦初值為賦初值為1,是否可以?程序的哪,是否可以?程序的哪些地方應(yīng)作相應(yīng)的改動(dòng)?些地方應(yīng)作相應(yīng)的改動(dòng)?循循環(huán)環(huán) C語(yǔ)言語(yǔ)言程序設(shè)計(jì)程序設(shè)計(jì) 第第4 4章章 程序控制結(jié)構(gòu)程序控制結(jié)構(gòu) Page 52 while 語(yǔ)句語(yǔ)句例例4.19 根據(jù)公式計(jì)算圓周率根據(jù)公式計(jì)算圓周率的值。的值。部分程序:部分程序:int i=1,n;double pi=0;scanf(%d,&n);while(i=n) pi+=1.0/(i*i); i+; pi=sqrt(pi*6)

47、;2222n1312116 C語(yǔ)言語(yǔ)言程序設(shè)計(jì)程序設(shè)計(jì) 第第4 4章章 程序控制結(jié)構(gòu)程序控制結(jié)構(gòu) Page 53 do-while 語(yǔ)句語(yǔ)句 格式:格式:do 語(yǔ)句語(yǔ)句 while (表達(dá)式表達(dá)式) ; 語(yǔ)句語(yǔ)句循環(huán)體循環(huán)體假假(0)真真(非非0)表達(dá)式表達(dá)式 循環(huán)體循環(huán)體當(dāng)表達(dá)式為真當(dāng)表達(dá)式為真注:循環(huán)體至少執(zhí)行一次。注:循環(huán)體至少執(zhí)行一次。用用do-while語(yǔ)句實(shí)語(yǔ)句實(shí)現(xiàn)直到現(xiàn)直到循環(huán)循環(huán) C語(yǔ)言語(yǔ)言程序設(shè)計(jì)程序設(shè)計(jì) 第第4 4章章 程序控制結(jié)構(gòu)程序控制結(jié)構(gòu) Page 54 do-while 語(yǔ)句語(yǔ)句例例4.18 用用do-while語(yǔ)句求語(yǔ)句求100以內(nèi)正整數(shù)的和以內(nèi)正整數(shù)的和#inc

48、lude int main( ) int i,sum; sum=0; i=1; do sum=sum+i; i+; while( i1e-6);pi=pi*4;printf(pi=%10.6fn,pi);71513114 C語(yǔ)言語(yǔ)言程序設(shè)計(jì)程序設(shè)計(jì) 第第4 4章章 程序控制結(jié)構(gòu)程序控制結(jié)構(gòu) Page 56 for 語(yǔ)句語(yǔ)句 格式格式: for (表達(dá)式表達(dá)式1;表達(dá)式表達(dá)式2;表達(dá)式表達(dá)式3) 語(yǔ)句語(yǔ)句 語(yǔ)句語(yǔ)句 (循環(huán)體循環(huán)體)假假(0)真真(非非0)表 達(dá) 式表 達(dá) 式2求解表達(dá)式求解表達(dá)式1求解表達(dá)式求解表達(dá)式3實(shí)質(zhì)是當(dāng)型循環(huán)!實(shí)質(zhì)是當(dāng)型循環(huán)! C語(yǔ)言語(yǔ)言程序設(shè)計(jì)程序設(shè)計(jì) 第第4 4章章

49、 程序控制結(jié)構(gòu)程序控制結(jié)構(gòu) Page 57 for 語(yǔ)句語(yǔ)句在在for語(yǔ)句中,通常表達(dá)式語(yǔ)句中,通常表達(dá)式1用來(lái)為循環(huán)用來(lái)為循環(huán)變量賦初值;表達(dá)式變量賦初值;表達(dá)式2一般用來(lái)設(shè)置循環(huán)一般用來(lái)設(shè)置循環(huán)條件;表達(dá)式條件;表達(dá)式3一般用于循環(huán)變量增值。一般用于循環(huán)變量增值。for 語(yǔ)句的最常用格式:語(yǔ)句的最常用格式: for (for (循環(huán)變量賦初值循環(huán)變量賦初值; ;循環(huán)條件循環(huán)條件; ;循環(huán)變量增值循環(huán)變量增值) ) 語(yǔ)句語(yǔ)句 C語(yǔ)言語(yǔ)言程序設(shè)計(jì)程序設(shè)計(jì) 第第4 4章章 程序控制結(jié)構(gòu)程序控制結(jié)構(gòu) Page 58 for 語(yǔ)句語(yǔ)句例例4.18 用用for語(yǔ)句求語(yǔ)句求1100之間的整數(shù)之和之間的整

50、數(shù)之和#include int main( ) int i,sum; sum=0; for ( i=1; i=100; i+ ) sum=sum+i; printf(i=%d,sum=%dn,i,sum); return 0; C語(yǔ)言語(yǔ)言程序設(shè)計(jì)程序設(shè)計(jì) 第第4 4章章 程序控制結(jié)構(gòu)程序控制結(jié)構(gòu) Page 59 for 語(yǔ)句語(yǔ)句例例4.26 統(tǒng)計(jì)從鍵盤輸入一行字符的個(gè)數(shù),以回車統(tǒng)計(jì)從鍵盤輸入一行字符的個(gè)數(shù),以回車結(jié)束。結(jié)束。#include int main() int n; char c; printf(Input a string: n); for(n=0;(c=getchar()!=n;

51、n+); printf(%d,n); return 0; C語(yǔ)言語(yǔ)言程序設(shè)計(jì)程序設(shè)計(jì) 第第4 4章章 程序控制結(jié)構(gòu)程序控制結(jié)構(gòu) Page 60 for 語(yǔ)句語(yǔ)句例例4.27 編程輸出編程輸出“斐波那契數(shù)列斐波那契數(shù)列”的前的前20項(xiàng)。項(xiàng)。#includeint main() int i,x1=1,x2=1; for(i=1;i=10;i+) printf(%10d %10d ,x1,x2); if(i%2=0) printf(n); x1=x1+x2; x2=x2+x1; return 0; C語(yǔ)言語(yǔ)言程序設(shè)計(jì)程序設(shè)計(jì) 第第4 4章章 程序控制結(jié)構(gòu)程序控制結(jié)構(gòu) Page 61 for 語(yǔ)句的靈

52、活使用語(yǔ)句的靈活使用 循環(huán)之前的賦初值語(yǔ)句可以放在表達(dá)式循環(huán)之前的賦初值語(yǔ)句可以放在表達(dá)式1中,中,中間用逗號(hào)間隔。中間用逗號(hào)間隔。 表達(dá)式表達(dá)式3可缺?。ǖ淝暗姆痔?hào)不能省略),可缺省(但其前的分號(hào)不能省略),將表達(dá)式將表達(dá)式3作為語(yǔ)句放到循環(huán)體的末尾。作為語(yǔ)句放到循環(huán)體的末尾。循環(huán)體中的內(nèi)容可以放在表達(dá)式循環(huán)體中的內(nèi)容可以放在表達(dá)式3中,但要在中,但要在for語(yǔ)句圓括號(hào)的后面加一個(gè)分號(hào)。語(yǔ)句圓括號(hào)的后面加一個(gè)分號(hào)。 表達(dá)式表達(dá)式1、表達(dá)式、表達(dá)式3可同時(shí)缺省,但表達(dá)式可同時(shí)缺省,但表達(dá)式2前前后的分號(hào)都不能省略。后的分號(hào)都不能省略。 C語(yǔ)言語(yǔ)言程序設(shè)計(jì)程序設(shè)計(jì) 第第4 4章章 程序控制結(jié)構(gòu)

53、程序控制結(jié)構(gòu) Page 62 for 語(yǔ)句的靈活使用語(yǔ)句的靈活使用表達(dá)式表達(dá)式2可缺省,放在循環(huán)體之中,但可缺省,放在循環(huán)體之中,但for語(yǔ)句語(yǔ)句中的兩個(gè)分號(hào)都不能省略;且判斷與退出放在中的兩個(gè)分號(hào)都不能省略;且判斷與退出放在循環(huán)體中。循環(huán)體中。 int i,sum; sum=0; for ( i=1; ; i+) if ( i=100 ) sum=sum+i; else break; /*退出循環(huán)退出循環(huán)*/ printf(i=%d,sum=%dn,i,sum); return 0; C語(yǔ)言語(yǔ)言程序設(shè)計(jì)程序設(shè)計(jì) 第第4 4章章 程序控制結(jié)構(gòu)程序控制結(jié)構(gòu) Page 63 幾種循環(huán)的比較幾種循環(huán)

54、的比較 1)while循環(huán)、循環(huán)、do while循環(huán)、循環(huán)、for循環(huán)都可以用循環(huán)都可以用來(lái)處理同一個(gè)問(wèn)題,一般可以互相代替。來(lái)處理同一個(gè)問(wèn)題,一般可以互相代替。2)在)在while和和do-while循環(huán)的循環(huán)體中,應(yīng)包括循環(huán)的循環(huán)體中,應(yīng)包括使循環(huán)趨于結(jié)束的語(yǔ)句。使循環(huán)趨于結(jié)束的語(yǔ)句。3)用)用while和和do-while循環(huán)時(shí),循環(huán)變量初始化循環(huán)時(shí),循環(huán)變量初始化的操作應(yīng)在的操作應(yīng)在while和和do-while語(yǔ)句之前完成,語(yǔ)句之前完成,而而for語(yǔ)句可以在表達(dá)式語(yǔ)句可以在表達(dá)式1中實(shí)現(xiàn)循環(huán)變量的中實(shí)現(xiàn)循環(huán)變量的初始化。初始化。4)三種循環(huán)均可用)三種循環(huán)均可用break語(yǔ)句跳出循

55、環(huán),用語(yǔ)句跳出循環(huán),用continue語(yǔ)句結(jié)束本輪循環(huán)。語(yǔ)句結(jié)束本輪循環(huán)。5)for語(yǔ)句功能最強(qiáng)。語(yǔ)句功能最強(qiáng)。 C語(yǔ)言語(yǔ)言程序設(shè)計(jì)程序設(shè)計(jì) 第第4 4章章 程序控制結(jié)構(gòu)程序控制結(jié)構(gòu) Page 64 break語(yǔ)句和語(yǔ)句和continue語(yǔ)句語(yǔ)句 break 語(yǔ)句語(yǔ)句v格式格式: break;v功能功能: 提前結(jié)束循環(huán)提前結(jié)束循環(huán),從循環(huán)體中無(wú)條件跳轉(zhuǎn)從循環(huán)體中無(wú)條件跳轉(zhuǎn)到循環(huán)語(yǔ)句后面執(zhí)行。到循環(huán)語(yǔ)句后面執(zhí)行。v可用于可用于switch語(yǔ)句和循環(huán)結(jié)構(gòu)中。語(yǔ)句和循環(huán)結(jié)構(gòu)中。continue語(yǔ)句語(yǔ)句 v格式格式: continue; v功能功能: 結(jié)束本次循環(huán)結(jié)束本次循環(huán),即在本次循環(huán)中,不再即在

56、本次循環(huán)中,不再執(zhí)行循環(huán)體中執(zhí)行循環(huán)體中continue后面的語(yǔ)句。后面的語(yǔ)句。 v只能用于循環(huán)結(jié)構(gòu)。只能用于循環(huán)結(jié)構(gòu)。 C語(yǔ)言語(yǔ)言程序設(shè)計(jì)程序設(shè)計(jì) 第第4 4章章 程序控制結(jié)構(gòu)程序控制結(jié)構(gòu) Page 65 break語(yǔ)句的使用語(yǔ)句的使用 例例4.28 將數(shù)字將數(shù)字512表示成兩個(gè)數(shù)的和,這兩個(gè)數(shù)分別為表示成兩個(gè)數(shù)的和,這兩個(gè)數(shù)分別為15和和13的倍數(shù)。的倍數(shù)。 #include int main() int i; for(i=1;i+) if(!(512-i*15)%13) break; printf(%d+%d=512n,i*15,512-i*15); return 0; !(512-i*

57、15)%13) 等價(jià)于等價(jià)于 (512-i*15)%13=0 C語(yǔ)言語(yǔ)言程序設(shè)計(jì)程序設(shè)計(jì) 第第4 4章章 程序控制結(jié)構(gòu)程序控制結(jié)構(gòu) Page 66 continue語(yǔ)句的使用語(yǔ)句的使用 例例4.29 輸出輸出100200之間所有能夠被之間所有能夠被7或或9整除的數(shù)。整除的數(shù)。 #include int main( ) int i,n=0; for(i=100;i=200;i+) if(i%7!=0)&(i%9!=0) continue; printf(%5d ,i); n+; if(n%5=0) printf(n); /*當(dāng)當(dāng)n被被5整除時(shí)換行,即一行輸出整除時(shí)換行,即一行輸出5個(gè)數(shù)個(gè)

58、數(shù)*/ return 0; C語(yǔ)言語(yǔ)言程序設(shè)計(jì)程序設(shè)計(jì) 第第4 4章章 程序控制結(jié)構(gòu)程序控制結(jié)構(gòu) Page 67 break與與continue的區(qū)別的區(qū)別分析以下兩個(gè)程序,程序一:分析以下兩個(gè)程序,程序一:#include int main()int i; for(i=1;i=10;i+) if (i%3=0) continue; printf(%3d,i); printf (n); return 0; 結(jié)果輸出結(jié)果輸出 1 2 4 5 7 8 10 C語(yǔ)言語(yǔ)言程序設(shè)計(jì)程序設(shè)計(jì) 第第4 4章章 程序控制結(jié)構(gòu)程序控制結(jié)構(gòu) Page 68 break與與continue的區(qū)別的區(qū)別程序二:程序二

59、:#include int main()int i; for(i=1;ik 假假 輸出輸出m是素?cái)?shù)是素?cái)?shù) 輸出輸出m不是素?cái)?shù)不是素?cái)?shù) 或者或者i=k+1 循環(huán)結(jié)束后根循環(huán)結(jié)束后根據(jù)據(jù) i的值來(lái)決定的值來(lái)決定m是否為素?cái)?shù)是否為素?cái)?shù) C語(yǔ)言語(yǔ)言程序設(shè)計(jì)程序設(shè)計(jì) 第第4 4章章 程序控制結(jié)構(gòu)程序控制結(jié)構(gòu) Page 71 #include #include int main( ) int m,i,k; scanf(%d,&m); k=sqrt(m); for ( i=2 ; i=k ; i+ ) if (m%i=0) break; if (i=k+1) printf(n%d是素?cái)?shù)是素?cái)?shù)n,m)

60、; else printf(n%d不是素?cái)?shù)不是素?cái)?shù)n,m); return 0;for 語(yǔ)句有兩個(gè)出口:語(yǔ)句有兩個(gè)出口:i=k+1 和和 break 不是結(jié)構(gòu)化程序!不是結(jié)構(gòu)化程序!判斷整數(shù)判斷整數(shù)m是否為素?cái)?shù)程序是否為素?cái)?shù)程序1 C語(yǔ)言語(yǔ)言程序設(shè)計(jì)程序設(shè)計(jì) 第第4 4章章 程序控制結(jié)構(gòu)程序控制結(jié)構(gòu) Page 72 判斷整數(shù)判斷整數(shù)m是否為素?cái)?shù)程序是否為素?cái)?shù)程序2 #include #include int main( ) int m,i,k; scanf(%d,&m); k=sqrt(m); for ( i=2 ; ik| m%i=0 是結(jié)構(gòu)化程序是結(jié)構(gòu)化程序 C語(yǔ)言語(yǔ)言程序設(shè)計(jì)程序設(shè)計(jì) 第第4 4章章 程序控制結(jié)構(gòu)程序控制結(jié)構(gòu) Page 73 循環(huán)嵌套循環(huán)嵌套 一個(gè)循環(huán)體中又包含了另一個(gè)完整的循環(huán)結(jié)構(gòu),一個(gè)循環(huán)體中又包含了另一個(gè)完整的循環(huán)結(jié)構(gòu),叫做循環(huán)的嵌套。叫做循環(huán)的嵌套。 三種循環(huán)結(jié)構(gòu)可以互相嵌套。三種循環(huán)結(jié)構(gòu)可以互相嵌套。 循環(huán)嵌套的執(zhí)行過(guò)程是:外循環(huán)執(zhí)行一次,內(nèi)循環(huán)嵌套的執(zhí)行過(guò)程是:外循環(huán)執(zhí)行一次,內(nèi)循環(huán)執(zhí)行一個(gè)全過(guò)程。循環(huán)執(zhí)行一個(gè)全過(guò)程。 C語(yǔ)言語(yǔ)言程序設(shè)計(jì)程序設(shè)計(jì) 第第4 4章章 程序控

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝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)論