《C語言的控制結(jié)構(gòu)》PPT課件.ppt_第1頁
《C語言的控制結(jié)構(gòu)》PPT課件.ppt_第2頁
《C語言的控制結(jié)構(gòu)》PPT課件.ppt_第3頁
《C語言的控制結(jié)構(gòu)》PPT課件.ppt_第4頁
《C語言的控制結(jié)構(gòu)》PPT課件.ppt_第5頁
已閱讀5頁,還剩73頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

1、1,第三章 控制結(jié)構(gòu),3.1C語言的基本語句,3.2數(shù)據(jù)的輸入與輸出,3.3基本控制結(jié)構(gòu)與流程控制語句,3.4選擇結(jié)構(gòu)控制,3.5多分支結(jié)構(gòu)控制語句,3.6循環(huán)控制,3.7輔助控制語句,3.8程序設(shè)計(jì)舉例,2,3.1C語言的基本語句,C語句:以“;”作分隔符,編譯后產(chǎn)生機(jī)器指令。 C語句分類 表達(dá)式語句:表達(dá)式加分號構(gòu)成。 空語句; 程序控制語句(9種): 復(fù)合語句:用括起來的一組語句。 函數(shù)調(diào)用語句:由一次函數(shù)調(diào)用加一個(gè)分號構(gòu)成 的語句。,如 total=total+limit; a=3; func( );,一般形式: 數(shù)據(jù)說明部分; 執(zhí)行語句部分; 說明: “”后不加分號 語法上和單一語句

2、相同 復(fù)合語句可嵌套,如: printf(“this is a C statement”);,3,C語言本身不提供輸入輸出語句,得由標(biāo)準(zhǔn)I/O庫函數(shù)提供。輸入輸出庫函數(shù)很豐富,可以從鍵盤、顯示器、磁盤文件和硬件端口進(jìn)行輸入或輸出操作。 本節(jié)主要介紹用于鍵盤輸入和顯示器輸出的函數(shù)。,3.2數(shù)據(jù)的輸入與輸出,4,3.2數(shù)據(jù)的輸入與輸出,3.2.1字符數(shù)據(jù)的輸入與輸出,1、字符輸入函數(shù),int getchar(void),函數(shù)功能:從輸入設(shè)備(一般為鍵盤)上輸入一個(gè)字符。它每被調(diào)用一次,就從標(biāo)準(zhǔn)輸入設(shè)備上取一個(gè)字符,返回值是該字符的ASCII編碼值??梢再x給字符變量或整型變量。,執(zhí)行g(shù)etchar(

3、)時(shí)輸入字符后要回車。,例: #include main() char c; c = getchar( ); putchar ( c ); ,輸出結(jié)果: A A,5,3.2數(shù)據(jù)的輸入與輸出,2、字符輸出函數(shù),int putchar(int),函數(shù)功能:向標(biāo)準(zhǔn)輸出設(shè)備(一般為顯示器)輸出一個(gè)字符,并返回返回概字母的ASCII碼值。參數(shù)可以是字符常量,變量或整型數(shù)。,例: #include main( ) char a, b, c; a = b; b = o; c = y; putchar(a); putchar(b); putchar(c); ,輸出結(jié)果: boy,6,3.2.2格式輸入與輸出,

4、printf函數(shù)(格式輸出函數(shù)) printf函數(shù)的一般格式為:printf(格式控制,輸出表列) “格式控制”是用雙引號括起來的字符串,它包括兩種信息 1、格式說明,由“%”和格式字符組成,格式說明總是由“%”字符開始。 2、普通字符,即需要原樣輸出的字符?!拜敵霰砹小笔切枰敵龅囊恍?shù)據(jù),可以是表達(dá)式。,3.2數(shù)據(jù)的輸入與輸出,7,格式輸入與輸出,格式字符 對不同類型的數(shù)據(jù)用不同的格式字符。有以下幾種格式字符d格式符用來輸出十進(jìn)制整數(shù)。有以下幾種用法%d,按照整數(shù)的實(shí)際長度輸出。 %md,m為指定的輸出字段的寬度。如果數(shù)據(jù)的位數(shù)小于m,則左端補(bǔ)以空格;如果大于m,則按照實(shí)際位數(shù)輸出。若a=

5、123,d=12345則: printf(“%4d,%4d”,a,b); 輸出: 123,12345 ( 代表空格) %ld,輸出長整型數(shù)據(jù)。如:long a=135790; printf(“%ld”,a); 輸出:135790 對長整型數(shù)據(jù)也可以制定字段寬度,如printf(“%8ld”,a); 輸出: 135790 o格式符以八進(jìn)制形式輸出整數(shù)。由于是將內(nèi)存單元中的各位的值按照八進(jìn)制形式輸出,因此輸出的數(shù)值不帶符號。對長整型,用“%lo”格式,同樣可以加字段寬度。,如:int a=-1; printf(“%d,%o“,a,a);,輸出結(jié)果為:-1,177777,8,格式輸入與輸出,x格式符

6、 以十六進(jìn)制形式輸出整數(shù)。同樣不會出現(xiàn)負(fù)的十六進(jìn)制數(shù)。,u格式符用來輸出unsigned型數(shù)據(jù),即無符號數(shù),以十進(jìn)制形式輸出。一個(gè)有符號整數(shù)也可以用%u格式輸出;反之,一個(gè)unsigned也可以用%d、%o、%x格式輸出。按相互賦值的規(guī)則處理。,Int a=-1;printf(“%x,%d,%o”,a,a,a);,輸出:ffff,-1,177777,Main() unsigned inrt a=65535; int b=-2; printf(“a=%d,%o,%x,%un”,a,a,a,a); printf(“a=%d,%o,%x,%un”,b,b,b,b);,運(yùn)行結(jié)果:-1,177777,f

7、fff,65535 -2,177776,fffe,65534,9,格式輸入與輸出,c格式符用來輸出一個(gè)字符。 s格式符用來輸出一個(gè)字符串。有幾種用法%s,按照實(shí)際長度輸出字符串。 %ms,輸出的字符串占m列。如果字符串的長度大于m,則突破m的限制,將字符串全部輸出;反之,則左補(bǔ)空格。 %-ms,如果字符串的長度小于m,則在m范圍內(nèi),字符串向左靠,右補(bǔ)空格。 %m.ns,輸出占m列,但只取字符串中左端n個(gè)字符。這n個(gè)字符輸出在m列的右側(cè),左補(bǔ)空格。 %-m.ns,輸出占m列,但只取字符串中左端n個(gè)字符。這n個(gè)字符輸出在m列的左側(cè),右補(bǔ)空格。如果nm,則m自動(dòng)取n值,以保證n個(gè)字符正常輸出。,Ma

8、in() printf(“%3s,%7.2s,%.4s,%-5.3sn”,”china”, ”china”, ”china”, ”china”);,輸出如下:china, ch,chin,chi,10,格式輸入與輸出,f格式符 用來輸出實(shí)數(shù),以小數(shù)形式輸出。有以下幾種用法 %f,不指定字段寬度,由系統(tǒng)自動(dòng)指定,使整數(shù)部分全部輸出,并輸出6位小數(shù)。注意:并非全部數(shù)據(jù)都是有效數(shù)字,單精度實(shí)數(shù)的有效位數(shù)一般為7位,雙 精度有效位數(shù)為16位。,%m.nf,指定輸出數(shù)據(jù)共占m列,其中有n位小數(shù)。如果數(shù)值長度小于m,則左補(bǔ)空格。,%-m.nf與%m.nf基本相同,只是輸出的數(shù)值向左端靠,右端補(bǔ)空格。,ma

9、in() float f=123.456; printf(“%f %10f %10.2f%.2f%-10.2fn”,f,f,f,f,f); ,輸出如下:123.456001123.456001123.46123.46 123.46,11,格式輸入與輸出,e格式符以指數(shù)形式輸出實(shí)數(shù)??捎靡韵滦问?e,不指定輸出數(shù)據(jù)占的寬度和數(shù)字部分小數(shù)位數(shù),Turbo C自動(dòng)指定給出5位小數(shù),指數(shù)部分占4位,其中“e”占1位,指數(shù)符號占1位,指數(shù)占2位。數(shù)值按照標(biāo)準(zhǔn)化指數(shù)形式輸出。 %m.ne和%-m.ne,m、n和“-”字符含義與前相同。(Turbo C中n包括小數(shù)點(diǎn)) 若 f=123.456 則printf

10、(“%e%12e%10.2e%.2e%-10.2e”,f,f,f,f,f);輸出如下:1.23456e+021.23456e+021.2e+021.2e+021.2e+02 g格式符用來輸出實(shí)數(shù),它根據(jù)數(shù)值的大小自動(dòng)選擇f格式或e格式,且不輸出無意義的0。 若f=123.4 則 printf(“%f%e%g”,f,f,f);輸出:123.4000021.23400e+02123.4 注意除X,E,G外,其他格式字符必須用小寫字母。如“%d”不能寫成“%D”??梢栽趐rintf()函數(shù)中的“格式控制”字符串內(nèi)包含“轉(zhuǎn)義字符”,如:”n”,”t”等。,12,格式輸入與輸出,一個(gè)格式說明以“%”開頭

11、,以d、o、x、u、c、s、f、e、g等字符之一結(jié)束,中間可以插入附加格式字符,如:字符”l”等。 如果想輸出字符“%”,則應(yīng)該在“格式控制”字符串中用連續(xù)兩個(gè)%表示。 Printf(“%f%”,1.0/3); scanf()函數(shù)(格式輸入函數(shù)) 1、一般格式 scanf(格式控制,地址列表 ); “格式控制”的含義同printf()函數(shù),“地址列表”是由若干地址組成的列表,可以是變量的地址,或字符串的首地址。 Main() int a,b,c; scanf(“%d%d%d”, 用如下格式輸入:345 或345 或 3 45 或3T4 5 注意:用格式”%d%d%d”輸入數(shù)據(jù)時(shí),不能用逗號作為

12、兩個(gè)數(shù)據(jù)間的分隔符。,13,格式輸入與輸出,2、格式說明 和printf()函數(shù)中的格式說明相似,以%開始,以一個(gè)格式字符結(jié)束,中間可以插入附加字符。 說明對unsigned型數(shù)據(jù),可以用%u、%d、%o和%x格式輸入。 可以指定輸入數(shù)據(jù)所占列數(shù),系統(tǒng)自動(dòng)按照它截取所需數(shù)據(jù)。 Scanf(“%3c”, 輸入應(yīng)該用以下形式: 12:23:11,輸入:abc 結(jié)果:a=ch輸入:123456 結(jié)果:123 =a 456 =b,輸入:1234567結(jié)果:12=a 67=b,14,格式輸入與輸出,在用“%c”格式輸入字符時(shí),空格字符和“轉(zhuǎn)義字符”都作為有效字符輸入。 在輸入數(shù)據(jù)時(shí),遇到以下幾種情況時(shí)該

13、數(shù)據(jù)認(rèn)為結(jié)束,遇到空格、或“回車”或TAB鍵; 遇到寬度結(jié)束; Scanf(“%3d%3d”, 遇到非法輸入。,15,3.2數(shù)據(jù)的輸入與輸出,格式輸出函數(shù)的一般形式,printf(“格式控制字符串”,輸出參數(shù)表);,說明: 格式字符要用小寫 格式字符與輸出項(xiàng)個(gè)數(shù)應(yīng)相同,按先后順序一一對應(yīng) 格式字符與輸出項(xiàng)類型不一致,自動(dòng)按指定格式輸出,函數(shù)功能:按用戶指定的格式,把指定的數(shù)據(jù)顯示到顯示器屏幕上,并返回輸出的字符數(shù)。這個(gè)函數(shù)可以輸出多字信息。,3.2.2格式輸出函數(shù),16,例:include main( ) int i = 97; char ch = a; printf (“i =%d ,%cn

14、”, i, i ); ,兩個(gè)輸出項(xiàng)都是變量i , 但以不同的格式輸出,一個(gè)是輸出的整型數(shù),一個(gè)輸出的是字符a. 其格式是由%d與%c控制的.,輸出結(jié)果:i =97,a,3.2數(shù)據(jù)的輸入與輸出,17,printf (“i =%d ,%c n”, i, i );,3.2數(shù)據(jù)的輸入與輸出,格式控制 由格式控制字符串實(shí)現(xiàn)。格式控制符由三部分組成: 普通字符:輸出時(shí)按原樣輸出,主要用于輸出提示信息 轉(zhuǎn)義字符:批明特定的操作。 輸出項(xiàng)格式說明%flagswidth.precF|N|h|Ltype,18,%flagswidth.precF|N|h|Ltype,Flags為選擇的標(biāo)志字符。常用的有:- : 為

15、左對齊,否則右對齊+:正數(shù)輸出+,負(fù)數(shù)輸出-空格:正數(shù)輸出空格,負(fù)數(shù)輸出-,Width為寬度指示符。用十進(jìn)制數(shù)來設(shè)置輸出值的最少輸出個(gè)數(shù),少則補(bǔ)空格,多則按實(shí)際輸出,缺省則按實(shí)際輸出。,3.2數(shù)據(jù)的輸入與輸出,flags,width,.prec為精度指示符。用小數(shù)點(diǎn)加十進(jìn)制正整數(shù)構(gòu)成,用來限制輸出數(shù)的精度。,.prec,F|N|h|L為長度修飾符,F(xiàn)遠(yuǎn)程指針地址 N近程指針地址h短整數(shù)據(jù)的值 L長整(雙精度)數(shù)據(jù)的值,F|N|h|L,19,type為格式字符。用來進(jìn)行格式轉(zhuǎn)換,3.2數(shù)據(jù)的輸入與輸出,%flagswidth.precF|N|h|Ltype,type,20,3.2數(shù)據(jù)的輸入與輸出

16、,3.2.2格式輸出函數(shù),函數(shù)功能:從鍵盤輸入任何類型的數(shù)據(jù)給所制定的單元,并返回輸入的數(shù)據(jù)個(gè)數(shù)。,格式輸入函數(shù)一般形式,scanf(“格式控制字符串”,地址列表);,例如:scanf(“%d %d, %f ”,21,% * widthF|Nh|Ltype,輸入賦值抑制字符,輸入數(shù)據(jù)但不賦值,3.2數(shù)據(jù)的輸入與輸出,*,width,F,N,h,L,寬度指示符,表示最多可輸入的字符個(gè)數(shù)。,|,地址大小修飾符。Ffar Nnear,|,輸入數(shù)據(jù)類型。h短整型,l長整或雙精度,22,% * widthF|Nh|Ltype,type是必須的,表示輸入后轉(zhuǎn)換的數(shù)據(jù)類型。,3.2數(shù)據(jù)的輸入與輸出,type

17、,23,使用scanf應(yīng)注意:,scanf()的格式控制字符串中的字符不是用于輸出的,都是要求輸入的。 scanf(”x=%d”, 參數(shù)的第二部分一定是地址列表,不能是表達(dá)式,請記得在變兩前加上 否則,計(jì)算:y=2 * x; 需要根據(jù)x的值進(jìn)行流程選擇(分支)。,3.4選擇結(jié)構(gòu)控制,33,main() float x , y; scanf(“%f ”, ,形式一(單分支選擇結(jié)構(gòu)): 格式:if (表達(dá)式) 語句 執(zhí)行過程:,形式二(雙分支選擇結(jié)構(gòu)): 格式:if (表達(dá)式) 語句1 else 語句2 執(zhí)行過程:,3.4.1if語句的形式,main() float x , y; scanf(“%

18、f ”, ,3.4選擇結(jié)構(gòu)控制,main() float x , y; scanf(“%f ”, ,34,3.4選擇結(jié)構(gòu)控制,例: 輸入兩個(gè)數(shù), 比較其大小, 將較大的數(shù)輸出。,流程分析: (1) 輸入兩個(gè)數(shù)據(jù)a,b ; (2) 如果ab 則輸出a ;否則,輸出b。 #include main( ) float a, b; scanf(“%f, %f”, ,35,形式三(多分支選擇結(jié)構(gòu)): 格式: if ( 表達(dá)式1) 語句1 else if (表達(dá)式2 ) 語句2 . else 語句n 執(zhí)行過程:,3.4選擇結(jié)構(gòu)控制,例:if (salary1000) index=0.4; else if

19、(salary800) index=0.3; else if (salary600) index=0.2; else if (salary400) index=0.1; else index=0;,36,3.4選擇結(jié)構(gòu)控制,寫一個(gè)程序完成下列功能: 1 輸入一個(gè)分?jǐn)?shù)score 2 score60 輸出 E 3 60=score 70 輸出 D 4 75=score 80 輸出 C 5 80=score 90 輸出 B 5 90=score 輸出 A,main( ) int score; sanf(“%d”, ,37,如:if(a=b,if(x) if(x!=0) if(!x) if(x=0),

20、說明:,if語句中的表達(dá)式一般為關(guān)系或邏輯表達(dá)式,也可以為任何數(shù)值類型的表達(dá)式。 執(zhí)行語句可以是一條簡單語句、空語句或復(fù)合語句,也可以嵌套其它流程控制語句。,3.4選擇結(jié)構(gòu)控制,例 考慮下面程序的輸出結(jié)果: #include main() int x,y; scanf(“%d,%d”, ,Compile Error!,38,3.4選擇結(jié)構(gòu)控制,復(fù)雜條件選擇,問題: 輸入兩個(gè)字符ch1和ch2, 如果ch1=Z 且 ch2=B, 則輸出“You are right ! ”,main() char ch1,ch2; ch1=getchar( ); ch2=getchar( ); if ( ch1

21、= Z ,復(fù)雜條件選擇,問題: 輸入兩個(gè)字符ch1和ch2, 如果ch1=Z 且 ch2=B, 則輸出“You are right ! ”,39,if語句嵌套,3.4選擇結(jié)構(gòu)控制,40,#include main() int x,y; printf(Enter integer x,y:); scanf(%d,%d, ,運(yùn)行:Enter integer x,y:12,23 XY Enter integer x,y:12,12 X=Y,例 輸入兩數(shù)并判斷其大小關(guān)系,3.4選擇結(jié)構(gòu)控制,41,缺省 時(shí),else總是和它上面離它最近的未配對的if配對,if else 配對原則:,3.4選擇結(jié)構(gòu)控制,4

22、2,例: 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 正確配對方法:加 ,3.4選擇結(jié)構(gòu)控制,43,3.4選擇結(jié)構(gòu)控制,例4.4 編程實(shí)現(xiàn):根據(jù)兩個(gè)數(shù)sex和tall分類, 如果sex為F,當(dāng)tall大于等于150時(shí),輸出” A “,否則輸出 “ B “;若sex不為F, 當(dāng)tall大于等于170時(shí),輸出A,否則輸出B。 分析: 根據(jù)sex分支 在sex為F的分支中判斷tall=150否 在s

23、ex不為F的分支中判斷tall=170否,void main() int tall; char sex; printf( “input sex and tall :” ); scanf( “%c %d”, ,44,一般形式:,switch( 表達(dá)式) case 常量表達(dá)式1: 語句組 1; break; case 常量表達(dá)式2: 語句組 2; break; . case En: 語句組 n; break; default: 語句組 ; break; ,執(zhí)行過程:,3.5多分支選擇控制語句switch語句,45,3.5多分支選擇控制語句switch語句,例如:要求按照考試成績的等級打印出百分制分

24、數(shù) 段,可以用switch語句實(shí)現(xiàn):,switch(grade) case A:printf(“85100n”); case B:printf(“7084n”); case C:printf(“6069n”); case D:printf(“60n”); default:printf(“errorn”); ,運(yùn)行結(jié)果:若grade=A 則輸出:85100 7084 6069 60 error,46,說明:,3.5多分支選擇控制語句switch語句,語句中的表達(dá)式可以是數(shù)字型或字符型,表達(dá)式的值,稱為開關(guān)值。 語句結(jié)構(gòu)中各個(gè)case后常量表達(dá)式的值必須互不相同;否則執(zhí)行時(shí)將出現(xiàn)矛盾,即同一個(gè)開關(guān)

25、值,對應(yīng)多種執(zhí)行方案 當(dāng)表達(dá)式的值與某一個(gè)常量相等時(shí),就執(zhí)行后面的語句;若無break語句,執(zhí)行該語句后,流程控制轉(zhuǎn)移到下一個(gè)分支: 繼續(xù)執(zhí)行這一個(gè)分支的語句,一至到最后一個(gè)語句執(zhí)行完。 當(dāng)表達(dá)式的值與所有常量表達(dá)式的值不相等時(shí),執(zhí)行default:后面的語句。 case后可包含多個(gè)可執(zhí)行語句,且不必加 switch可嵌套 多個(gè)case可共用一組執(zhí)行語句,switch(grade) case A:printf(“85100n”);break; case B:printf(“7084n”);break; case C:printf(“6069n”);break; case D:printf(“6

26、0n”);break; default:printf(“errorn”); ,運(yùn)行結(jié)果:若grade=A 則輸出:85100,運(yùn)行結(jié)果:若grade=E 則輸出:error,如: case A: case B: case C: printf(“score60n”); break; .,47,例 switch(score) case 5: printf(“Very good!”); case 4: printf(“Good!”); case 3: printf(“Pass!”); case 2: printf(“Fail!”); default : printf(“data error!”);

27、,運(yùn)行結(jié)果:score為5時(shí),輸出: Very good! Good! Pass! Fail! data error!,3.5多分支選擇控制語句switch語句,要求:當(dāng)score為5時(shí),輸出: Very good! Good! 當(dāng)score為2時(shí),輸出: Fail!,break;,break;,48,#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 nigh

28、t!n); break; case h: printf(nHello!n); break; default : printf(n?n); break; ,例 根據(jù)輸入字母輸出字符串,3.5多分支選擇控制語句switch語句,49,3.6循環(huán)控制,問題:求1至5的和,#include main( ) int a=1,b=2,c=3,d=4,e=5,sum; sum=a+b+c+d+e; ptintf(“sum=%d”,sum); ,5個(gè)變量,include main( ) int a=1,sum; sum=a; a=a+1; sum=sum+a; a=a+1; sum=sum+a; a=a+1;

29、 sum=sum+a; a=a+1; sum=sum+a; printf(“sum=%d”,sum); ,若求1至100的和?,50,3.6循環(huán)控制,C語言有while 、 do - while 、和for語句三種循環(huán)結(jié)構(gòu)語句。 前兩個(gè)稱為條件循環(huán),即根據(jù)條件來決定是否繼續(xù)循環(huán); 后一個(gè)稱為計(jì)數(shù)循環(huán),即根據(jù)設(shè)定的執(zhí)行次數(shù)來執(zhí)行循環(huán)。,51,一般形式:,while (表達(dá)式) 循環(huán)體語句;,執(zhí)行流程:,3.6循環(huán)控制,3.6.1while語句,52,特點(diǎn):先判斷表達(dá)式,后執(zhí)行循環(huán)體 說明: 循環(huán)體有可能一次也不執(zhí)行 循環(huán)體可為任意類型語句 下列情況,退出while循環(huán) 條件表達(dá)式不成立(為零)

30、循環(huán)體內(nèi)遇break,return 循環(huán)體中應(yīng)有使循環(huán)趨向于結(jié)束的語句。,While語句特點(diǎn)和說明,3.6循環(huán)控制,例如: i=1; while (i=100) putchar(*); i+;,53,用while循環(huán)求1至100的和,#include main( ) int i,sum=0; i=1; while(i=100) sum=sum+i; i+; printf(%d,sum); ,循環(huán)條件,循環(huán)體,3.6循環(huán)控制,54,#include main() int i=1; while(i=10) printf(%d*%d=%dn,i,i,i*i); i+; ,運(yùn)行結(jié)果: 1*1=1 2*

31、2=4 3*3=9 4*4=16 5*5=25 6*6=36 7*7=49 8*8=64 9*9=81 10*10=100,例 顯示110的平方,3.6循環(huán)控制,55,一般形式:,do 循環(huán)體語句; while(表達(dá)式);,執(zhí)行流程:,3.6循環(huán)控制,3.6.2do-while語句,56,特點(diǎn):先執(zhí)行循環(huán)體,后判斷表達(dá)式 說明: 至少執(zhí)行一次循環(huán)體 dowhile可轉(zhuǎn)化成while結(jié)構(gòu),dowhile語句特點(diǎn)和說明,3.6循環(huán)控制,57,3.6循環(huán)控制,用do-while循環(huán)求1至100的和,#include main( ) int i,sum=0; i=1; do sum=sum+i; i+

32、; while(i =100) printf(%d,sum); ,#include main( ) int i,sum=0; i=1; while(i=100) sum=sum+i; i+; printf(%d,sum); ,運(yùn)行結(jié)果:5050,運(yùn)行結(jié)果:5050,i=101;,i=101;,運(yùn)行結(jié)果:0,運(yùn)行結(jié)果: 101,58,一般形式:,for(表達(dá)式1 ; 表達(dá)式2 ; 表達(dá)式3) 循環(huán)體語句;,執(zhí)行流程:,3.6循環(huán)控制,3.6.3for語句,59,for語句中表達(dá)式1, 表達(dá)式2 ,表達(dá)式3 類型任意,都可省略,但分號;不可省 for語句可以轉(zhuǎn)換成while結(jié)構(gòu),表達(dá)式1; whi

33、le(表達(dá)式2) 循環(huán)體語句; 表達(dá)式3; ,3.6循環(huán)控制,for語句說明,for(;i100;i+),for(i=0;i100;),for(;i100;) while(i100),for(;) (需要用break跳出),運(yùn)行結(jié)果: abcdefghij,60,3.6循環(huán)控制,用for循環(huán)求1至100的和,#include main( ) int i,sum=0; i=1; do sum=sum+i; i+; while(i =100) printf(%d,sum); ,#include main( ) int i,sum=0; i=1; while(i=100) sum=sum+i; i+

34、; printf(%d,sum); ,#include main( ) int i,sum=0; for( i=0; i=100; i+ ) sum=sum+i; printf(%d,sum); ,61,3.6循環(huán)控制,3.6.4循環(huán)的嵌套,在循環(huán)體語句中又有另一個(gè)完整的循環(huán)結(jié)構(gòu)的形式,稱為循環(huán)的嵌套。嵌套在循環(huán)體內(nèi)的循環(huán)語句稱為內(nèi)循環(huán),外面的循環(huán)語句稱為外循環(huán)。如果內(nèi)循環(huán)體中又有嵌套的循環(huán)語句,稱為多層循環(huán)。While 、do-while、for三種循環(huán)都可以互相嵌套。 循環(huán)嵌套的程序中,要求內(nèi)循環(huán)必須被包含在外層循環(huán)的循環(huán)體中,不允許出現(xiàn)內(nèi)外層循環(huán)體交叉的情況。,62,三種循環(huán)可互相嵌套,

35、層數(shù)不限 外層循環(huán)可包含兩個(gè)以上內(nèi)循環(huán),但不能相互交叉 嵌套循環(huán)的一般形式,(1) while( ) while( ) . ,(2) do do while( ); . while( );,(3) while( ) do while( ); . ,(4) for( ; ;) do while(); while() . ,嵌套循環(huán)的跳轉(zhuǎn) 禁止: 從外層跳入內(nèi)層 跳入同層的另一循環(huán) 向上跳轉(zhuǎn),3.6循環(huán)控制,63,for(i=1;i10;i+) for(j=1;j10;j+) printf(j=9)?%4dn:%4d,i*j);,圖解,3.6循環(huán)控制,64,3.6循環(huán)控制,問題:輸出圖形 * *

36、* * * *,分析: 一共6行, 每行的 * 數(shù)目與行號相同 算法: 行用 i 表示 , 當(dāng) i = 6 do 輸出 i 個(gè) * 換行 ,int i,j; for ( i=1; i7; i+) printf(n); for (j=1; j=i; j+ ) putchar(*); ,65,問題:輸出圖形 * * * *,3.6循環(huán)控制,分析: 一共4行, 第i行輸出的空格數(shù)為: (7-i+1)/2 第i行輸出 i*2-1個(gè)*, 算法: 當(dāng) i = 7 do 輸出 (7-i+1)/2個(gè)空格 ; 輸出i 個(gè) * 換行 ; i+=2 ; ,66,3.6循環(huán)控制,main( ) int i,j; fo

37、r ( i=1; i=7; i+=2) printf(“n”); for (j=1;j=(7-i+1)/2 ; j+) putchar( ); /*輸出 (7-i+1)/2個(gè)空格*/ for (j=1;j=i;j+ ) putchar(*); /* 輸出i 個(gè) * */ getch(); ,67,功能:在循環(huán)語句和switch語句中,終止并跳出循環(huán)體或開關(guān)體。即跳出當(dāng)前的結(jié)構(gòu)。 說明: break只能終止并跳出最近一層的結(jié)構(gòu) break不能用于循環(huán)語句和switch語句之外的任何其它語句之中,3.7輔助控制語句,3.7.1break語句,68,3.7輔助控制語句,69,3.7輔助控制語句,70,main( ) int s=0,i=1: for (; ;) s = s+i; i+; if (i100) break; /* 如果 i100,則退出循環(huán)*/ printf(“s=%d”,s);本程序中,當(dāng)i100時(shí),強(qiáng)行終止for循環(huán),繼

溫馨提示

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

最新文檔

評論

0/150

提交評論