




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、第3章程序控制結(jié)構(gòu)及其應(yīng)用程序控制結(jié)構(gòu)及其應(yīng)用l 主要內(nèi)容3.1 C3.1 C語句概述語句概述3.2 3.2 輸入和輸出基礎(chǔ)輸入和輸出基礎(chǔ)3.3 3.3 選擇控制選擇控制3.4 3.4 循環(huán)控制循環(huán)控制3.5 break3.5 break語句和語句和continuecontinue語句語句3.6 3.6 綜合舉例綜合舉例 3.1 C語句概述C程序程序源程序文件源程序文件1源程序文件源程序文件2源程序文件源程序文件n預(yù)處理命令預(yù)處理命令函數(shù)函數(shù)n函數(shù)函數(shù)1數(shù)據(jù)聲明數(shù)據(jù)聲明函數(shù)首部函數(shù)首部函數(shù)體函數(shù)體數(shù)據(jù)聲明數(shù)據(jù)聲明執(zhí)行語句執(zhí)行語句 3.1 C語句概述 一個(gè)一個(gè)c c程序可以由若干個(gè)源程序文件組成
2、程序可以由若干個(gè)源程序文件組成 一個(gè)源文件可以有若干個(gè)函數(shù)和預(yù)處理命令一個(gè)源文件可以有若干個(gè)函數(shù)和預(yù)處理命令以及全局變量聲明部分組成以及全局變量聲明部分組成 一個(gè)函數(shù)有函數(shù)首部和函數(shù)體組成一個(gè)函數(shù)有函數(shù)首部和函數(shù)體組成 函數(shù)體由數(shù)據(jù)聲明和執(zhí)行語句組成函數(shù)體由數(shù)據(jù)聲明和執(zhí)行語句組成5類類表達(dá)式語句表達(dá)式語句函數(shù)調(diào)用語句函數(shù)調(diào)用語句控制語句控制語句復(fù)合語句復(fù)合語句空語句空語句 C語句分為語句分為 3.1 C語句概述 一、表達(dá)式語句 由一個(gè)表達(dá)式加一個(gè)分號(hào)(;)構(gòu)成一個(gè)語句一般形式: 表達(dá)式;功能:計(jì)算表達(dá)式的值。分號(hào)分號(hào)賦值表達(dá)式賦值表達(dá)式表達(dá)式語句表達(dá)式語句a = 3 ; 3.1 C語句概述 二
3、、函數(shù)調(diào)用語句 由函數(shù)名、實(shí)際參數(shù)(函數(shù)調(diào)用)加上分號(hào)“;”組成。一般形式: 函數(shù)名(實(shí)際參數(shù)表);功 能:函數(shù)調(diào)用,傳參,執(zhí)行函數(shù)體,求取函數(shù)值 。printf(C Program); 3.1 C語句概述 三、控制語句 它們由特定的語句定義符組成。功 能:控制程序流程C語言有九種控制語句??煞殖梢韵氯悾?(1) 條件判斷語句: if語句,switch語句。 (2) 循環(huán)執(zhí)行語句: do while語句,while語句,for語句。 (3) 轉(zhuǎn)向語句: break語句,goto語句,continue語句,return語句。 3.1 C語句概述 四、復(fù)合語句 多個(gè)語句用括號(hào)括起來組成的一個(gè)語句
4、稱復(fù)合語句。x=y+z;a=b+c;printf(%d%d,x,a); 注意:語句以分號(hào);結(jié)尾,后沒有分號(hào)。注意:語句以分號(hào);結(jié)尾,后沒有分號(hào)。五、空語句 只有分號(hào)“;”組成的語句用來做流程的轉(zhuǎn)向點(diǎn) 用來作為循環(huán)語句中的循環(huán)體什么都不做什么都不做while(getchar()!=n) ;3.2 輸入和輸出基礎(chǔ)(一).所謂輸入輸出是以計(jì)算機(jī)主機(jī)為主體而言的輸出輸出:從計(jì)算機(jī)向外部輸出設(shè)備(顯示器,打印機(jī)) 輸出數(shù)據(jù)輸入輸入:從輸入設(shè)備(鍵盤,鼠標(biāo),掃描儀)向計(jì)算機(jī) 輸入數(shù)據(jù).(二).C語言本身不提供輸入輸出語句,輸入和輸出操作是由C函數(shù)庫中的函數(shù)來實(shí)現(xiàn)的例如例如: :字符輸入函數(shù): getcha
5、r 字符輸出函數(shù):putchar格式輸入函數(shù): scanf 格式輸出函數(shù): printf字符串輸入函數(shù):gets 字符串輸出函數(shù):puts3.2 輸入和輸出基礎(chǔ)(三).在使用系統(tǒng)庫函數(shù)時(shí),要用預(yù)編譯命令“#include”將有關(guān)的“頭文件”包括到用戶源文件中.例如:在調(diào)用標(biāo)準(zhǔn)輸入輸出庫函數(shù)時(shí),文件開頭應(yīng)該有: #include “stdio.h” 或: #include 頭文件3.2 輸入和輸出基礎(chǔ)(一).字符數(shù)據(jù)的輸入和輸出1、單個(gè)字符輸出函數(shù)putchar()一般形式:putchar(ch); 函數(shù)作用:在顯示器上輸出單個(gè)字符 字符型變量或常量;整型變量或常量3.2 輸入和輸出基礎(chǔ)3.2
6、輸入和輸出基礎(chǔ) putchar(A); /*輸出大寫字母A*/ putchar(x); /*輸出字符變量x的值 putchar(n); /*執(zhí)行換行控制功能,不在屏幕上顯示*/例4.1 輸出單個(gè)字符。#includevoid main()char a,b,c;a=B;b=O;c=Y;putchar(a);putchar(b);putchar(c);putchar(n);運(yùn)行結(jié)果:BOYputchar(a);putchar(n);putchar(b);putchar(n);putchar(c);putchar(n);運(yùn)行結(jié)果:B O Y3.2 輸入和輸出基礎(chǔ)3.2 輸入和輸出基礎(chǔ) #includ
7、e void main() char a=B,b=o,c=k; putchar(a); putchar(b); putchar(b); putchar(c); putchar(t); putchar(a); putchar(b); putchar(n); putchar(b); putchar(c); 運(yùn)行結(jié)果:Book Bo ok2、當(dāng)個(gè)字符輸入函數(shù)getchar()一般形式:getchar(); 函數(shù)作用:從標(biāo)準(zhǔn)輸入設(shè)備(通常指鍵盤)輸入一個(gè)字符。函數(shù)值: 從輸入設(shè)備得到的字符。3.2 輸入和輸出基礎(chǔ)通常把輸入的字符賦予一個(gè)字符變量,構(gòu)成賦值語句。3.2 輸入和輸出基礎(chǔ)char c;c=g
8、etchar();例4.2 輸入單個(gè)字符。#includevoid main() char c; c=getchar(); putchar(c); putchar(n);運(yùn)行程序:從鍵盤輸入字符a按Enter鍵屏幕上將顯示輸出的字符aaa3.2 輸入和輸出基礎(chǔ) 3.2.2 格式輸入與輸出(一).格式輸出函數(shù)printf()函數(shù)作用:向標(biāo)準(zhǔn)輸出設(shè)備(通常指顯示器)輸出函數(shù)作用:向標(biāo)準(zhǔn)輸出設(shè)備(通常指顯示器)輸出若干個(gè)任意類型若干個(gè)任意類型的數(shù)據(jù)。的數(shù)據(jù)。一般格式:一般格式:printfprintf(“格式控制格式控制”,輸出表列);,輸出表列);用于指定輸出格式,用于指定輸出格式,如如%d, %
9、u, %f, %c等等由若干個(gè)逗號(hào)分隔的輸出項(xiàng)由若干個(gè)逗號(hào)分隔的輸出項(xiàng)組成。組成。每個(gè)輸出項(xiàng)可以是常量、變每個(gè)輸出項(xiàng)可以是常量、變量、或表達(dá)式等。量、或表達(dá)式等。每個(gè)輸出格式對(duì)應(yīng)一個(gè)輸出項(xiàng),格式輸出函數(shù)按指定的每個(gè)輸出格式對(duì)應(yīng)一個(gè)輸出項(xiàng),格式輸出函數(shù)按指定的輸出格式對(duì)輸出項(xiàng)的值進(jìn)行轉(zhuǎn)換,并進(jìn)行輸出輸出格式對(duì)輸出項(xiàng)的值進(jìn)行轉(zhuǎn)換,并進(jìn)行輸出格式控制串包括三類內(nèi)容: (1)普通字符:要求原樣輸出。 (2)轉(zhuǎn)義字符:要求按轉(zhuǎn)義字符的意義輸出。(3)輸出格式轉(zhuǎn)換說明:由若干輸出格式組成,每個(gè)輸出格式都是以%開頭后加輸出修飾符和輸出格式符組成,其中修飾格式符可缺省。 3.2.2 格式輸入與輸出 3.2.2
10、 格式輸入與輸出幾種常用的輸出格式符:幾種常用的輸出格式符:格式符格式符含義含義格式符格式符含義含義%d%d或或% %i i以十進(jìn)制形式輸出整數(shù)以十進(jìn)制形式輸出整數(shù)%e%e或或% %E E以指數(shù)形式輸出單、以指數(shù)形式輸出單、雙精度浮點(diǎn)數(shù)雙精度浮點(diǎn)數(shù)%o%o以八進(jìn)制形式輸出整數(shù)以八進(jìn)制形式輸出整數(shù)%c%c輸出一個(gè)字符輸出一個(gè)字符%x%x或或% %X X以十六進(jìn)制形式輸出整以十六進(jìn)制形式輸出整數(shù)數(shù)%s%s輸出字符串輸出字符串%u%u以無符號(hào)十進(jìn)制形式輸以無符號(hào)十進(jìn)制形式輸出整數(shù)出整數(shù)%輸出字符輸出字符% %f%f以小數(shù)形式輸出單、雙以小數(shù)形式輸出單、雙精度浮點(diǎn)數(shù)精度浮點(diǎn)數(shù)幾種常見的輸出修飾符:修飾
11、符修飾符 含義含義- -左對(duì)齊標(biāo)志,默認(rèn)右對(duì)齊左對(duì)齊標(biāo)志,默認(rèn)右對(duì)齊+ +正數(shù)輸出帶正號(hào)正數(shù)輸出帶正號(hào)# #輸出八進(jìn)制時(shí),前面加數(shù)字輸出八進(jìn)制時(shí),前面加數(shù)字0 0,前面加,前面加0 x0 x,對(duì)浮點(diǎn)數(shù)輸,對(duì)浮點(diǎn)數(shù)輸出,總是要輸出小數(shù)點(diǎn)出,總是要輸出小數(shù)點(diǎn)數(shù)字?jǐn)?shù)字(M)(M) 指定輸出項(xiàng)的寬度,當(dāng)寬度為指定輸出項(xiàng)的寬度,當(dāng)寬度為* *時(shí)表示寬度由下一個(gè)輸時(shí)表示寬度由下一個(gè)輸出項(xiàng)的整數(shù)值說明出項(xiàng)的整數(shù)值說明數(shù)字?jǐn)?shù)字(N)(N) 指示小數(shù)點(diǎn)之后顯示的位數(shù)(默認(rèn)輸出指示小數(shù)點(diǎn)之后顯示的位數(shù)(默認(rèn)輸出6 6位小數(shù));對(duì)位小數(shù));對(duì)于于s s格式,指定輸出的字符數(shù)格式,指定輸出的字符數(shù)H H輸出的是短整型
12、輸出的是短整型L L或或l l輸出的是長(zhǎng)整型或輸出的是長(zhǎng)整型或long doublelong double浮點(diǎn)數(shù)浮點(diǎn)數(shù) 3.2.2 格式輸入與輸出 【例3-3】輸出不同格式數(shù)據(jù)。1.#include 2.void main( )3.4.int a=88,b=89;5. printf(%d %dn,a,b);6. printf(%d,%dn,a,b);7. printf(%c,%cn,a,b);8. printf(a=%d,b=%d,a,b);9. 輸出結(jié)果:88 8988,89X,Ya=88,b=89 3.2.2 格式輸入與輸出1. #include”stdio.h”2. void main(
13、)3. 4. int a=5,b=7;5. float x=67.8564,y=-789.124;6. char c=A;7. long n=1234567;8. unsigned u=65535;9. printf(“%d%dn”,a,b); 10.printf(“%3d%3dn”,a,b);11.printf(“%f,%fn”,x,y);12.printf(“%-10f,%-10fn”,x,y);13.printf(“%8.2f,%8.2f,%.4f,%3f,%3fn”,x,y, x,y, x,y); 3.2.2 格式輸入與輸出14. printf(“%e,%10.2en”,x,y);15
14、. printf(“%c,%d,%o,%xn”,c,c,c,c);16. printf(“%ld,%lo,%xn”,n,n,n);17. printf(“%u,%o,%x,%dn”,u,u,u,u);18. printf(“%s,%5.3sn”,”COMPUTER”,”COMPUTER”);19. 3.2.2 格式輸入與輸出(二).格式輸入函數(shù)scanf()函數(shù)作用:按照變量在內(nèi)存的地址將變量值存 進(jìn)去。一般格式:scanfscanf(“格式控制格式控制”,地址表列);,地址表列);同同printf函數(shù)函數(shù)是由若干個(gè)地址組成的表列,可以是變量的地址,是由若干個(gè)地址組成的表列,可以是變量的地址,
15、或字符串的首地址,如或字符串的首地址,如&a 3.2.2 格式輸入與輸出其中,格式控制字符串只包含兩類內(nèi)容:(1)普通字符:要求用戶必須按照原樣輸入。(2)格式轉(zhuǎn)換說明:由若干輸入格式組成,每個(gè)輸入格式都是以%開頭后加輸入修飾符和輸入格式符組成,其中修飾格式符可缺省。 3.2.2 格式輸入與輸出 3.2.2 格式輸入與輸出格式字符格式字符說說 明明%d,%i用來輸入有符號(hào)的十進(jìn)制整數(shù)用來輸入有符號(hào)的十進(jìn)制整數(shù)%u用來輸入無符號(hào)的十進(jìn)制整數(shù)用來輸入無符號(hào)的十進(jìn)制整數(shù)%o用來輸入無符號(hào)的八進(jìn)制整數(shù)用來輸入無符號(hào)的八進(jìn)制整數(shù)%x,%X用來輸入無符號(hào)的十六進(jìn)制整數(shù)用來輸入無符號(hào)的十六進(jìn)制整數(shù)%c用來輸
16、入單個(gè)字符用來輸入單個(gè)字符%s用來輸入字符串用來輸入字符串%f用來輸入實(shí)數(shù)(小數(shù)或指數(shù))用來輸入實(shí)數(shù)(小數(shù)或指數(shù))%e,%E,%g,%G與與f作用相同,作用相同,e與與f,g可以互相替換可以互相替換 3.2.2 格式輸入與輸出修飾符修飾符* *賦值抑制符,即輸入當(dāng)前數(shù)據(jù),但不傳送給變量賦值抑制符,即輸入當(dāng)前數(shù)據(jù),但不傳送給變量數(shù)字?jǐn)?shù)字(M) 指定輸入數(shù)據(jù)指定輸入數(shù)據(jù)的字符的字符個(gè)數(shù)個(gè)數(shù)H H輸入輸入short整數(shù)整數(shù)L L或或l輸入輸入long整數(shù)或者整數(shù)或者long double 浮點(diǎn)數(shù)浮點(diǎn)數(shù)例4.9 用scanf函數(shù)輸入數(shù)據(jù)。#includevoid main() int a,b,c; s
17、canf(“%d%d%d”,&a,&b,&c); printf(“%d,%d,%dn”,a,b,c); 運(yùn)行情況:運(yùn)行情況:3 4 5 (3 4 5 (輸入輸入a,b,ca,b,c的值的值) )3 3,4 4,5 5 (輸出(輸出a,b,ca,b,c的值)的值)a a在內(nèi)存中的地在內(nèi)存中的地址址& &是地址運(yùn)算符是地址運(yùn)算符 3.2.2 格式輸入與輸出 使用函數(shù)時(shí)應(yīng)注意的問題使用函數(shù)時(shí)應(yīng)注意的問題 : :(1)(1)函數(shù)中的函數(shù)中的“格式控制格式控制”后面應(yīng)當(dāng)是后面應(yīng)當(dāng)是變量地址,而不應(yīng)是變量名。變量地址,而不應(yīng)是變量名。 (2) (2) 如果在如果在“格式控制格式控制”字符串中除了格式說明字
18、符串中除了格式說明以外還有其他字符,則在輸入數(shù)據(jù)時(shí)在對(duì)應(yīng)位置以外還有其他字符,則在輸入數(shù)據(jù)時(shí)在對(duì)應(yīng)位置應(yīng)輸入與這些字符相同的字符。應(yīng)輸入與這些字符相同的字符。 (3) (3) 在用在用“”格式輸入字符時(shí),空格字符和格式輸入字符時(shí),空格字符和“轉(zhuǎn)義字符轉(zhuǎn)義字符”都作為有效字符輸入都作為有效字符輸入 . . 3.2.2 格式輸入與輸出【例【例3-53-5】不同格式】不同格式輸出輸出數(shù)據(jù)。數(shù)據(jù)。1.1.#include #include 2.2.void void main(main( ) )3.3. 4.4. int a,b,c; int a,b,c;5.5. printf(input a,b,c
19、n); printf(input a,b,cn);6.6. scanf(%d%d%d,&a,&b,&c); scanf(%d%d%d,&a,&b,&c);7.7. printf(a=% printf(a=%6 6d,b=%d,b=%7 7d,c=%d,c=%8 8d,a,b,c);d,a,b,c);8.8. 3.2.2 格式輸入與輸出 【例3-6】格式輸入函數(shù)scanf( )綜合舉例。1.#include stdio.h2.void main()3. 4. int a,b;5. float x,y;6. char c1,c2;7. scanf(a=%d b=%d,&a,&b);8. scanf
20、(%f %e,&x,&y);9. scanf(%c %c,&c1,&c2);10.printf(a=%d,b=%d,x=%f,y=%f,c1=%c,c2=%c,a,b,x,y,c1,c2);11. 3.2.2 格式輸入與輸出3.3 選擇控制圖 1圖 23.3.1 if語句1.if1.if語句的三種基本形式語句的三種基本形式(1)if (1)if (表達(dá)式)(表達(dá)式) 語句語句 if(ab) printf(“%d”,a);表達(dá)式語句真(非0)假(0) if(ab) t=a; a=b; b=t;3.3.1 if語句(2)if(表達(dá)式) 語句1 else 語句2 if (ab) printf(“%d
21、”,a); else printf(“%d”,b); 語句語句1 語句語句2表達(dá)式表達(dá)式真真假假3.3.1 if語句(3)if(表達(dá)式1)語句1 else if(表達(dá)式2)語句2 else if(表達(dá)式3)語句3 else if(表達(dá)式m)語句m else 語句n【例3-8】判斷成績(jī)按分?jǐn)?shù)段輸出。1. #include 2. void main( )3. 4.float grade;5.char level=0 ;6.printf(Please input your grade: );7.scanf(%f ,&grade) ;8.if (grade=90) level=A;9.else if
22、(grade=80) level=B;10.else if (grade=70) level=C;11.else if (grade=60) level=D; 12.else 13. level=E; 14.printf(%c,level); if語句3.3.1 if語句2.If語句的嵌套在if語句中又包含一個(gè)或多個(gè)if語句稱為if語句的嵌套。形式: if() if() 語句1 else 語句2 else if() 語句3 else 語句4內(nèi)嵌內(nèi)嵌ifif3.3.1 if語句匹配規(guī)則:Else總是與它上面的,最近的,統(tǒng)一復(fù)合語句中的,未配對(duì)的if語句配對(duì)。例:If()if()
23、語句1elseif() 語句2else 語句3例:If()if() 語句1elseif() 語句2else 語句3當(dāng)當(dāng)ifif和和elseelse數(shù)目不同時(shí),可以加數(shù)目不同時(shí),可以加花括號(hào)花括號(hào)來確定配對(duì)關(guān)系。來確定配對(duì)關(guān)系。#include #include void main()void main() intint year, leap; year, leap; scanf(%d,&yearscanf(%d,&year);); if (year%4=0) if (year%4=0)if (year%100=0)if (year%100=0) if (year%400=0) leap=1;
24、if (year%400=0) leap=1; else leap=0; else leap=0; else leap=1; else leap=1; else leap=0; else leap=0; if (leap) if (leap) printf(%dprintf(%d is ,year); is ,year); else else printf(%dprintf(%d is not ,year); is not ,year); printf(aprintf(a leap year.n); leap year.n);3.3.1 if語句 運(yùn)行情況: . . 3.3.2 switch語
25、句switch語句的格式:switch (表達(dá)式) case常量表達(dá)式:語句break; case常量表達(dá)式:語句break; case常量表達(dá)式:語句break; default :語句 【例3-9】等級(jí)成績(jī)按分?jǐn)?shù)段輸出。1.#include 2.void main( )3.4. char level ;5. printf(Input scoce of A B C D E: ) ;6. scanf(%c , &level ) ;7. switch( level )8. 9. case A: printf(“91 100n”); break;10. case B: printf(“81 90n
26、”); break;11. case C: printf(“71 80n”); break;12. case D: printf(“60 70n”); break;13. case E: printf(“ 0 59n”); break; 14. default : printf(“input error!n”) ; break;15. switch語句3.3.2 switch語句注意注意(1)switch(1)switch語句只能對(duì)整型表達(dá)式和字符表達(dá)式判斷。語句只能對(duì)整型表達(dá)式和字符表達(dá)式判斷。(2)switch (2)switch 語句判斷的結(jié)果一般是一個(gè)常量。語句判斷的
27、結(jié)果一般是一個(gè)常量。(3)(3)多個(gè)多個(gè)casecase語句可以使用同一個(gè)語句序列。語句可以使用同一個(gè)語句序列?!纠?-10】已知x,按以下公式計(jì)算y的值。 sin(x) 0.5=x1.5 y(x)= log(x) 1.5=x4.5 exp(x) 4.5=x switch語句(X+0.5)=1=x22=x55=x81.1.#include stdio.h#include stdio.h2.2. #include math.h #include math.h3.3. void main() void main()4.4. int x; int x;5.5. double y; d
28、ouble y;6.6. printf(input x: ); printf(input x: );7.7. scanf(%d,&x); scanf(%d,&x);8.8. switch(int)(x+0.5) switch(int)(x+0.5)9.9. 10.10. case 1:y=sin(x); case 1:y=sin(x);11.11. printf(sin(%d)=%fn,x,y);break; printf(sin(%d)=%fn,x,y);break;12.12. case 2: case 2:13.13. case 3: case 3:14.14. case 4:y=log
29、(x); case 4:y=log(x);15.15. printf(log(%d)=%fn,x,y);break; printf(log(%d)=%fn,x,y);break;16.16. case 5: case 5:17.17. case 6: case 6:18.18. case 7:y=exp(x); case 7:y=exp(x);19.19. printf(exp(%d)=%fn,x,y);break; printf(exp(%d)=%fn,x,y);break;20.20. default:printf(x error! ); break; default:printf(x e
30、rror! ); break;21.21. 22.22. 3.4 循環(huán)控制1001nyn問題問題1 1:?jiǎn)栴}問題2:2: 在許多問題中需要用到循環(huán)控制。循環(huán)結(jié)構(gòu)是結(jié)構(gòu)化程序設(shè)計(jì)的基本結(jié)構(gòu)之一,它和順序結(jié)構(gòu)、選擇結(jié)構(gòu)共同作為各種復(fù)雜程序的基本構(gòu)造單元。什么是循環(huán)?什么是循環(huán)?為什么要使用循環(huán)?為什么要使用循環(huán)?循環(huán)結(jié)構(gòu)用于描述在某個(gè)條件成立時(shí),重循環(huán)結(jié)構(gòu)用于描述在某個(gè)條件成立時(shí),重復(fù)執(zhí)行某個(gè)計(jì)算。復(fù)執(zhí)行某個(gè)計(jì)算??刂浦貜?fù)計(jì)算過程可用循環(huán)結(jié)構(gòu)控制重復(fù)計(jì)算過程可用循環(huán)結(jié)構(gòu)循環(huán)結(jié)構(gòu)主要由循環(huán)結(jié)構(gòu)主要由控制循環(huán)的條件控制循環(huán)的條件和一個(gè)重和一個(gè)重復(fù)計(jì)算的復(fù)計(jì)算的循環(huán)體循環(huán)體組成。組成。C C語言提供了四
31、種形式的循環(huán)結(jié)構(gòu),它們分語言提供了四種形式的循環(huán)結(jié)構(gòu),它們分別是由別是由whilewhile語句語句、d dowhileowhile語句、語句、forfor語語句和句和gotogoto語句構(gòu)成的。語句構(gòu)成的。3.4 循環(huán)控制whilewhile語句用來實(shí)現(xiàn)語句用來實(shí)現(xiàn)“當(dāng)型當(dāng)型”循環(huán)結(jié)構(gòu)循環(huán)結(jié)構(gòu)。一般形式:一般形式: while(表達(dá)式) 語句; 3.4.1 用while語句實(shí)現(xiàn)循環(huán)先計(jì)算表達(dá)式的值,當(dāng)表達(dá)式為“真”(非0)值時(shí),執(zhí)行while語句中的內(nèi)嵌語句;否則,執(zhí)行循環(huán)體后面的語句。其特點(diǎn)是:先判斷表達(dá)式的值,后執(zhí)行語句。循環(huán)條件循環(huán)條件循環(huán)體:可以是單條語句,也可以是多條語句。【例3-
32、11】使用while語句統(tǒng)計(jì)從鍵盤輸入一行字符的個(gè)數(shù)。 #include void main( ) int n=0; printf(input a string:n); while(getchar( )!= n ) n+; printf(%d,n); 3.4.1 用while語句實(shí)現(xiàn)循環(huán) 3.4.1 用while語句實(shí)現(xiàn)循環(huán)例6.2 求1到100的和#include #include void main()void main() intint i i,sum=0;sum=0; i=1; i=1; while (i=100) while (i=100) sum=sum+i; sum=sum+i;
33、 i+; i+; printf(%dnprintf(%dn,sum);sum); 運(yùn)行結(jié)果:運(yùn)行結(jié)果:50505050注意:注意: 1、while語句中的表達(dá)式一般是關(guān)系表達(dá)式或邏輯表達(dá)式,只要表達(dá)式的值為真(非0)即可繼續(xù)循環(huán)。 2、循環(huán)體包括一個(gè)以上的語句,必須用 括起來,組成復(fù)合語句。 3、應(yīng)注意循環(huán)條件的選擇以避免死循環(huán)。在循環(huán)體中應(yīng)有使循環(huán)趨向于結(jié)束的語句。如果無此語句,則i的值始終不改變,循環(huán)永不結(jié)束。 3.4.1 用while語句實(shí)現(xiàn)循環(huán)【例3-12】無限循環(huán)。 #include void main( ) int a,n=0; while(a=5)printf(%d ,n+);
34、3.4.1 用while語句實(shí)現(xiàn)循環(huán)dowhile語句(直到型)的一般形式為: do 語句; while(表達(dá)式); 3.4.2 dowhile語句執(zhí)行過程:執(zhí)行過程:先執(zhí)行一次指定的循環(huán)體語句,然后判別表達(dá)式,當(dāng)表達(dá)式的值為非零(“真”) 時(shí),返回重新執(zhí)行循環(huán)體語句,如此反復(fù),直到表達(dá)式的值等于0為止,此時(shí)循環(huán)結(jié)束。循環(huán)體循環(huán)體循環(huán)條件循環(huán)條件 3.4.2 dowhile語句whilewhile語句和用語句和用do-whiledo-while語句的比較語句的比較: :(1)dowhile是先執(zhí)行后判斷,因此dowhile至少要執(zhí)行一次循環(huán)體。而while是先判斷后執(zhí)行,如果條件不滿足,則一次
35、循環(huán)體語句也不執(zhí)行。(2)while語句和dowhile語句一般都可以相互改寫?!纠?-13】使用do-while語句統(tǒng)計(jì)從鍵盤輸入一行字符的個(gè)數(shù)。 #include void main( ) int n=0; printf(input a string:n); do n+; while(getchar( )!= n ); printf(%d,n); 3.4.2 dowhile語句while(getchar( )!= n ) n+;注意: 1 1、在在ifif語句和語句和whilewhile語句中,表達(dá)式后面都語句中,表達(dá)式后面都不能加分號(hào),而在不能加分號(hào),而在 do-whiledo-whil
36、e語句的表達(dá)式語句的表達(dá)式后面則必須加分號(hào)。后面則必須加分號(hào)。 2 2、dowhiledowhile語句也可以組成多重循環(huán),而語句也可以組成多重循環(huán),而且也可以和且也可以和whilewhile語句相互嵌套。語句相互嵌套。 3 3、在在dodo和和whilewhile之間的循環(huán)體由多個(gè)語句組之間的循環(huán)體由多個(gè)語句組成時(shí),也必須用成時(shí),也必須用括起來組成一個(gè)復(fù)合語括起來組成一個(gè)復(fù)合語句。句。 3.4.2 dowhile語句if (表達(dá)式)(表達(dá)式) 語句語句; do 語句;語句; while(表達(dá)式表達(dá)式); while(表達(dá)式) 語句; 3.4.3 for循環(huán)C語言中的for語句使用最為靈活,不
37、僅可以用于循環(huán)次數(shù)已經(jīng)確定的情況,而且可以用于循環(huán)次數(shù)不確定而只給出循環(huán)結(jié)束條件的情況,它完全可以代替while語句。一般形式: for(for(表達(dá)式表達(dá)式1 1;表達(dá)式;表達(dá)式2 2;表達(dá)式;表達(dá)式3) 3) 循環(huán)體語句;循環(huán)體語句; 通常用來給循環(huán)變量賦初值,一般為通常用來給循環(huán)變量賦初值,一般為賦值表達(dá)式賦值表達(dá)式;可省略;可省略循環(huán)條件,循環(huán)條件,一般為一般為關(guān)系關(guān)系表達(dá)式表達(dá)式或或邏邏輯表達(dá)式輯表達(dá)式修改循環(huán)變修改循環(huán)變量的值,一量的值,一般為般為賦值表賦值表達(dá)式達(dá)式表達(dá)式表達(dá)式2?執(zhí)行語句語句成立成立不成立不成立執(zhí)行for循環(huán)之后的語句執(zhí)行表達(dá)式3執(zhí)行表達(dá)式執(zhí)行表達(dá)式1循環(huán)體循環(huán)
38、體循環(huán)初始條件循環(huán)初始條件循環(huán)控制條件循環(huán)控制條件for語句等價(jià)于下列語句:表達(dá)式1;while (表達(dá)式2) 語句; 表達(dá)式3; for(表達(dá)式表達(dá)式1;表達(dá)式;表達(dá)式2;表達(dá)式;表達(dá)式3) 循環(huán)體語句;循環(huán)體語句;【例3-14】使用for語句統(tǒng)計(jì)從鍵盤輸入一行字符的個(gè)數(shù)。 #include void main( ) int n; printf(input a string:n); for( n=0 ; getchar( )!= n ; n+) ; /*表示循環(huán)為空語句*/ printf(%d,n ); 3.4.3 for循環(huán)int n;n=0;while(getchar( )!= n )
39、n+;【例【例3-153-15】用用forfor語句計(jì)算語句計(jì)算s=1+2+3+.+99+100s=1+2+3+.+99+100 #include #include void void main(main( ) ) int n,s=0;int n,s=0; for(n=1;n=100;n+) for(n=1;n=100;n+) s=s+n; s=s+n; printf(s=%dn printf(s=%dn , , s s ); ); 3.4.3 for循環(huán)注意:1、for語句中的各表達(dá)式都可省略,但分號(hào)不能少。如: for(;表達(dá)式;表達(dá)式) 省去了表達(dá)式1。 for(表達(dá)式;表達(dá)式) 省去了
40、表達(dá)式2。 for(表達(dá)式;表達(dá)式;) 省去了表達(dá)式3。 for(;) 省去了全部表達(dá)式。2、在循環(huán)變量已賦初值時(shí),可省去表達(dá)式1。如省 去表達(dá)式2或表達(dá)式3則將造成無限循環(huán),這時(shí)應(yīng)在循環(huán)體內(nèi)設(shè)法結(jié)束循環(huán)。 3.4.3 for循環(huán)【例【例3-163-16】用用forfor語句輸出語句輸出a a值。值。 #include #include void void main(main( ) ) int a=0,n; int a=0,n; printf(n input n: ); printf(n input n: ); scanf(%d,&n); scanf(%d,&n); for(;) for(;)
41、 a+; a+; n-; n-; if(n=0) break; if(n=0) break; printf(a=%d ,a); printf(a=%d ,a); 3.4.3 for循環(huán)由循環(huán)體中的語句由循環(huán)體中的語句實(shí)現(xiàn)循環(huán)變量的遞減實(shí)現(xiàn)循環(huán)變量的遞減和循環(huán)條件的判斷和循環(huán)條件的判斷for語句中的表達(dá)式全部省略語句中的表達(dá)式全部省略 for(a=0;n!=0;a+) n-; 3、循環(huán)體可以是空語句。4、for語句也可與while、dowhile語句相互嵌套,構(gòu)成多重循環(huán)3.4.3 for循環(huán)3.4.4 goto語句goto語句無條件轉(zhuǎn)向語句一般形式: gotogoto 語句標(biāo)號(hào);語句標(biāo)號(hào);其中
42、語句標(biāo)號(hào)是按其中語句標(biāo)號(hào)是按標(biāo)識(shí)符規(guī)定標(biāo)識(shí)符規(guī)定書寫的符號(hào),放在某書寫的符號(hào),放在某一語句行的前面,標(biāo)號(hào)后加冒號(hào)一語句行的前面,標(biāo)號(hào)后加冒號(hào)( (:) )。語句標(biāo)號(hào)起。語句標(biāo)號(hào)起標(biāo)識(shí)語句的作用,與標(biāo)識(shí)語句的作用,與goto goto 語句配合使用。語句配合使用。3.4.4 goto語句【例【例3-173-17】使用】使用gotogoto語句語句統(tǒng)計(jì)從鍵盤輸入一行字符的個(gè)數(shù)。統(tǒng)計(jì)從鍵盤輸入一行字符的個(gè)數(shù)。#include #include void void main(main( ) ) int n int n = = 0;0; printf(input a stringn); printf(i
43、nput a stringn);l loop:oop: if(getchar( if(getchar( )!=n)!=n) n+;n+; goto loop;goto loop; printf(%d,n); printf(%d,n); 【例3-18】使用goto語句進(jìn)行跳轉(zhuǎn)。#include void main( ) int a ; loop1: printf(input a: ) ; scanf(%d, &a ) ; if (a0) printf(a = %d n, a ) ; else goto loop1; 3.4.4 goto語句3.4.4 goto語句注意:1 1、C C語言不限制程序中使用標(biāo)號(hào)的次數(shù),但語言不限制程序中使用標(biāo)號(hào)的次數(shù),但各標(biāo)號(hào)不各標(biāo)號(hào)不得重名得重名。gotogoto語句的語義是改變程序流向,轉(zhuǎn)去執(zhí)語句的語義是改變程序流向,轉(zhuǎn)去執(zhí)行語句標(biāo)號(hào)所標(biāo)識(shí)的語句。行語句標(biāo)號(hào)所標(biāo)識(shí)的語句。2 2、gotogoto語句通常與條件語句配合使用??捎脕韺?shí)現(xiàn)條語句通常與條件語句配合使用??捎脕韺?shí)現(xiàn)條件轉(zhuǎn)移,構(gòu)成循環(huán),跳出循環(huán)體等功能。件轉(zhuǎn)移,構(gòu)成循環(huán),跳出循環(huán)體等功能。注意注意在結(jié)構(gòu)化程序設(shè)計(jì)中一般不在結(jié)構(gòu)化
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 二零二五年度教育機(jī)構(gòu)講師團(tuán)隊(duì)合作協(xié)議
- 公司文員勞動(dòng)協(xié)議
- 全球環(huán)境治理項(xiàng)目資金捐贈(zèng)協(xié)議
- 中國(guó)地理讀后感
- 《數(shù)學(xué)競(jìng)賽題庫設(shè)計(jì)與復(fù)習(xí)教學(xué)教案》
- 大宗商品貿(mào)易管理流程手冊(cè)
- 委托貸款借款合同
- 農(nóng)產(chǎn)品質(zhì)量安全追溯手冊(cè)
- 互聯(lián)網(wǎng)軟件開發(fā)合同協(xié)議
- 綠化工程承包合同協(xié)議
- sm通道開關(guān)量冗余輸入端子模塊使用說明書
- 位相差和光程差
- 高質(zhì)量SCI論文入門必備從選題到發(fā)表全套課件
- 前列腺癌的診斷與治療課件
- 產(chǎn)品開發(fā)的變更流程
- 氣管鏡科室講課ppt課件(PPT 69頁)
- 蝴蝶豌豆花(課堂PPT)
- 無創(chuàng)呼吸機(jī)的應(yīng)用(飛利浦偉康V60)課件
- 口腔修復(fù)學(xué)-第七章-牙列缺失的全口義齒修復(fù)
- 對(duì)于二氧化碳傳感器的現(xiàn)狀及發(fā)展趨勢(shì)的淺分析
- 麥語言函數(shù)手冊(cè)參考模板
評(píng)論
0/150
提交評(píng)論