版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、本章導(dǎo)讀 本章從實(shí)例分析著手,使讀者了解并掌握C語言三種基本流程控制結(jié)構(gòu):順序、選擇、循環(huán)結(jié)構(gòu) ,加深對(duì)C語言程序開發(fā)設(shè)計(jì)過程的感性認(rèn)識(shí),強(qiáng)化培養(yǎng)編程思路,為進(jìn)一步進(jìn)行C語言程序設(shè)計(jì)打下基礎(chǔ)。 C語言程序設(shè)計(jì) 環(huán)境)返回本書目錄第3章 結(jié)構(gòu)化程序設(shè)計(jì)本章主要知識(shí)點(diǎn) (1) 順序結(jié)構(gòu)及程序設(shè)計(jì)。 (2)選擇結(jié)構(gòu)及程序設(shè)計(jì)。 (3)循環(huán)結(jié)構(gòu)及程序設(shè)計(jì)。 (4)結(jié)構(gòu)化程序設(shè)計(jì)方法、編程思路與綜合實(shí)訓(xùn)第3章 結(jié)構(gòu)化程序設(shè)計(jì) C語言程序設(shè)計(jì) 環(huán)境)返回本章導(dǎo)讀3.2 選擇結(jié)構(gòu)程序設(shè)計(jì)3.3 循環(huán)結(jié)構(gòu)程序設(shè)計(jì)3.4 結(jié)構(gòu)化程序設(shè)計(jì)方法與綜合實(shí)訓(xùn)3.1 順序結(jié)構(gòu)程序設(shè)計(jì) C語言程序設(shè)計(jì) 環(huán)境)返回本章目錄3
2、.1.2 順序結(jié)構(gòu)語句3.1.3 程序?qū)嵱?xùn)3.1.1 順序結(jié)構(gòu)的C程序?qū)嵗?.1 順序結(jié)構(gòu)程序設(shè)計(jì)3.1.1 C程序?qū)嵗?C語言程序設(shè)計(jì) 環(huán)境)返回本節(jié)目錄C程序?qū)嵗纠?.1】編程實(shí)現(xiàn):輸入一個(gè)長(zhǎng)方形的二邊長(zhǎng),求長(zhǎng)方形的面積并輸出。/*程序名為。*/#include stdio.h main() float a,b,s; scanf(%f%f,&a,&b); s=a*b;printf(The area of rectangle is %5.2f .n,s); 返回本節(jié)目錄程序運(yùn)行情況如下:輸入:3.0 4.0 輸出:The area of rectangle is 12.00 .這個(gè)程序?qū)儆?/p>
3、順序結(jié)構(gòu),程序是按照書寫的順序自上而下一步步執(zhí)行,程序中的每一條語句都被執(zhí)行一次,且僅能被執(zhí)行一次?!纠?.1】編程 C語言程序設(shè)計(jì) 環(huán)境)3.1.2 順序結(jié)構(gòu)語句1 C語言程序設(shè)計(jì) 環(huán)境)C語言的順序結(jié)構(gòu)語句可以分為四大類:1.表達(dá)式語句表達(dá)式的后面加一個(gè)分號(hào)就構(gòu)成了一個(gè)語句,例如:sum=a+b; 。事實(shí)上,C語言中有使用價(jià)值的表達(dá)式語句主要有3種:(1)賦值語句。 例如: sum=a+b; (2)自動(dòng)增1、減1運(yùn)算符構(gòu)成的表達(dá)式語句。例如: i+;(3)逗號(hào)表達(dá)式語句。例: x=1,y=2;2.空語句語句僅有一個(gè)分號(hào)“;”,它表示什么也不做。一般和后面章節(jié)所講循環(huán)語句結(jié)合使用起到延時(shí)作用
4、。3. 復(fù)合語句由和把一些變量定義和執(zhí)行語句組合在一起,稱之為復(fù)合語句,又稱語句塊。復(fù)合語句的語句形式如下:語句1;語句2;語句n;返回本節(jié)目錄返回本節(jié)目錄例如:int a=0,b=1,sum;sum=a+b;printf(%d,sum);【注意】與C語言中的其他語句不同,復(fù)合語句不以分號(hào)作為結(jié)束符,若復(fù)合語句的后面出現(xiàn)分號(hào),那不是該復(fù)合語句的組成成分,而是單獨(dú)的一個(gè)空語句。在復(fù)合語句起始部分可以有變量定義,如:int a=0,b=1,sum;,也可以沒有。復(fù)合語句的內(nèi)可能會(huì)有多個(gè)語句,但在語法上把它整體上視為一條語句看待。4.函數(shù)調(diào)用語句由一個(gè)函數(shù)調(diào)用加上一個(gè)分號(hào)組成一個(gè)語句,如: scan
5、f(%d%d,&a,&b); printf(a=%d,b=%dn,a,b);3.1.2 順序結(jié)構(gòu)語句2 C語言程序設(shè)計(jì) 環(huán)境) C語言程序設(shè)計(jì) 環(huán)境)C程序?qū)嵗纠?.2】由鍵盤輸入兩個(gè)整數(shù)給變量a和b,然后輸出a和b,在交換a和b中的值后,再輸出a和b,驗(yàn)證兩個(gè)變量中的數(shù)值是否正確地進(jìn)行了交換。 /*程序名為。*/ #include stdio.h main() int a,b,t; printf(Enter a and b:n); scanf(%d%d,&a,&b);printf(a=%d,b=%dn,a,b); t=a;a=b;b=t; printf(a=%d,b=%dn,a,b); 程
6、序運(yùn)行情況如下:Enter a and b: 123 456 a=123,b=456 a=456,b=123 返回本節(jié)目錄3.1.3 程序?qū)嵱?xùn)【例3.2】返回本節(jié)目錄注意:在程序中交換兩個(gè)變量a 和b的值,不可以簡(jiǎn)單地用: a=b;b=a;兩條語句來實(shí)現(xiàn)。假設(shè)a 和b的值分別為23和78,賦值語句a=b;將使a的值變?yōu)?8,接下來的b=a;使b的值變?yōu)?8,這樣,a和b的值最終都變?yōu)?8。所以在本例中引入了中間變量t,用來臨時(shí)存放a的值,這樣才能完成變量a和b的正確交換?!纠?. 3】輸入一個(gè)double類型的數(shù),使該數(shù)保留小數(shù)點(diǎn)后兩位,對(duì)第三位小數(shù)進(jìn)行四舍五入處理,然后輸出此數(shù),以便驗(yàn)證處理
7、是否正確。/*程序名為。*/#include stdio.h main() double x; printf(Input x:n); scanf(%lf,&x); 3.1.3 程序?qū)嵱?xùn)【例3.3】 C語言程序設(shè)計(jì) 環(huán)境)3.1.3 程序?qū)嵱?xùn)【例3. 3】 C語言程序設(shè)計(jì) 環(huán)境)返回本節(jié)目錄printf(1) x=%fn,x); /*將x輸出*/ x=x*100; x=x+0.5; x=(int)x; x=x/100; /*將x擴(kuò)大100倍,加上之后取整,再縮小100倍*/ printf(2) x=%fn,x); /*將四舍五入后的x輸出*/ 程序運(yùn)行情況如下:Input x:3.14159則輸
8、出的結(jié)果為:3.1.3 程序?qū)嵱?xùn)【例3.4】 C語言程序設(shè)計(jì) 環(huán)境)返回本節(jié)目錄【例3.4】從鍵盤上輸入一大寫英文字母,要求改用相應(yīng)的小寫字母輸出。/*程序名為。*/#include stdio.h main() char c1,c2; scanf(%c,&c1); printf(The upper case is %c .n,c1); c2=c1+a-A; printf(The lower case is %c .n,c2); 程序運(yùn)行時(shí):輸入:B輸出:The upper case is B . The lower case is b .3.2 選擇結(jié)構(gòu)程序設(shè)計(jì) C語言程序設(shè)計(jì) 環(huán)境)3.2
9、.1 選擇結(jié)構(gòu)的C程序?qū)嵗?.2.2 if 語句3.2.3 switch 語句3.2.4 程序?qū)嵱?xùn) 返回本章目錄3.2.1 選擇結(jié)構(gòu)的 C程序?qū)嵗?C語言程序設(shè)計(jì) 環(huán)境)返回本節(jié)目錄 【例3.5】請(qǐng)輸入兩個(gè)整數(shù)a,b,比較a+b和ab哪個(gè)大,輸出判斷結(jié)果。 /*程序名為。*/ #include stdio.h main() int a,b,s1,s2; printf(請(qǐng)輸入兩個(gè)整數(shù)a,b:); scanf(%d,%d,&a,&b); s1=a+b; s2=a*b; /*求兩個(gè)數(shù)的和、積*/ if(s1s2) printf(a+b)(a*b) /n); /*語句A*/ else printf(
10、(a+b)=(a*b)n); /*語句B*/ C語言程序設(shè)計(jì) 環(huán)境)運(yùn)行結(jié)果為: 請(qǐng)輸入兩個(gè)整數(shù)a,b:2,3 (a+b)s2,則執(zhí)行語句A(跳過語句B不執(zhí)行),否則,就跳過語句A執(zhí)行語句B??梢奿f語句在程序中起到了改變語句執(zhí)行順序的作用。if語句就是我們?cè)谙乱还?jié)中要介紹的條件分支語句。3.2.1 選擇結(jié)構(gòu)的 C程序?qū)嵗Y(jié)果 返回本節(jié)目錄 if 語句 C語言程序設(shè)計(jì) 環(huán)境). if語句的一般形式返回本節(jié)目錄2. if-else中的復(fù)合語句3. 非關(guān)系、非邏輯表達(dá)式構(gòu)成的條件表達(dá)式4. if語句的嵌套. if語句的一般形式1 C語言程序設(shè)計(jì) 環(huán)境) 1if語句的一般形式:if語句有兩種形式:
11、(1)不含else子句的if語句語句形式如下:if() 例如if(ab)t=a;a=b;b=t;其中,if是C語言的關(guān)鍵字,表達(dá)式兩側(cè)的圓括號(hào)不可少,最后是一條語句,稱為if子句。如果在if子句中需要多個(gè)語句,則應(yīng)該使用花括號(hào)把一組語句括起來組成復(fù)合語句,這樣在語法上仍滿足一條語句的要求。執(zhí)行過程:首先計(jì)算緊跟在if后面一對(duì)圓括號(hào)中的表達(dá)式的值,如果該表達(dá)式的值為非零(“真”),則執(zhí)行其后的if子句,然后去執(zhí)行if語句后的下一個(gè)語句。如果該表達(dá)式的值為零(“假”),則跳過if子句,直接執(zhí)行if語句后的下一個(gè)語句。返回目錄. if語句的一般形式2 C語言程序設(shè)計(jì) 環(huán)境) (2)含else子句的i
12、f語句語句形式如下:if() else執(zhí)行過程:首先計(jì)算的值,如果該表達(dá)式的值為非零(真),則執(zhí)行,如果該表達(dá)式的值為零(假),則跳過,直接執(zhí)行,兩者執(zhí)行其一后再去執(zhí)行if語句后的下一個(gè)語句。返回目錄 C語言程序設(shè)計(jì) 環(huán)境). if語句的一般形式實(shí)例【例3.6】求分段函數(shù)的值,如果x0, y=2x+1,否則, y=0 。#include stdio.hmain() /*程序名為。*/ int x,y; /*變量y存放f(x)的值*/ printf(請(qǐng)輸入x的值:); scanf(%d,&x); if(x=0) y=2*x+1; else y=0; printf(當(dāng)x=%d時(shí),f(x)=%d,x
13、,y); 返回目錄. if語句的一般形式實(shí)例 C語言程序設(shè)計(jì) 環(huán)境)運(yùn)行結(jié)果: 請(qǐng)輸入x的值:3 當(dāng)x=3時(shí),f(x)=7因?yàn)檩斎離=3,那么x=0為真,所以輸出2*3+1=7。C語言中有一種特有的條件運(yùn)算符“?:”,我們?cè)谇懊嬲鹿?jié)已作介紹,它在某種程序上可以起到邏輯判斷的作用。本例中的if語句也可用條件運(yùn)算符表達(dá)式實(shí)現(xiàn)如下:y=x=0?2*x+1:0; 但有些判斷不能用條件表達(dá)式完成,或者很繁瑣、表達(dá)不清晰。返回目錄2. if-else中的復(fù)合語句 C語言程序設(shè)計(jì) 環(huán)境)2. if-else中的復(fù)合語句 如果兩個(gè)分支中需要執(zhí)行的語句不止一條,必須用“”括起來,作為一個(gè)復(fù)合語句使用。若只是一條
14、語句,“”可以省略?!咀⒁狻?1)if后面的一定要有括號(hào);(2)if和else同屬于一個(gè)if語句,else不能作為語句單獨(dú)使用,它只是if語句的一部分,與if配對(duì)使用,因此程序中不可以沒有if而只有else;(3)只能執(zhí)行與if有關(guān)的語句或者執(zhí)行與else有關(guān)的語句,而不可能同時(shí)執(zhí)行兩者;(4)如果和是非復(fù)合語句,那么該語句一定要以分號(hào)結(jié)束, (5)if語句的表達(dá)式可以是任意類型的C語言的合法的表達(dá)式,但計(jì)算結(jié)果必須為整型、字符型或浮點(diǎn)型之一。返回目錄3.非關(guān)系、非邏輯表達(dá)式構(gòu)成的條件表達(dá)式1 C語言程序設(shè)計(jì) 環(huán)境)3.非關(guān)系、非邏輯表達(dá)式構(gòu)成的條件表達(dá)式 【例3.10】以賦值表達(dá)式為分支條件
15、的實(shí)例。 /*程序名為。*/ #includestdio.h main() int s; if(s=2) printf(hello); else printf(error); if后面圓括號(hào)中的表示分支條件的類型不限于邏輯/關(guān)系表達(dá)式,可以是任意的C語言有效表達(dá)式(如賦值表達(dá)式,算術(shù)表達(dá)式等等),因此也可以是作為表達(dá)式特例的常量或變量。返回目錄 C語言程序設(shè)計(jì) 環(huán)境)3.非關(guān)系、非邏輯表達(dá)式構(gòu)成的條件表達(dá)式2【例3.10】中的條件表達(dá)式是一個(gè)賦值表達(dá)式,并不是判斷s是否等于2。相當(dāng)于if(2)printf(hello);,這是合法的。由于該條件表達(dá)式的值是非零值,恒為真,故本程序的printf
16、(error);無論如何都不會(huì)被執(zhí)行。if語句最終執(zhí)行哪一個(gè)分支,取決于條件表達(dá)式的計(jì)算結(jié)果。同一個(gè)條件的也可以用多種表達(dá)方式。【例3.11】以變量為分支條件的實(shí)例。 /*程序名為。*/#include stdio.h main() int x,y; scanf(%d,&x); if(x) y=1; else y=-1; 返回目錄3.非關(guān)系、非邏輯表達(dá)式構(gòu)成的條件表達(dá)式3 C語言程序設(shè)計(jì) 環(huán)境)printf(y=%dn,y); 現(xiàn)把程序中if(x)改成if(x!=0),此時(shí)雖然條件表達(dá)式寫法不同,但是完成的功能是相同的。下面兩種表示方法經(jīng)常使用:if(x)等價(jià)于if(x!=0)if(!x)等價(jià)
17、于if(x=0)返回目錄4. if語句的嵌套1 C語言程序設(shè)計(jì) 環(huán)境) 在一個(gè)if語句中又包含另一個(gè)if語句,從而構(gòu)成了if語句的嵌套使用。內(nèi)嵌的if語句既可以嵌套在if子句中,也可以嵌套在else子句中。例如: 【例3.12】輸入a,b兩個(gè)整數(shù)的值,比較大小并輸出結(jié)果。#include stdio.h“ /*程序名為。*/ main() int a,b; printf(請(qǐng)輸入a,b:) ; scanf(%d%d,&a,&b); if(ab) printf(abn); else if(ab) printf(ay) if(zx) max=z; else if(yx) max=y; printf(
18、 max=%d,max); 運(yùn)行結(jié)果: max=4返回目錄4. if語句的嵌套實(shí)例2 C語言程序設(shè)計(jì) 環(huán)境) 【例3.14】編寫程序,根據(jù)輸入的學(xué)生成績(jī),給出相應(yīng)的等級(jí)。90分以上的等級(jí)為A,60分以下的等級(jí)為E,其余每10分一個(gè)等級(jí)。程序如下:#includestdio.h main() /*程序名為。*/ int g; printf(input g:); scanf(%d,&g); printf(g=%d: ,g); if(g=90) printf(An); else if(g=80) printf(Bn); else if(g=70) printf(Cn); else if(g=60)
19、printf(Dn); else printf(En); 返回目錄4. if語句的嵌套實(shí)例3 C語言程序設(shè)計(jì) 環(huán)境)當(dāng)執(zhí)行以上程序時(shí),首先輸入、輸出學(xué)生的成績(jī),然后進(jìn)入if語句; if語句中的表達(dá)式將依次對(duì)學(xué)生成績(jī)進(jìn)行判斷,若能使某 if 后的表達(dá)式值為1,則執(zhí)行與其相應(yīng)的子句,之后便退出整個(gè)if結(jié)構(gòu)。例如,若輸入的成績(jī)?yōu)?8分,首先輸出: g=78 : ,當(dāng)從上至下逐一檢測(cè)時(shí),使g=70這一表達(dá)式的值為1,因此在輸出g=78 :之后再輸出C,便退出整個(gè)if結(jié)構(gòu)。若輸入的成績(jī)?yōu)?0分,首先輸出相應(yīng)成績(jī)g=30:,其次進(jìn)入相應(yīng)判斷,最后再輸出相應(yīng)等級(jí)E,便退出整個(gè)if結(jié)構(gòu)。返回目錄3.2.3 s
20、witch 語句 C語言程序設(shè)計(jì) 環(huán)境). switch語句的一般形式返回本節(jié)目錄2. switch語句的執(zhí)行過程3. switch語句的實(shí)例1 . switch語句的一般形式 C語言程序設(shè)計(jì) 環(huán)境)1. switch語句的一般形式switch語句的一般形式是:switch() case : case : case : default: 【說明】:switch語句是關(guān)鍵字,其后面大括號(hào)里括起來的部分稱為 switch語句體。要特別注意必須寫這一對(duì)大括號(hào)。switch后的運(yùn)算結(jié)果可以是整型、字符型或枚舉型表達(dá)式等,兩邊的括號(hào)不能省略。返回目錄 C語言程序設(shè)計(jì) 環(huán)境)case也是關(guān)鍵字,與其后面合
21、稱為case語句標(biāo)號(hào)。的值在運(yùn)行前必須是確定的,不能改變,因此不能是包含變量的表達(dá)式,而且數(shù)據(jù)類型必須與一致。如: int x=3,y=7, z; switch(z) case 1+2: /*是正確的*/ case x+y: /*是錯(cuò)誤的*/ case和常量之間要有空格,case后面的常量之后有:。default也是關(guān)鍵字,起標(biāo)號(hào)的作用。代表所有case標(biāo)號(hào)之外的那些標(biāo)號(hào)。default可以出現(xiàn)在語句體中任何標(biāo)號(hào)位置上。在switch語句體中也可以無default標(biāo)號(hào)。、等,可以是一條語句,也可以是若干語句。必要時(shí),case 語句標(biāo)號(hào)后的語句可以不寫。1 . switch語句的一般形式返回目錄
22、2 . switch語句的執(zhí)行過程 C語言程序設(shè)計(jì) 環(huán)境)2. switch語句的執(zhí)行過程首先計(jì)算的值,然后在switch語句體內(nèi)尋找與該吻合的case標(biāo)號(hào),如果有與該值相等的標(biāo)號(hào),則執(zhí)行從該標(biāo)號(hào)后開始的各語句,包括在其后的所有case和default語句,直到switch語句體結(jié)束。如果沒有與該值相等的標(biāo)號(hào),并且存在default標(biāo)號(hào),則從default標(biāo)號(hào)后的語句開始執(zhí)行,直到switch語句體結(jié)束。如果沒有與該值相等的標(biāo)號(hào),并且不存在default標(biāo)號(hào),則跳過switch語句體,什么也不執(zhí)行。在switch語句中使用break語句break語句也稱間斷語句??梢栽诟鱾€(gè)case之后的語句最
23、后加上break語句,每當(dāng)執(zhí)行到break語句時(shí),立即跳出switch語句體。switch語句通??偸呛蚥reak語句聯(lián)合使用,使得switch語句真正起到多個(gè)分支的作用。返回目錄3 . switch語句的實(shí)例 C語言程序設(shè)計(jì) 環(huán)境)3. switch語句的實(shí)例【例3.17】模擬自動(dòng)飲料機(jī)。按屏幕所示功能,輸入所選擇的合法數(shù)字,輸出可獲得的相應(yīng)飲料名稱。程序如下: /*程序名為。*/#include stdio.hmain() int button; printf(=自動(dòng)飲料機(jī) =n); printf(1.可口可樂n); printf(2.雪碧n); printf(3.芬達(dá)n); printf
24、(4.百事可樂n); printf(5.非??蓸穘); printf(請(qǐng)按1-5鍵選擇飲料:n); scanf(%d,&button); 返回目錄3 . switch語句的實(shí)例 C語言程序設(shè)計(jì) 環(huán)境)switch(button) case 1:printf(n你獲得一聽可口可樂n);break; case 2:printf(n你獲得一聽雪碧n);break; case 3:printf(n你獲得一聽芬達(dá)n);break; case 4:printf(n你獲得一聽百事可樂n);break; case 5:printf(n你獲得一聽非常可樂n);break; default:printf(n非法操
25、作!n);break; 運(yùn)行結(jié)果:=自動(dòng)飲料機(jī)=1.可口可樂2.雪碧3.芬達(dá)4.百事可樂5.非常可樂請(qǐng)按1-5按鈕選擇飲料:3你獲得一聽芬達(dá)返回目錄 C語言程序設(shè)計(jì) 環(huán)境)返回本章目錄3.3.2 while語句3.3.3 do-while語句3.3.1 循環(huán)結(jié)構(gòu)的C程序?qū)嵗?.3 循環(huán)結(jié)構(gòu)程序設(shè)計(jì)3.3.4 for 語句3.3.5 循環(huán)的嵌套3.3.6 break語句和continue語句3.3.7 程序?qū)嵱?xùn)3.3.1 循環(huán)結(jié)構(gòu)的C程序?qū)嵗?C語言程序設(shè)計(jì) 環(huán)境)【例3.19】有一張厚度為毫米的紙,假設(shè)它足夠大,重復(fù)將其對(duì)折,問對(duì)折多少次之后,其厚度可以抵達(dá)(再對(duì)折一次就超過)珠穆朗瑪峰的高度
26、?程序如下: main() /*程序名為。*/ double h=0.1; int n=0; /* n用來累計(jì)對(duì)折次數(shù)*/ while(h=8848180) h=h*2; n=n+1; printf(對(duì)折次數(shù)為:%d,此時(shí)厚度:%.2fn,n-1,h/2); 重復(fù)對(duì)折一張紙,實(shí)質(zhì)就是厚度乘以2,次數(shù)加1。用順序結(jié)構(gòu)編程為:h=h*2; n=n+1; 這樣的語句一直重復(fù)寫到h滿足題目要求為止。實(shí)際中這類問題,就可用循環(huán)結(jié)構(gòu)編程實(shí)現(xiàn)。本例中,使用的是循環(huán)結(jié)構(gòu)中的while語句。C語言共有三種類型的循環(huán)語句,while、do-while和for語句。返回本節(jié)目錄3.3.2 while語句 C語言程序
27、設(shè)計(jì) 環(huán)境)返回本節(jié)目錄1.while語句的一般形式while()說明:while語句是C的關(guān)鍵字,其后面的一對(duì)括號(hào)中的,可以是C語言的任意合法表達(dá)式,由它來控制循環(huán)體語句是否執(zhí)行,括號(hào)不能省略??梢允且粭l語句,也可以是多條語句,一般來說循環(huán)體是一條語句時(shí)不用加,如果是多條語句,就一定要加 構(gòu)成復(fù)合語句。其中的語句可以是空語句、表達(dá)式語句或作為循環(huán)體一部分的復(fù)合語句,如果循環(huán)體是一個(gè)空語句,表示不執(zhí)行任何操作(一般用于延時(shí))。(1)計(jì)算while后一對(duì)括號(hào)中的的值。當(dāng)值為非零時(shí),則執(zhí)行步驟(2);當(dāng)值為零時(shí),則執(zhí)行步驟(3)。(2)執(zhí)行后,轉(zhuǎn)去執(zhí)行步驟(1)。(3)退出while循環(huán)。2.wh
28、ile語句的執(zhí)行過程while語句實(shí)例 C語言程序設(shè)計(jì) 環(huán)境)語句實(shí)例 例3.21】用while循環(huán)語句實(shí)現(xiàn)從1加到100,并將結(jié)果打印出來。 /*程序名為。*/#include stdio.hmain() / *若sum的值超過int型變量能表示的范圍,則設(shè)置成長(zhǎng)整型*/ int sum=0,i=1; while(i=100) sum+=i; i+; printf(其和是 %dn,sum); /*若sum為長(zhǎng)整型,則相應(yīng)的輸出也設(shè)置成長(zhǎng)整型ld*/ 運(yùn)行結(jié)果:其和是5050返回本節(jié)目錄 do while();說明:do是C語言的關(guān)鍵字,必須和while聯(lián)合使用。do-while循環(huán)由do開始
29、,用while結(jié)束;注意,在while結(jié)束后必須有分號(hào),它表示該語句的結(jié)束。其它同while循環(huán)語句。3.3.3 do-while語句 C語言程序設(shè)計(jì) 環(huán)境)1.do-while語句的一般形式返回本節(jié)目錄2.do-while語句的執(zhí)行過程(1)執(zhí)行do后面的。 (2)計(jì)算while后一對(duì)括號(hào)中的的值。當(dāng)值為非零時(shí),轉(zhuǎn)去執(zhí)行步驟(1)。當(dāng)值為零時(shí),則執(zhí)行步驟(3)。 (3)退出while循環(huán)。運(yùn)行結(jié)果:其和是5050在本例中,循環(huán)條件和循環(huán)體以及得到的結(jié)果都是和while循環(huán)一樣的,只是用do-while語句來實(shí)現(xiàn)。do-while語句實(shí)例 C語言程序設(shè)計(jì) 環(huán)境)語句實(shí)例 【例3.23】用do-
30、while語句實(shí)現(xiàn)求1+2+100的和。#include stdio.h /*程序名為。*/main() int sum=0,i=1; / *若sum的值超過int型變量能表示的范圍,則設(shè)置成長(zhǎng)整型*/ do sum+=i; i+; while(i=100); printf(其和是 %dn,sum); /*若sum為長(zhǎng)整型,則相應(yīng)的輸出也設(shè)置成長(zhǎng)整型ld*/ 返回本節(jié)目錄3.3.4 for 語句 C語言程序設(shè)計(jì) 環(huán)境)for語句是C語言提供的一種在功能上比前面兩種循環(huán)語句更強(qiáng)的一種循環(huán)語句。for循環(huán)語句格式如下:for(;)說明:for是C語言的關(guān)鍵字,三個(gè)表達(dá)式之間的必須用分號(hào);隔開。三個(gè)
31、表達(dá)式可以是任意形式的C表達(dá)式,通常主要用于for循環(huán)的控制。一般用于計(jì)算循環(huán)變量初始值,為循環(huán)體是否執(zhí)行的條件,為循環(huán)變量的調(diào)整。的使用同while、do-while循環(huán)語句。for循環(huán)語句的格式還可以表示為:for(;)在某種情況下,用for語句表示循環(huán),顯得緊湊而清晰。尤其是它能利用自動(dòng)地使循環(huán)變量發(fā)生改變,不像while結(jié)構(gòu)那樣要在循環(huán)體中設(shè)置修正操作。實(shí)際上,for語句中的不僅限于修正循環(huán)變量,而且可以是任何操作。例如前面例題中介紹的求1到100的和,用for語句可以表示為: for(sum=0,i=1;i=n;sum+=i,i+);返回本節(jié)目錄1.for語句的一般形式for 語句的
32、執(zhí)行過程 C語言程序設(shè)計(jì) 環(huán)境)返回本節(jié)目錄語句的執(zhí)行過程首先計(jì)算。求的值;若其值為非零,則轉(zhuǎn)去執(zhí)行;若的值為零,則轉(zhuǎn)去執(zhí)行,結(jié)束for語句。執(zhí)行一次for循環(huán)體。求解,轉(zhuǎn)執(zhí)行。結(jié)束循環(huán),執(zhí)行循環(huán)之后的語句。3.for語句實(shí)例【例3.25】用for語句實(shí)現(xiàn)求1-100之和。#include stdio.hmain() /*程序名為。 int sum=0,i=1; / *若sum的值超過int型變量能表示的范圍,則設(shè)置為長(zhǎng)整型*/for 語句的實(shí)例 C語言程序設(shè)計(jì) 環(huán)境)返回本節(jié)目錄for( ;i=n;i+) sum+=i;printf(其和是 %dn,sum); /*若sum為長(zhǎng)整型,則相應(yīng)的
33、輸出也設(shè)置成長(zhǎng)整型ld*/ 運(yùn)行結(jié)果:其和是5050for循環(huán)的執(zhí)行過程:先執(zhí)行表達(dá)式1,為空語句,然后判斷i=n是否成立,如果為真,執(zhí)行循環(huán)體sum+=i,轉(zhuǎn)而執(zhí)行i+,再判斷i=n,如此反復(fù),直到i=n為假為止。在這個(gè)例子中,i是循環(huán)控制變量,每次循環(huán)時(shí),它的值都被改變且進(jìn)行檢驗(yàn)。for 語句多樣性 C語言程序設(shè)計(jì) 環(huán)境)返回本節(jié)目錄for語句的多樣性由于C語言中表達(dá)式的形式十分豐富,對(duì)for語句的三個(gè)控制表達(dá)式可以靈活運(yùn)用,因此造成for語句形式多種多樣。(1)為空語句如上例中求1-100的和。本來由完成的初始化可提到循環(huán)之外完成。(2)和是逗號(hào)表達(dá)方式(3)用空循環(huán)來延長(zhǎng)時(shí)間常用空循環(huán)
34、來產(chǎn)生延時(shí),以達(dá)到某種特定要求。如:for(t=0;ttime;t+);(4)無限循環(huán)for循環(huán)的三個(gè)表達(dá)式中,任何一個(gè)都可以省略,但是分號(hào);不可省略。所以下面的寫法:for(;)是一個(gè)無限循環(huán)。將成為死循環(huán)。3.3.5 循環(huán)的嵌套 C語言程序設(shè)計(jì) 環(huán)境)返回本節(jié)目錄在一個(gè)循環(huán)內(nèi)又完整地包含另一個(gè)循環(huán),稱為循環(huán)的嵌套,即循環(huán)體自身包含循環(huán)語句。前面介紹了三種類型的循環(huán),它們自己本身可以嵌套,如在for循環(huán)中包含另一個(gè)for循環(huán),也可以互相嵌套,例如可以for循環(huán)中包含一個(gè)while循環(huán)或者do-while循環(huán)等等。下面通過幾個(gè)例子來介紹循環(huán)嵌套的概念和運(yùn)用?!纠?.26】打印如下形式的乘法小九
35、九表:1*1=12*1=2 2*2=49*1=9 9*2=18 9*3=27 9*9=81分析:表體共九行,所以首先考慮一個(gè)打印九行的算法:for(i=1;i=9;i+) 打印第i行其次考慮如何打印第i行。每行都有i個(gè)表達(dá)式?*?=積,可以寫為:for(j=1;j = i;j+) 打印第j個(gè)表達(dá)式循環(huán)的嵌套實(shí)例 C語言程序設(shè)計(jì) 環(huán)境)返回本節(jié)目錄打印第j個(gè)表達(dá)式,可寫為:printf(%d*%d=%-3d,i,j,i*j);在寫這個(gè)語句時(shí),不寫換行,只能在第j個(gè)表達(dá)式輸出后寫一個(gè)語句使之換行。printf(n);綜上所述,打印以上形式的乘法小九九表的程序如下:【例3.26】 /*程序名為。*/
36、#include stdio.hmain() int i,j; /* i,j 分別控制行和列的輸出*/for(i=1;i=9;i+) for(j=1;j = i;j+) printf(%d*%d=%-3d,i,j,i*j);printf(n); /*另起一行*/ 3.3.6 break語句和continue語句 C語言程序設(shè)計(jì) 環(huán)境)返回本節(jié)目錄1. break語句2. continue語句1. break語句 C語言程序設(shè)計(jì) 環(huán)境)返回目錄1. break語句前面已經(jīng)介紹過用break語句跳出當(dāng)前的switch語句流程。在循環(huán)結(jié)構(gòu)中,也可以用break語句使流程跳出本層循環(huán)體,從而提前強(qiáng)制性
37、結(jié)束本層循環(huán)。break語句的一般形式為: break;【例3.28】在循環(huán)體中break語句執(zhí)行示例。#include stdio.h main() /*程序名為。*/ int i,s=0; for(i=1;i5) break; printf(s=%dn,s); printf(使用break語句時(shí),s的最終值為:%dn,s); break語句 C語言程序設(shè)計(jì) 環(huán)境)程序運(yùn)行后的輸出結(jié)果如下:s=1s=3使用break語句時(shí),s的最終值為:6本例中,如果沒有break語句,程序?qū)⑦M(jìn)行10次循環(huán);但當(dāng)i=3時(shí),s的值為6,if語句中的表達(dá)式s5 值為1,于是執(zhí)行break語句, 循環(huán)立即中斷,跳
38、出for循環(huán),從而提前中止循環(huán),并轉(zhuǎn)向循環(huán)體外的下一條語句。此時(shí),s的值為6。break語句使用說明:(1)只能在switch語句體和循環(huán)體內(nèi)使用break語句。(2)當(dāng)break語句出現(xiàn)在,其作用是跳出該switch語句體。當(dāng)break語句出現(xiàn)在循環(huán)體中,但并不在switch語句體內(nèi)時(shí),則在執(zhí)行break語句后,使流程跳出本層循環(huán)體。返回目錄2. Continue語句 C語言程序設(shè)計(jì) 環(huán)境)語句continue語句的一般形式為: continue;【例3.30】將【例3.28】中的break語句改用continue語句,來比較兩者的區(qū)別。#include stdio.h main() /*程序名為。*/ int i,s=0; for(i=1;i5) cont
溫馨提示
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025-2030年中國(guó)發(fā)動(dòng)機(jī)曲軸行業(yè)商業(yè)模式創(chuàng)新戰(zhàn)略制定與實(shí)施研究報(bào)告
- 2025-2030年中國(guó)鉭電容器行業(yè)并購(gòu)重組擴(kuò)張戰(zhàn)略制定與實(shí)施研究報(bào)告
- 高效會(huì)議管理培訓(xùn)課件
- 消防水炮知識(shí)培訓(xùn)課件
- 煤氣安全知識(shí)培訓(xùn)課件
- 2024中國(guó)采礦、采石設(shè)備制造市場(chǎng)前景及投資研究報(bào)告
- 廣西賀州市八步區(qū)2023-2024學(xué)年九年級(jí)上學(xué)期期末化學(xué)試題
- 炭疽防控知識(shí)培訓(xùn)課件下載
- 電磁學(xué)知識(shí)培訓(xùn)課件
- 市引申蒙氏教學(xué)幼兒園工作參考計(jì)劃
- 建筑公司員工合規(guī)手冊(cè)
- 質(zhì)量保證的基本原則與方法
- 第1講-句子結(jié)構(gòu)
- 鼻腔沖洗護(hù)理技術(shù)團(tuán)體標(biāo)準(zhǔn)解讀
- 《流感科普宣教》課件
- 紅領(lǐng)巾知識(shí)伴我成長(zhǎng)課件
- 廚邦醬油推廣方案
- 腦血管病的三級(jí)預(yù)防
- 保險(xiǎn)產(chǎn)品創(chuàng)新與市場(chǎng)定位培訓(xùn)課件
- 2022-2023學(xué)年山東省淄博四中高二(上)期末數(shù)學(xué)試卷含答案
- 《建筑賦比興》一些筆記和摘錄(上)
評(píng)論
0/150
提交評(píng)論