4-循環(huán)結構教學課件_第1頁
4-循環(huán)結構教學課件_第2頁
4-循環(huán)結構教學課件_第3頁
4-循環(huán)結構教學課件_第4頁
4-循環(huán)結構教學課件_第5頁
已閱讀5頁,還剩27頁未讀 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

4循環(huán)結構4循環(huán)結構4循環(huán)結構循環(huán)結構程序設計寧波大學信息科學與工程學院陳葉芳循環(huán)結構程序設計程序中的重復while語句do-while語句for語句退出循環(huán)循環(huán)的嵌套實例研究程序中的重復用循環(huán)語句實現。intn,i;123456scanf("%d",&n);

for(i=1;i<=n;i++)printf("%d\n",i);程序中的重復●計數循環(huán):可在循環(huán)執(zhí)行前確定重復的次數?!駱擞浛刂蒲h(huán):用一個正常情況下不會出現在數據中的值來作為循環(huán)結束的標記?!駰l件循環(huán):重復操作直到期望的條件滿足。如累加的和達到某一數值,或者計算的精度達到某一數值?!裎募Y束控制循環(huán):用EOF來判斷輸入是否結束。while語句記數循環(huán)。編寫程序打印數字1,2,3,…,n,要求每個數字占據一行。intn,i;scanf("%d",&n);123456i=1;while(i<=n){printf(“%d\n”,i);i++;}while語句計數循環(huán)

【例4-1】從鍵盤輸入10位同學的成績,計算他們的總分。

intsum=0;inti=0;intx;printf("Input10score:\n");

while(i<10)/*判斷循環(huán)條件*/{

scanf("%d",&x);/*讀入一個成績*/sum+=x;//累加i++;//記數}

while語句【例4-2】累加運算。計算1+2+3+…+100 intsum,i;sum=0;/*設置累加值的初始值*/i=1;/*設置循環(huán)控制變量的初始值*/while(i<=100){ sum=sum+i;/*累加*/ i++; }while語句【例4-3】累乘運算。計算1*2*3*4*5.intpower,i;power=1;/*設置乘積的初始值*/i=1;/*設置循環(huán)控制變量的初始值*/while(i<=5) { power=power*i;/*累乘*/ i++;}while語句2.標記控制循環(huán)【例4-4】學生成績求平均。floatsum=0,ave=0;floatscore;floatn=0;

scanf("%f",&score);

while(score>=0)/*若沒有遇到標記值(負數)*/{/*則執(zhí)行循環(huán)體*/ sum=sum+score; n++;

scanf("%f",&score);/*讀取下一數據*/}while語句【例4-5】輸入若干字符,統計其中字母、數字以及其他字符的個數。用換行符結束輸入。charch;intletter=0,digit=0,other=0;

ch=getchar();/*讀取一個字符*/while(ch!='\n')/*若沒有遇到標記值(換行符’\n’)*/{if(ch>='a'&&ch<='z'||ch>='A'&&ch<='Z')letter++;elseif(ch>='0'&&ch<='9')digit++;elseother++;

ch=getchar();/*讀取下一個字符*/}while語句3.條件循環(huán)【例4-7】求PI近似值,已知intsign;floatn,t,pi;pi=0;t=1;n=1.0;sign=1;/*分數項的符號,初值為正*/while(fabs(t)>=1e-6){

pi=pi+t;/*將當前分數項累加到pi上*/ n=n+2;/*下一項的分母以步長2自增*/

sign=-sign;/*符號求反*/

t=sign/n;/*構建下一個分數項*/}

pi=4*pi;

while語句【例4-8】設計一個程序,輸入任意長度的正整數,然后逆序輸出。如輸入3765,則輸出5673。intnum,i;scanf("%d",&num);while(num!=0){

i=num%10;/*取當前數據的末位數*/ printf("%d",i);/*輸出當前的末位數*/ num=num/10;/*對原數除以10取整,相當于截斷末位數*/ }while語句【例4-6】scanf函數的返回值。intnum1,num2,num3;inta,b;a=scanf("%d",&num1);b=scanf("%d%d",&num2,&num3);printf("Num1=%d,Num2=%d,Num3=%d\n",num1,num2,num3);printf("a=%d,b=%d\n",a,b);while語句4.文件結束控制循【例4-9】輸入一些整數,求出它們的平均值。intx,sum=0;intn=0;while(scanf("%d",&x)!=EOF)/*文件結束控制循環(huán)*/

{ sum=sum+x;/*累加*/n++; }printf("Average=%f\n",(double)sum/n);while語句【例4-10】輸入兩個整數,比較它們的大小關系。inta,b;while(scanf("%d%d",&a,&b)!=EOF){if(a>b) printf("%d>%d\n",a,b);elseif(a<b)printf("%d<%d\n",a,b);else printf("%d==%d\n",a,b);}do-while語句【例4-11】用do-while語句求1+2+…+100.intsum,i;sum=0;i=1;do{

sum=sum+i; i++;}while(i<=100);intsum,i;sum=0;

i=1;

while(i<=100){

sum=sum+i; i++;

}do-while語句do-while語句【例4-13】計算整數的位數。讀入一個整數,判斷它是幾位數,如367是一個3位數。intdigit=0,num,n;scanf("%d",&num);n=num;do{ n=n/10; digit++;}while(n>0);for語句【例4-14】用for語句求1+2+…+100.inti,sum=0;for(i=1;i<=100;i++){

sum+=i;}

intsum,i;sum=0;i=1;

while(i<=100){

sum=sum+i;

i++; }for語句【例4-15】使用for語句求解數列1+3+5+…+97+99的和。 intsum,i; sum=0;

for(i=1;i<100;i+=2) {

sum=sum+i; }

for語句【例4-16】求Fibonacci數列的前20項:1123581321…intf,f1=1,f2=1;printf("%6d%6d",f1,f2);for(i=3;i<=20;i++){

f=f1+f2;/*遞推公式*/ printf("%6d",f); if(i%5==0) printf("\n");

f1=f2;f2=f;/*更新f1和f2,為下次遞推作準備*/}f111f2f2312退出循環(huán)【例4-18】排練一個團體操,列隊時發(fā)現每行3個人的話還多出1位同學,每行5個人的話多出2人,每行7個人的話多出5人,每行9個人的話多出7人,請問至少有多少同學來參加排練。for(n=1;;n++)if(n%3==1&&n%5==2&&n%7==5&&n%9==7)

break;

退出循環(huán)【例4-19】判斷整數m是否為素數。for(i=2;i<m;i++)if(m%i==0)

break;/*只要找到一個因子,循環(huán)就可提前終止*/

退出循環(huán)【例4-20】把100~150之間不能被3整除的數輸出。 intn,count=0; for(n=100;n<=150;n++) { if(n%3==0)/*若能被3整除,則跳過本次循環(huán)*/

continue; printf("%d",n);} 循環(huán)的嵌套【例4-22】有兩個紅球,三個黃球,四個白球,任意取四個球,其中必須有一個紅球,編程輸出所有可能的方案。for(i=1;i<=2;i++) for(j=0;j<=3;j++) {

k=4-i-j; if(k>=0) printf("%5d%7d%8d\n",i,j,k); }循環(huán)的嵌套【例4-23】利用雙層for循環(huán)打印乘法表。

inti,j; for(i=1;i<=9;i++)/*i控制輸出有多少行*/ { for(j=1;j<=i;j++) printf("%d*%d=%d",i,j,i*j); printf("\n"); }實例研究【例4-25】投骰子游戲。模擬投骰子的過程,以6點為目標,投中目標3次為獲勝,最多允許投10次。intcount=0,hit=0;/*count記錄投的次數,hit記錄投中的次數*/intdice;/*dice記錄點數*/srand((unsigned)time(NULL));while(count<10&&hit<3){dice=1+rand()%6;/*生成1~6的隨機數來模擬投出的點數*/ count++; if(dice==6) hit++; }實例研究例:求s=1!+2!+3!+….+10!思考1:求10!p=1;for(i=1;i<=10;i++)p=p*i;思考2:求J!p=1;for(i=1;i<=J;i++)p=p*i;for(j=1;j<=10;j++){p=1;for(i=1;i

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論