版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、第四章 循環(huán)結構,在人們所需處理的運算任務中,常常需要用到循環(huán)結構,所謂 循環(huán)是指對同一個程序段重復執(zhí)行若干次。被重復執(zhí)行的部分 (由若干語句組成)稱為循環(huán)體。循環(huán)結構又稱重復結構。,本章主要內容 1 while 循環(huán)語句 2 dowhile 循環(huán)語句 3 for 循環(huán)語句 4 循環(huán)嵌套及注意的問題,問題,輸出整數(shù)1-10,輸出整數(shù)1-100,輸出整數(shù)1-n,printf(“%d”,1); printf(“%d”,2); printf(“%d”,n);,i=1; printf(“%d”,i);i+; printf(“%d”,i); i+; printf(“%d”,i); i+;,i=1; wh
2、ile(i=10) printf(“%d”,i); i+; ,while 語句,語法:while(表達式) 循環(huán)體 說明 (1)while是關鍵字。 (2)循環(huán)體是多條語句,用。,非0,while(表達式),表達式,循環(huán)體,0,while 語句,非0,while(表達式),表達式,循環(huán)體,0,i=1; while(i=10); printf(“%d”,i); i+; ,循環(huán)條件,改變循環(huán)條件,思考:如果沒有i+,程序如何執(zhí)行?,10 求sum=i i=1,sum=0 sumsum+1 sum sum+2 sum sum+3 . sum sum+10 sum=sum+?,1找循環(huán)不變式,2考慮問
3、號,3循環(huán)條件,int sum=0,i=1; while(i=10) sum=sum+i; i+; ,例1 main() int i=0; while(i=10) printf(“*”); i+; ,例2 main() int i=1,sum=0; while(i=100) sum=sum+i; i+; printf(“sum=%d”,sum); ,例3一個班有學生50人,統(tǒng)計該班學生語文成績中高于80分的人數(shù) 。把統(tǒng)計結果在屏幕上輸出。,int m=1,n=0; float x; while(m=80) n+; /* 累加大于80 分的人數(shù)*/ m+; printf(“大于80分的學生人數(shù)為
4、%d個n“,n);,分析:成績要通過鍵盤輸入,設為x,高于80分的人數(shù)為n,總人數(shù)為m。,從鍵盤輸入5個學生的語文、數(shù)學、英語3門成績,輸出每個學生的總分與平均成績。,從鍵盤輸入5個學生的語文、數(shù)學、英語3門成績,輸出每個學生的總分與平均成績。,int j=1; float a,b,c,sum,aver; while(j=5) printf(“輸入第 %d 個學生三門成績n”,j); scanf(“%f%f%f“, ,1如何確定循環(huán)條件? 題目中有明確的提示!從鍵盤輸入5個學生的 2 如何確定循環(huán)體?重復執(zhí)行的語句! 從鍵盤輸入5個學生的語文、數(shù)學、英語3門成績,輸出每個學生的總分與平均成績。
5、 等價于: (1)輸入1個學生的語文、數(shù)學、英語3門成績; (2)計算總分與平均分 (3)輸出總分與平均成績。,#include main() int n,i=1,sum=1; printf(“please input nn”) scanf(“%d”, ,例4 以下程序從鍵盤輸入5,結果是多少?,do-while語句,語法: do 循環(huán)體 while(表達式);,注意: 1先執(zhí)行循環(huán)體,再判斷循環(huán)條件,循環(huán)至少執(zhí)行一次。 2while()后的分號不能省略。,非0,while(表達式),循環(huán)體,0,i=1; while(i=10) printf(“%d”,i); i+; ,do,while(i=
6、10);,例1: main() int i=1; do printf(“ * ”); i+; while(i=10); ,例2: main() int i=1,s=0; do s=s+i; i+=2; while(i=100); printf(“s=%d”,s); ,統(tǒng)計某班級中計算機課程中成績高于95分的學生人數(shù)。假定(10人),1 算法分析,將該班每人計算機課程成績輸入計算機,每輸入一個成績,就與95進行比較,如果大于95,計數(shù)器加1,直到輸完10個人成績?yōu)橹?。最后顯示出統(tǒng)計的人數(shù)。,2 數(shù)據(jù)結構,用fs存放輸入的數(shù)據(jù),用變量j記錄輸入數(shù)據(jù)的個數(shù),數(shù)據(jù)輸完成時j=10,用變i統(tǒng)計高于95分
7、學生的人數(shù)。當成績輸完后,輸出i 累加后的結果。,int i=0,j=1; float fs; while( j95) i+; j+; printf( “95分人為%d“,i);,int i=0,j=1; float fs; do printf(“輸入第 %d 個數(shù)”,j) scanf(%f,while和do-while,while(表達式) 循環(huán)體,do 循環(huán)體 while(表達式) ;,非0,while(表達式),表達式,循環(huán)體,0,非0,while(表達式),循環(huán)體,0,先判斷,后循環(huán),先循環(huán),后判斷,一般情況 兩者差不多-進入循環(huán)結構執(zhí)行若干次后結束循環(huán); 極端情況 (1)死循環(huán) (2
8、) 無法進入循環(huán) i=100,while(i10),for 循環(huán)語句(功能強),語法: for(表達式1; 表達式2; 表達式3) 循環(huán)體 ,執(zhí)行過程:,1 先運算表達式1,2 再運算表達式2,真執(zhí)行循環(huán)體,3 再運算表達式3,判斷循環(huán)條件,表達式1,循環(huán)體,表達式3,表達式2,T,F,若表達式2為假不執(zhí)行循環(huán)體,注意: (1)表達式1在不在循環(huán)里?執(zhí)行幾次? (2)先做循環(huán),再運算表達式3! 若表達式2為假,表達式3如何運算? (3)循環(huán)體包含那些?,while和for,表達式1,循環(huán)體,表達式3,表達式2,T,F,for(表達式1; 表達式2; 表達式3) 循環(huán)體 ,while(表達式)
9、循環(huán)體,非0,while(表達式),表達式,循環(huán)體,0,如何用while寫for結構?,while( ?) ?,表達式; while( 表達式) 循環(huán)體; 表達式3; ,結論:for語句書寫結構更清晰,while 語句,while(表達式) 循環(huán)體,dowhile 語句,do 循環(huán)體 while(表達式);,for 循環(huán)語句,for(表達式1;表達式2;表達式3) 循環(huán)體,1.三種循環(huán)可用來處理同一問題,一般情況可互相代替 2.do while語句至少執(zhí)行一次循環(huán)。 3.while 與for可能一次也不執(zhí)行。,幾種循環(huán)的比較,for(表達式1; 表達式2;表達式3) 循 環(huán) 體 ,控制循環(huán)是否
10、結束,改變循環(huán)條件,二、說明: 1、表達式1可以是逗號表達式,可省略,但其后的分號不能??; 2、表達式2也可省略,此時循環(huán)為無窮循環(huán); 3、表達式3也可省略。,sum=0; for(i=1;i=10;i+) sum=sum+i;,int sum=0,i=1; while(i=10) sum=sum+i; i+; ,sum=0; for(i=1;i=10;i+) sum=sum+i; i+;結果是什么?,例 4.5 統(tǒng)計某班級中計算機課程中考試成績高于80 分的人數(shù)(10人),用for 循環(huán)語句寫該程序。,int fs, j,i=0; for (j=1; j80) i+; printf(“i=%
11、dn“,i);,例2:說明以下循環(huán)語句的循環(huán)次數(shù)。 for (i=0; i=0; i-); 答: (3) i=1; while (ij;i+,j-); 答:,n-1次,n+1次,n-1次,1次,0次,0次,求數(shù)列 s=1+2+3. n,程序段: s=0; for(i=1;1=n;i+) s=s+i;,算法: 循環(huán)的條件:i=n 重復做的:s=s+t;t+(加法運算) 循環(huán)的控制:i+等價t+,求數(shù)列 s=1+1/2+1/3.1/n,程序段: s=0; for(i=1;i=n;i+) s=s+1.0/i;,算法: 循環(huán)的條件:i=n 重復做的:s=s+t (t是什么?) 循環(huán)的控制:i+,t=1
12、.0/i,s=s+1.0/i,int i,n; float s=0; printf(“please input n:“); scanf(“%d”,練習:求數(shù)列 s=1/12+1/22+1/32.1/n2的和,int n, i; float s; printf(“ input n:“); scanf(“%d”,3求數(shù)列 s=1-1/2+1/3-1/4.1/n,程序段: s=0;m=1 for(i=1;i=n;i+) s=s+1.0/i*m; m=-m; ,練習 求數(shù)列 s=1-1/3+1/5-1/7+1/91/(2n-1)的和,int n,i=1,m=1; float s=0; printf(“
13、input n:“); scanf(“%d”,分析:找出通項s=s+1.0/(2*i-1), s+=pow(-1,i+1)/(2*i-1);,求數(shù)列 s=1-1/3+1/5直到最后一項的絕對值,int i=1,m=1; float s=0,t=1; while (fabs(t)=1E-5) t=1.0/(2*i-1); s=s+m*t; m=-m; i+; printf(“s=%f”,s);,練習:求,的近似值,精確到,公式為:,1 算法分析,=sqrt(s*6),double s=0; int i; for(i=1; 1.0/(i*i)=1e-10;i+) s=s+1.0/(i*i); pr
14、intf(%fn, sqrt(s*6);,程序,int i; float sum=0; for(i=0;i=100;i+) sum=sum+1.0/(1+i*5); printf(%f,sum);,6:下面程序是統(tǒng)計從鍵盤輸入的數(shù)字字符1-9的個數(shù),用換行結束循環(huán),請?zhí)羁铡?int n=0; char c; c=getchar(); while(1) if(2) n+; c=getchar(); printf(“n=%d”,n);,c!=n,c=1 printf(“please input n:”); scanf(“%d”,7 求 n!,long int i,n,t=1,s=0; printf
15、(“please input n:”); scanf(“%d”,練習: s=1!+3! +5!.,long int i,n,x,t=1; printf(please input x and n:); scanf(%d%d,8 求 xn,計算并輸出給定整數(shù)n的所有因子(不包括1與自身)之和。規(guī)定n的值不大于1000。,break 和 continue 語句,int n=1,s=0; while(n=10) s=s+n; break; n+; printf(“%d”,s);,break使流程跳出本層循環(huán)體 continue跳過本次循環(huán)中余尚未執(zhí)行的語句,接著去執(zhí)行下一個循環(huán),int s=0,n=1
16、; while(n20) n+; continue; s=s+n; printf(“%d”,s); ,退出循環(huán)體,跳過循環(huán)體中未執(zhí)行的語句,break 和 continue 語句,例1 以下程序輸出結果 int s=0,n=1; while(n=10) if(n=4) break; s=s+n; n+; printf(“%d”,s);,例2 以下程序輸出結果 int n=1; while(n3) continue; n+; printf(“%d”,n);,6 死循環(huán),無輸出!,int n=2; while(n10) if(n3) continue; if(n= =5) break; n+; p
17、rintf(“%d”,n);,A 10 B 9 C 5 D 死循環(huán),int a=1,b=1; while(a=9) break; if(b%3=1) b+=3; a+; printf(“%d”,a);,A2 B3 C4 D5,輸入m,判斷m是否是素數(shù),算法:除了和m,不能被其他數(shù)整除 m %2 %3 %4 %.%(m-1) 不是素數(shù)| =0 =0 =0 =0 是素數(shù) im;i+) if(m%i=0) break; if(i=m) printf(“是素數(shù)”); elseprintf(“不是素數(shù)”);,循環(huán)的嵌套 循環(huán)體內再包含循環(huán)語句,while(表達式) 循環(huán)體 ,內循環(huán),注意 外循環(huán)條件滿足
18、時進入內循環(huán); 只有當內循環(huán)循環(huán)完畢后,才會回到外循環(huán).,while(表達式) 循環(huán)體 ,程序,int i; for(i=1;i=10;i+) printf(“*”);,輸出:*,* * * * * * * * * *,如要輸出如下圖形:,* * * * * * * * * *,* * * * * * * * * *,* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *,計算并輸出3到n(大于2)之間所有素數(shù)的平方根之和,int
19、n,m,k i;double s=0.0;scanf(“%d”,#includemain() int t=0,n=1,s=0; while(n=7) _1_; s=s+_2_; n+; printf(“s=%dn”,s); ,t=t*10+3,t,或t=1/3*(pow(10,n)-1),計算3+33+333+33333333333(7個3)的和,請?zhí)羁铡?習題4 計算:1+22+333+4444+.前7項(p87),int t=0,n=1,s=0; while(n=7) t=n*(pow(10,n)-1)/9); s=s+t; n+; ,習題5 計算:1+12+123+1234+.前7項,下
20、面程序的功能是完成用一元人民幣換成一分、兩分五分的所有兌換方案,請?zhí)羁铡?int i1,i2,i5; for(i5=0;i5=20;i5+) for(i2=0;i2=50;i2+) i1=1; if(2) printf(“%d%d%d”,i5,i2,i1); ,100-i5*5-i2*2;,i1=0,下面程序是從三個紅球、五個白球、六個黑球取出八個球,且中必須有白球,輸出所有可能的方案。請?zhí)羁铡?int i,j,k,sum=0; for(i=0;i=3;i+) for(1;j=5;j+) k=8-i-j; if(2) sum+; printf(“%d%d%dn”,i,j,k); printf(“%d”,sum);,j=1,k=0 for(n=100;n=999;n+) a=n/100; b=n/10%10; c=n%10; if(a*a*a+b*b*b+c*c*c=n) printf(“%d”,n); ,6請找出這樣一些三位數(shù)整數(shù),其本身恰好等于其各位數(shù)的立方和,如153=13+53+33,下面程序是求1000以內的完全數(shù)(一個數(shù)如果恰好 等于它的因子
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2024-2030年成品鞋加工行業(yè)市場深度調研及發(fā)展前景與投資研究報告
- 2024-2030年全球及中國零件清洗柜行業(yè)銷售現(xiàn)狀及需求趨勢預測報告
- 2024-2030年全球及中國覆銅板用熱固性碳氫化合物行業(yè)需求動態(tài)及前景規(guī)劃分析報告
- 2024-2030年全球及中國聚脲屋面涂料行業(yè)需求態(tài)勢及投資盈利預測報告
- 2024-2030年全球及中國甜椒粉行業(yè)銷售形勢及競爭前景預測報告
- 2024-2030年全球及中國氣動體積增壓器行業(yè)產銷形勢及需求前景預測報告
- 2024-2030年全球及中國擴顎器行業(yè)運行現(xiàn)狀及投資動態(tài)預測報告
- 2024-2030年全球及中國布草烘干機行業(yè)應用動態(tài)及前景趨勢預測報告
- 2024-2030年全球及中國寵物多種維生素和補充劑行業(yè)銷售趨勢及營銷策略研究報告
- 2024-2030年全球及中國四溴苯酐二醇行業(yè)發(fā)展趨勢及需求前景預測報告
- 燙金工藝基礎知識培訓課件
- 《格列佛游記》 課件
- 農藥生產安全管理檢查表
- 什物拼貼-完整版PPT
- 甘草種植技術課件
- 四年級英語上冊課件-Unit 4 My home-人教PEP版(共20張PPT)
- ERP系統(tǒng)集成項目實施與管理方案
- 鹵素單質性質
- 滬教版小學三年級上學期語文閱讀理解假期專項練習題及答案
- 三級醫(yī)院醫(yī)療設備配置標準詳
- 土地評估重難點分析方案
評論
0/150
提交評論