




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、第五章 具有循環(huán)結(jié)構(gòu)的C 程序設(shè)計(jì),循環(huán)是計(jì)算機(jī)解題的一個(gè) 重要特征。由于計(jì)算機(jī)運(yùn)算速度快,最 適宜做重復(fù)性的工作。當(dāng)我們?cè)谶M(jìn)行程序設(shè)計(jì) 時(shí),總是要把復(fù)雜的不易理解的求解過程轉(zhuǎn) 換為容易理解的操作的多次重復(fù), 從而降低了問題的復(fù)雜度,同時(shí)也 減少程序書寫及輸入的工作量,1+2+3+4+5+ +100,s=0, i=1,i=100,s=s+i,i=i+1,輸出結(jié)果 s,sum=88+78+90+ +86 ave=sum/32,sum=0, num=1,輸入成績(jī) g,sum=sum+g,num=num+1,輸出結(jié)果 ave,num=32,ave=sum/num,goto 與 if,while,do
2、 - while,for,5.1 goto if 語句,main() int i,s=0; i=1; label : if (i=100) s=s+i; i+; goto label; printf(“s=%dn”,s ); ,語句格式 :,goto 語句標(biāo)號(hào); . 語句標(biāo)號(hào):語句 ;,語句功能 :,無條件地重復(fù)執(zhí)行標(biāo)號(hào)后面的語句,語句說明 :,語句標(biāo)號(hào)- 用于標(biāo)識(shí)程序中某個(gè)語句的 位置。,1+2+3+4+5+ +100,舉例,5.1 goto if 語句,main() int n1,n2, x, num ; n1=n2=num=0 label : scanf(“%dn”, ,從鍵盤輸入100
3、個(gè)有符號(hào)整數(shù),請(qǐng) 分別統(tǒng)計(jì)其中正整數(shù)和負(fù)整數(shù)的個(gè)數(shù)。,練習(xí),5.2 while 語句,語句格式 :,while (條件表達(dá)式) 語句1; 語句2; 語句n; ,語句功能 :,當(dāng)條件表達(dá)式的值為真時(shí) 重復(fù)執(zhí)行循環(huán)體中各語句。,語句說明 :,條件表達(dá)式 - 允許是關(guān)系表達(dá)式 邏輯表達(dá)式 賦值表達(dá)式,先計(jì)算表達(dá)式 的值并判斷, 若表達(dá)式值為 “真” (即非零值), 則執(zhí)行循環(huán)體中的語句;然后再計(jì)算再判斷, 如此重復(fù), 直到表達(dá)式值為“假”(即0值)時(shí),則跳出循環(huán),循環(huán)體,1+2+3+4+5+ +100, sum+=i;, sum ;,printf(“%dn”, sum); ,sum=0; i=1;,
4、i+; ,while(i=100),練習(xí), int a=1,b=2,c=2,t=0; while (a=A ,main() int n=0; while (n3) printf(“n is %dn”, n); n+; printf(“n=%dn”,n); ,舉例, . int y ; y=10; while (y-) ; printf(“ %d,”, y); .,舉例, int num=0; while (num=2) num+; printf(“ %dn”, num); ,C,-1,5.3 do-while 語句,do 語句1; 語句2; 語句n; while(表達(dá)式),語句功能 :,當(dāng)條件
5、表達(dá)式的值為真時(shí) 重復(fù)執(zhí)行循環(huán)體中各語句。,表達(dá)式 - 允許是關(guān)系表達(dá)式 邏輯表達(dá)式 賦值表達(dá)式,首先無條件地執(zhí)行一次循環(huán)體中的語句,然后再判斷表達(dá)式的值, 若表達(dá)式值為 “真” (即非零值), 則執(zhí)行循環(huán)體中的語句;然后再計(jì)算再判斷, 如此重復(fù),直到表達(dá)式值為“假”(即0值)時(shí),則跳出循環(huán),循環(huán)體, char ch; do scanf(“%c”, ,語句格式 :,語句說明 :,1+2+3+4+5+ +100,do sum+=i;, sum ;,printf(“%dn”, sum); ,sum=0; i=1;,i+;, while(i=100);,練習(xí), x=-1; do x=x*x; whi
6、le( !x); ,(D),C) 循環(huán)執(zhí)行一次,練習(xí),main() y=10; do y-; while(-y); printf(“%dn”, y-); ,(D),D) 0,5.3 while 語句,練習(xí),main() x=3; do printf(“%d ,”, x-=2); while( !(-x) ); ,(D),B) 1, -2,1,寫出下列程序段的運(yùn)行結(jié)果,s=5,寫出下列程序段的運(yùn)行結(jié)果以 及循環(huán)體中的語句共執(zhí)行了幾次。,y=7 x=21,(1) y=1,x=3,(2) y=2,x=6,(3) y=3,x=9, ,(7) y=7,x=21,請(qǐng)?jiān)O(shè)計(jì)一個(gè) 譯密碼 的程序,y=1 x=0
7、 循環(huán)體中的語句共執(zhí)行了1次,寫出下列程序段的運(yùn)行結(jié)果以 及循環(huán)體中的語句共執(zhí)行了幾次。,寫出下列程序段的運(yùn)行結(jié)果。,a=12 y=12 a=16 y=28 a=16 y=44 a=16 y=60,寫出下列程序段的運(yùn)行結(jié)果,5.4 for 語句,for(表達(dá)式1;表達(dá)式2;表達(dá)式3;) 語句1; 語句2; 語句n; ,語句格式 :,循環(huán)體,表達(dá)式1 循環(huán)初始表達(dá)式,用于進(jìn)入循環(huán)體前為循環(huán)變量賦初值 由算術(shù)、賦值、邏輯和逗號(hào)表達(dá)式構(gòu)成。,表達(dá)式2 循環(huán)控制表達(dá)式,用于控制循環(huán)體語句的執(zhí)行次數(shù) 由關(guān)系表達(dá)式或邏輯表達(dá)式構(gòu)成。,表達(dá)式3 修改循環(huán)變量表達(dá)式,即每循環(huán)一次使得表達(dá)式1的值就 要變化一次
8、。由算術(shù)、賦值、邏輯或逗號(hào)表達(dá)式構(gòu)成,語句功能 :,當(dāng)表達(dá)式2 的值為真時(shí) 執(zhí)行循環(huán)體中各語句。,main() int n; for(n=1; n=10; n+) printf(“%d,”,n); ,for(表達(dá)式1;表達(dá)式2;表達(dá)式3;) 語句體 ; ,B) 1,1, 2, 3, 4, 5 ,6 ,7, 8 , 9 , 10,main() int n, i=100; for(n=1; n0; n-) printf(“%d,”, i ); ,for(表達(dá)式1;表達(dá)式2;表達(dá)式3;) 語句體 ; ,100, 100, 100, 100 , 100,main() int sum, i ; for(
9、sum=0 , i=1 ; i=100 ; i+) sum+=i ; printf(“sum=%dn”, sum ); ,main() int sum=0, i =1; do sum+=i ; i+; while( i=100 ); printf(“sum=%dn”, sum ); ,main() int sum=0, i =1; while( i=100 ) sum+=i ; i+; printf(“sum=%dn”, sum ); ,main() int sum=0, i =1; label: if( i=100) sum+=i ; i+; goto label; printf(“sum=
10、%dn”, sum ); ,1+2+3+4+5+ +100,練習(xí),0,main() x, y; for(x=0,y=0; x+y=50; x+,y+) printf(“%3d ”, x+y ); if (x%5=0) printf(“n”); ,2,4,6,8 10,12,14 16 18 20,22 24 26 28 30 34 36 38 40 42 44 46 48 50,練習(xí),請(qǐng)編程序?qū)崿F(xiàn)輸出 az 26個(gè)小寫的英文字母,main() char ch;,for ( ch ,a;,ch=z;,printf( “ %c , ”, ch) ; ,ch+ ),練習(xí),輸出 az 26個(gè)小寫的英文
11、 字母所對(duì)應(yīng)的ASCII碼值,main() char ch; for (ch=a;ch=z;ch+) printf(“%d, ”, ch); ,省略表達(dá)式1 該種格式常用于無需 給變量賦初值的情況,for 語句的特殊使用格式:,main() int n; for( ; n=10; n+ ) printf(“%d,” ,n); ,main() int n; n=1; for( ; n100) break; printf( “%d,” ,n ); ,省略表達(dá)式3 即失去了修改循環(huán)變量的值 為此,在體內(nèi)必須設(shè)有替代 表達(dá)式3的功能。,main() int n; for(n=1; n=10; ) pr
12、intf(“%d,”,n); ,main() int n; for(n=1; n=10; ) printf(“%d,”,n); n+; ,省略表達(dá)式1、3 該種格式完全等價(jià)于while 語句 即進(jìn)入循環(huán)體前必須有賦初值語 句,而且在體內(nèi)要有修改循環(huán)變 量的值的語句。,main() int n; for ( ; n=10 ; ) printf(“%d,”, n ); ,main() int n ; n=1; for( ; n=10; ) printf(“%d,”,n); n+; ,while(n=10),#include “string.h” main() char ch; for ( ; (c
13、h getchar() !=n ; ) printf( “ %c ”, ch ); ,省略所有的表達(dá)式 完全等價(jià)于 while(1),main() int n; for( ; ; ) printf(“%d,”, n ); ,while(1),以上介紹的幾種省略 表達(dá)式的 for 語句格式很 少使用,在此只是作為大 家對(duì)該語句的一個(gè)了解。,三、循環(huán)的嵌套使用, for(i=1; i=9; i+) for(j=1; j=9; j+) , while(a!=b) for(n=1; n=5; n+) ,do for(; ;) while( );,for(; ;) while( ) ,while( )
14、while( ) ,請(qǐng)編寫求解下列問題的程序 t=1*2*3* 10,n,main() int n, t;,t=1;,for(n=1; n=10; n+),t=t*n;,printf(“t=%dn”, t); ,t=1, n=1,n=10,t=t*n,n+,輸出 t,(1-10),請(qǐng)編寫求解下列問題的程序: S=1!+2!+3!+ +20!,1!=1,2!=1*2,3!=1*2*3,4!=1*2*3*4,5!=1*2*3*4*5 20!=1*2*3*4*5 *20,i,j (1-,i ),1-20,main() int s, t, i, j;,s=0; t=1;,for(i=1; i=20;
15、i+),t=t*j;,printf(“s=%dn”, s); ,s=0,i (1-20),設(shè): s , t ,i ,j,輸出 s,請(qǐng)編寫求解下列問題的程序: S=1!+2!+3!+ +20!,s+=t,j (1-i),t*=j,t=1,s=0, t=1 i (1-20) j (1 - i),for(j=1; i=i; j+),s+=t ;,t=1;,雙重循環(huán)語句的特點(diǎn),當(dāng)外循環(huán)變量中的值 變換一次時(shí),內(nèi)循環(huán)變量中 的值將變換若干次,練習(xí),請(qǐng)編寫按下列格式 打印九九表程序。,1*1=1 1*2=2 1*3=3 1*9=9 2*1=1 2*2=4 2*3=6 2*9=18 9*1=9 9*2=18
16、 9*3=27 9*9=81,main() int a, b; for (a=1; a=9; a+) for (b=1; b=0; i-) for j=1; j=i; j+) putchar(#); for(j=1; j=4-i; j+) putchar(*); putchar(n); ,前面我們介紹了四種 能夠?qū)崿F(xiàn)循環(huán)的語句,它們退出循環(huán)的 方式通常都是以某個(gè)表達(dá)式的結(jié)果作為 判斷條件,當(dāng)其值為零時(shí)結(jié)束循環(huán)。 除了這種正常結(jié)束循環(huán)的 方式外,還可以利用C語言提供的 專門退出循環(huán)的語句。,主要是用于switch 結(jié)構(gòu)和循環(huán)結(jié)構(gòu)中,main() int i, s=0; for(i=0; i100
17、; i+) scanf(“%dn”, ,main() int x=3,y=6,a=0; while(x+!=(y-=1) a+=1; if (yx) break; printf(“x=%d,y=%d,a=%dn”,x,y,a); ,x=5,y=4,a=1,該語句是專用于循環(huán)結(jié)構(gòu)中改變某一次 循環(huán)流程的語句。 其作用是:使程序流程提前結(jié)束本次循環(huán) 從而開始下一次循環(huán)。,main() int n; for(n=100; n=200; n+) if(n%3!=0) continue; printf(“ %4d n”, n); ,105 108 111 114 117 120 123 ,main() int i, j, x=0; for(i=0; i2; i+) x+; for(j=0; j=3; j+) if(j%2) continue; x+; x+; printf(“x=%d n”, x); ,x=4 B) x=8 x=6 D) x=12,練習(xí),x=4 B) x=8 x=6 D) x=12,(1) i=0,x=1,j=0,x=2,j=2,x=3,x=4,(2) i=1,x=5,j=0,x=6,j=2,x=7,x=8,main() int k=0; char c=A; d
溫馨提示
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 外科醫(yī)生工作總結(jié)(13篇)
- 廠內(nèi)叉車考試試題及答案
- 保險(xiǎn)代人考試試題及答案
- 建筑公司竣工驗(yàn)收資料編制審查制度
- 農(nóng)業(yè)產(chǎn)業(yè)鏈韌性增強(qiáng)與普惠保險(xiǎn)的協(xié)同作用研究
- 建筑公司橋梁工程伸縮縫預(yù)留寬度控制制度
- 建筑公司幕墻玻璃邊緣密封質(zhì)量檢查制度
- 建筑公司風(fēng)險(xiǎn)預(yù)警信息報(bào)送響應(yīng)制度
- 2024-2025學(xué)年小學(xué)信息技術(shù)(河大版三起2023)期末考試卷
- 耐久跑課堂教學(xué)設(shè)計(jì)水平二
- 統(tǒng)編版(2024)一年級(jí)語文上冊(cè)拼音1《a o e》精美課件
- 農(nóng)村房子繼承人放棄繼承協(xié)議書
- WS 329-2024 麻醉記錄單標(biāo)準(zhǔn)
- 2024-2029全球及中國福利管理系統(tǒng)行業(yè)市場(chǎng)發(fā)展分析及前景趨勢(shì)與投資發(fā)展研究報(bào)告
- 新標(biāo)準(zhǔn)英語小學(xué)五年級(jí)下各模塊習(xí)題
- 開票稅點(diǎn)自動(dòng)計(jì)算器
- 人教版二年級(jí)數(shù)學(xué)下冊(cè)乘除法專項(xiàng)考點(diǎn)練習(xí)
- JCT 2768-2024 木塑制品行業(yè)綠色工廠評(píng)價(jià)要求(正式版)
- 中華護(hù)理學(xué)會(huì)成人腸內(nèi)營養(yǎng)支持護(hù)理團(tuán)標(biāo)解讀
- 大鎖孫天宇小品《時(shí)間都去哪了》臺(tái)詞劇本完整版-一年一度喜劇大賽
- DLT 5175-2021 火力發(fā)電廠熱工開關(guān)量和模擬量控制系統(tǒng)設(shè)計(jì)規(guī)程-PDF解密
評(píng)論
0/150
提交評(píng)論