![浙江大學(xué)C顏暉原版課件C5_第1頁](http://file2.renrendoc.com/fileroot_temp3/2021-7/19/ddc89229-3421-496c-928d-2f5636097497/ddc89229-3421-496c-928d-2f56360974971.gif)
![浙江大學(xué)C顏暉原版課件C5_第2頁](http://file2.renrendoc.com/fileroot_temp3/2021-7/19/ddc89229-3421-496c-928d-2f5636097497/ddc89229-3421-496c-928d-2f56360974972.gif)
![浙江大學(xué)C顏暉原版課件C5_第3頁](http://file2.renrendoc.com/fileroot_temp3/2021-7/19/ddc89229-3421-496c-928d-2f5636097497/ddc89229-3421-496c-928d-2f56360974973.gif)
![浙江大學(xué)C顏暉原版課件C5_第4頁](http://file2.renrendoc.com/fileroot_temp3/2021-7/19/ddc89229-3421-496c-928d-2f5636097497/ddc89229-3421-496c-928d-2f56360974974.gif)
![浙江大學(xué)C顏暉原版課件C5_第5頁](http://file2.renrendoc.com/fileroot_temp3/2021-7/19/ddc89229-3421-496c-928d-2f5636097497/ddc89229-3421-496c-928d-2f56360974975.gif)
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
1、2021/3/111 第5章 循環(huán)結(jié)構(gòu)程序設(shè)計(jì) n 循環(huán)語句 n break 和 continue 語句 n 循環(huán)嵌套 2021/3/112 5.1 循環(huán)語句 n問題 打印整數(shù)110 打印整數(shù)1100 打印整數(shù)1n printf(%d, 1); printf(%d, 2); printf(%d, 10); i=1; printf(%d, i); i+; printf(%d, i); i+; printf(%d, i); i+; i=1; while(i=10) printf(%d, i); i+; 2021/3/113 while 語句 while (表達(dá)式) 語句; 語 句 表達(dá)式 非0 0
2、 i=1; while(i sum sum+2 sum sum+3 sum sum+10 sum sum=sum+? sum=0; i=1; while(i=10) sum=sum+i; i+; 循環(huán)不變式 2021/3/115 for 語句 for (exp1; exp2; exp3) 語句; exp3 exp2 非0 0 循環(huán)條件 exp1 語 句 循環(huán)體 2021/3/116 while (表達(dá)式) 語句; 語 句 表達(dá)式 非0 0 for (exp1; exp2; exp3) 語句; exp3 exp2 非0 0 exp1 語 句 exp1; while(exp2) 語句; exp3;
3、 while 和 for 2021/3/117 while 和 for while (表達(dá)式) 語句; for (exp1; exp2; exp3) 語句; exp1; while(exp2 語句; exp3; sum=0; i=1; while(i=10) sum=sum+i; i+; sum=0; for(i=1; i=10; i+) sum=sum+i; 2021/3/118 程序舉例 例T1-1 求1+2+3+4+ n 例T1-2 求1+1/2+1/3+1/4+ 1/n 例T1-3 求1-1/2+1/3-1/4+ 1/n 例T1-4 求1-1/3+1/5-1/6+ 前n項(xiàng)之和 例T2-
4、1 求n! 例T2-2 求xn 例T3-1 求1-1/3+1/5-1/7+ ,直到最后1項(xiàng)的絕對(duì)值10-5 例T4-1 輸入100個(gè)整數(shù),求其中正數(shù)之和 例T4-2 輸入一個(gè)正整數(shù)n, 再輸入n個(gè)數(shù),輸出最大值 例T5 輸出Fibonacci序列前20個(gè)數(shù) 2021/3/119 例T1-1 求1+2+3+4+ n 算法: i =1 to n s=s+t t+ i+ 程序段: s=0; for(i=1; i=n; i+) s=s+i; 算法: i =1 to n s=s+i i+ 2021/3/1110 例T1-2 求1+1/2+1/3+ 1/n 算法: i =1 to n s=s+t t=1.
5、0/i i+ 程序段: s=0; for(i=1; i=n; i+) s=s+1.0/i; 算法: i =1 to n s=s+t t+ i+ 2021/3/1111 例T1-3 求1-1/2+1/3-1/4+ 1/n i =1 to n s=s+t t=1.0/i i+ 程序段: s=0; flag=1; for(i=1; i=n; i+) s=s+1.0/i*flag; flag=-flag; 算法: i =1 to n s=s+t t=1.0/i*flag flag=-flag i+ 2021/3/1112 例T1-4 求1-1/3+1/5- 前n項(xiàng)和 算法: i =1 to n s=s
6、+t t=1.0/i*flag flag=-flag i+ 程序段: s=0;flag=1;tt=1; for(i=1; i=n; i+) s=s+1.0/tt*flag; tt+=2; flag=-flag; 算法: i =1 to n s=s+t t=1.0/tt*flag flag=-flag tt=tt+2 i+ 2021/3/1113 例T2-1 求n! 算法: i =1 to n f=f*t t+ i+ 程序段: f=1; for(i=1; i=n; i+) f=f*i; 算法: i =1 to n f=f*i i+ 2021/3/1114 例T2-2 求xn 算法: i =1 t
7、o n f=f*t t+ i+ 程序段: f=1; for(i=1; i=n; i+) f=f*x; 算法: i =1 to n f=f*t t=x i+ 2021/3/1115 例T3-1 求1-1/3+1/5-直到最后1項(xiàng)的絕對(duì)值= 1E-5) s = s+t; flag = -flag; tt += 2; t = 1.0/tt*flag; i =1 to n s=s+t t=1.0/tt*flag flag=-flag tt=tt+2 i+ 算法: while |t|=1E-5 s=s+t flag=-flag tt=tt+2 t=1.0/tt*flag 2021/3/1116 例T4-
8、1 輸入100個(gè)整數(shù),求其中正數(shù)之和 # include void main() int i , sum=0, x; for (i=0; i0) sum=sum+x; printf(%d,sum); 2021/3/1117 例47 求最大值 輸入3個(gè)數(shù),輸出其中的最大值。 #include void main( ) int a, b, c, max; printf(input a, b, c:n); scanf(%d%d%d, max = a; if(max b) max = b; if(max =1) scanf(%d, max=x; for (i=1; in; i+) scanf(%d,
9、if (max x) max=x; printf(%d, max); x max max x 2021/3/1119 例T5 輸出Fibonacci序列前20個(gè)數(shù) 1, 1, 2, 3, 5, 8, x1 x2 t x1 x2 t 程序段: x1=x2=1; printf(%d %d, x1, x2); for(i=1; i=18; i+) t=x1+x2; printf(%d , t); x1=x2; x2=t; x1=x2=1; t=x1+x2; x1=x2; x2=t; 2021/3/1120 do-while 語句 do 語句 while (表達(dá)式); i=1; do printf(%
10、d, i); i+; while(i0); printf(sum=%d, sum); void main( ) int x, sum=0; scanf(%d, while (x0) sum + = x; scanf(%d, ; printf(sum=%d, sum); 輸入 1 2 5 -10 輸入 -10 1 2 5 sum-x 2021/3/1123 5.2 break 和 continue 語句 #include stdio.h void main( ) char c; int i=0; for (i=0; i10;i+) c=getchar(); if (c=n) break; put
11、char(c); 循環(huán)何時(shí)結(jié)束?循環(huán)何時(shí)結(jié)束? c=getchar(); for (i=0; i= 10 | c = n) break; putchar(c); 1 2021/3/1124 break 流程 結(jié)束循環(huán) while(exp) 語句1 if (expb) break; 語句2 非0 0 exp 語句1 0 expb 語 句2 循環(huán)體 非0 2021/3/1125 continue 流程 跳過continue后面的語句, 繼續(xù)下一次循環(huán) while(exp) 語句1 if (expc) continue; 語句2 非0 0 exp 語句1 0 expb 語 句2 循環(huán)體 非0 202
12、1/3/1126 break 和 continue #include stdio.h void main( ) char c; int i=0; for (i=0; i10;i+) c=getchar(); if (c=n) break; putchar(c); #include stdio.h void main( ) char c; int i=0; for (i=0; i10;i+) c=getchar(); if (c=n) continue; putchar(c); 輸入:abc efgh 123 輸出:abcefgh1輸出:abc 2021/3/1127 例T6 輸入m,判斷m是否
13、為素?cái)?shù) 算法:除了1和m,不能被其它數(shù)整除。 m %2 %3 %4 %5 不是素?cái)?shù) | =0 =0 是素?cái)?shù) for(i=2; in) printf(yesn) else printf(non”); 2021/3/1128 例T7 將一個(gè)正整數(shù)逆序輸出 確定:循環(huán)條件和循環(huán)不變體 12345 5 4 3 2 1 12345 % 10 = 5 12345 / 10 = 1234 1234 % 10 = 4 1234 / 10 = 123 123 % 10 = 3 123 / 10 = 12 12 % 10 = 2 12 / 10 = 1 1 % 10 = 1 1 / 10 = 0 結(jié)束 循環(huán)不變式
14、 x%10 x=x/10 循環(huán)條件 x=0 scanf( “%d”, while (x!=0) digit = x %10; x = x/10 ; printf( “%d ”, digit); 2021/3/1129 例4-10 # include void main( ) char c; printf(Please input a character:n); c = getchar(); if(c=a else printf(This is an other character. n); 輸入一行字符,統(tǒng)計(jì)英文字母、數(shù)字和其他字符。 2021/3/1130 例T8 輸入一行字符,統(tǒng)計(jì)英文字母
15、、數(shù)字和其他字符 # include void main( ) char c; int letter=0, digit=0, other=0; c = getchar(); while(c!=n) if(c=a else other+; c=getchar(); printf(%d %d %d, letter, digit, other); while(c = getchar()!=n) 2021/3/1131 5.3 循環(huán)嵌套 while (表達(dá)式) 語句; 循環(huán)語句 2021/3/1132 例T9-1.1 1!+2!+n! s=0; for(k=1; k=n; k+) s=s+f; f=1
16、; /* n! */ for(i=1; i=n; i+) f=f*i; f=1; for(i=1; i=k; i+) f=f*i; 算法: k=1 to n s = s + f f = k! k+ 2021/3/1133 例T9-1.2 1!+2!+n! 算法: k=1 to n s = s + f f = k! k+ s=0;f=1; for(k=1;k=n;k+) f=f*k; s=s+f; 算法: k =1 to n s = s+f f = f*k k+ 2021/3/1134 例T9-2 兌換零錢 將10元錢換成5角、2角、1角的零錢(至少各一枚), 列出所有可能的方案。 c5: 5角
17、的數(shù)量, 1, 20) c2: 2角的數(shù)量, 1, 50) c1: 1角的數(shù)量, 1, 100) 5*c1+2*c2+c5=100 2021/3/1135 將10元錢換成5角、2角、1角的零錢 c5: 5角的數(shù)量, 1, 20) c2: 2角的數(shù)量, 1, 50) c1: 1角的數(shù)量, 1, 100) 5*c5+2*c2+c1=100 for (c5=1; c520; c5+) for (c2=1; c250; c2+) for (c1=1; c1100; c1+) if (5*c5+2*c2+c1=100 ) printf(%d %d %dn, c5, c2, c1); c5=1 c2=1
18、c1=1 99 2 49 2 19 2021/3/1136 將10元錢換成5角、2角、1角的零錢 c5: 5角的數(shù)量, 1, 20) c2: 2角的數(shù)量, 1, 50) c1: 1角的數(shù)量, 1, 100) 5*c5+2*c2+c1=1000 for (c5=1; c520; c5+) for (c2=1; c250; c2+) for (c1=1; c1100; c1+) if (5*c5+2*c2+c1=1000 ) printf(%d %d %dn, c5, c2, c1); for (c5=1; c520; c5+) for (c2=1; c250; c2+) printf(%d %d %dn, c5, c2, 1000- 5*c5+2*c2); 2021/3/1137 例T9-3 輸出100200間所有素?cái)?shù) 算法: m =100 to 200
溫馨提示
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 幼兒園師幼互動(dòng)的幾種形式
- 加盟按摩店合同范本
- 江蘇達(dá)芯半導(dǎo)體有限公司介紹企業(yè)發(fā)展分析報(bào)告模板
- oa辦公合同范本
- 共同投資租賃公司合同范例
- 2025年度城市綜合體運(yùn)營維護(hù)協(xié)議合同
- 依法催收欠款合同范本
- 買賣與服務(wù)合同范本
- 公司合伙人分配合同范本
- 全新服務(wù)器購買合同范例
- mil-std-1916抽樣標(biāo)準(zhǔn)(中文版)
- 城鄉(xiāng)環(huán)衛(wèi)一體化內(nèi)部管理制度
- 廣匯煤炭清潔煉化有限責(zé)任公司1000萬噸年煤炭分級(jí)提質(zhì)綜合利用項(xiàng)目變更環(huán)境影響報(bào)告書
- 小學(xué)數(shù)學(xué)六年級(jí)解方程練習(xí)300題及答案
- 大數(shù)據(jù)在化工行業(yè)中的應(yīng)用與創(chuàng)新
- 光伏十林業(yè)可行性報(bào)告
- 小學(xué)綜合實(shí)踐《我做環(huán)保宣傳員 保護(hù)環(huán)境人人有責(zé)》
- 鋼煤斗內(nèi)襯不銹鋼板施工工法
- 出國勞務(wù)派遣合同(專業(yè)版)電子版正規(guī)范本(通用版)
- 公路工程安全風(fēng)險(xiǎn)辨識(shí)與防控手冊(cè)
- 供應(yīng)商評(píng)估報(bào)告范本
評(píng)論
0/150
提交評(píng)論