循環(huán)結(jié)構(gòu)new教學(xué)教材_第1頁
循環(huán)結(jié)構(gòu)new教學(xué)教材_第2頁
循環(huán)結(jié)構(gòu)new教學(xué)教材_第3頁
循環(huán)結(jié)構(gòu)new教學(xué)教材_第4頁
循環(huán)結(jié)構(gòu)new教學(xué)教材_第5頁
已閱讀5頁,還剩21頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認(rèn)領(lǐng)

文檔簡介

第六章循環(huán)結(jié)構(gòu)程序設(shè)計第1節(jié)循環(huán)程序的設(shè)計步驟如:a=123則輸出順序為:printf("%d",a%10);a=a/10;printf("%d",a%10);a=a/10;printf("%d",a%10);a=a/10;例:逆序輸出一個不超過4位的正整數(shù)。Inputaa<10bit=1a<100bit=2a<1000bit=3bit=4main(){ inta,bit; scanf("%d",&a); if(a<10) bit=1; else if(a<100) bit=2; else if(a<1000) bit=3; else bit=4;;/*按題目要求輸出結(jié)果*/}switch(bit) { case4:printf("%d",a%10);a=a/10; case3:printf("%d",a%10);a=a/10; case2:printf("%d",a%10);a=a/10; case1:printf("%d",a%10);a=a/10; default:; }1.while語句一般形式:while(表達式)

循環(huán)體語句執(zhí)行流程:pa假(0)真(非0)whilepAP,用邏輯量表示while(x=1)x=10;單條語句s=0;i=1;while(i<=100)s+=i++;/*i=0;while(i++<100)s+=i;*//*i=0;while(++i<=100)s+=i;*/x=10;while(x-->0);第2節(jié)實現(xiàn)循環(huán)的三條語句main(){ intx,i; i=0;while(i<10) { scanf("%d",&x); if(x<0)x=-x; printf("%8d",x); i++; }printf("\n");}2.do~while語句一般形式:do

循環(huán)體語句

while(表達式);執(zhí)行流程:doAp假(0)真(非0)whileAp;必比可少do{循環(huán)體語句}while(表達式);s=0;i=1;do{s+=i++;}while(i<=100);/*i=1;do{s+=i;}while(i++<100);*//*i=1;do{s+=i;}while(++i<=100);*/main(){ intx,i; i=0;do { scanf("%d",&x); if(x<0)x=-x; printf("%8d",x); i++; }while(i<10);printf("\n");}x=10;do{;}while(x-->0);3.for語句一般應(yīng)用形式:for(expr1;expr2;expr3)

循環(huán)體語句expr2A假(0)真(非0)expr1expr3Aexpr1;expr2;expr3循環(huán)變量賦初值循環(huán)條件循環(huán)趨于結(jié)束部分例用for循環(huán)求

main(){inti,sum=0;for(i=1;i<=100;i++)sum+=i;printf("%d",sum);}main(){ intx,i; for(i=0;i<10;i++) { scanf("%d",&x); if(x<0)x=-x; printf("%8d",x); }printf("\n");}說明:for語句中expr1,expr2,expr3類型任意,都可省略,但分號;不可省無限循環(huán):for(;;)for語句可以轉(zhuǎn)換成while結(jié)構(gòu)關(guān)鍵是體現(xiàn)三要素expr1;while(expr2){

循環(huán)體語句

expr3;}for(s=0,i=100;i;s+=i--);i=1;for(;i<=100;i++)s+=i;i=1;for(;i<=100;)s+=i++;while(i<=100)s+=i++;

main(){intm,n,r;scanf("%d,%d",&m,&n);if(m<n)r=m,m=n,n=r;r=m%n;while(r!=0){m=n;n=r;r=m%n;}printf("%d\n",n);}

main(){intm,n,r;scanf("%d,%d",&m,&n);if(m<n)r=m,m=n,n=r;do{r=m%n;m=n;n=r;}while(r!=0);printf("%d\n",m);}

for(r=m%n;r!=0;r=m%n)/*for(;(r=m%n);){m=n;n=r;}printf("%d\n",n);

例:求最大公約數(shù)?main(){floatfac;inti,n;fac=1;i=2;scanf("%d",&n);while(i<=n)/*i++<=n*/{fac=fac*i;i++;

}printf("n!=%.0f\n",fac);}main(){floatfac;inti,n;i=1;fac=1;scanf("%d",&n);do{fac=fac*i;i++;}while(i<=n);printf("n!=%.0f\n",fac);}for(fac=1,i=1;i<=n;i++)fac=fac*i;printf("n!=%.0f\n",fac);例:求n!

#include"stdio.h"main(){inta=0;charc;for(c=getchar();c!='\n';c=getchar())/*while((c=getchar())!='\n\')*/ a=10*a+c-'0';printf("%d\n",a);}例:構(gòu)造整數(shù)?main(){intm;scanf("%d",&m);while(m){printf("%d",m%10);m=m/10;}printf("\n");}例梯形法求數(shù)值積分0yaxa+hxx+hbf(x)s=(sqrt(4-x*x)+sqrt(4-(x+h)*(x+h)))*h/2;#include"math.h"main(){ floata,b,s=0,sum=0,h,x; scanf("%f,%f,%f",/&a,&b,&h); for(x=a;x<b;x+=h) { s=(sqrt(4-x*x)+sqrt/(4-(x+h)*(x+h)))*h/2;sum+=s; } printf("%f\n",sum);}

1.break語句功能:在循環(huán)語句和switch語句中,終止并跳出循環(huán)體或開關(guān)體7.3輔助控制語句while(p){Abreak;B}if(q)while(p){Abreak;B}if(q)else增加了循環(huán)結(jié)束的出口。!p和q都是循環(huán)結(jié)束的條件??梢匀サ鬮reakfor(i=m<n?m:(t=n,n=m,m=t);i>0;i--)if(m%i==0&&n%i==0)break;for(i=m>n?n:m;m%i!=0||n%i!=0;i--);flag=0;/*沒找到最大公約數(shù)*/for(i=m>n?n:m;!flag&&i;i--)if(m%i==0&&n%i==0){flag=i;break;}main(){

ints,n;floatpi,f;

s=1;f=1;n=1;pi=0;

while(1){pi=pi+s*f;n=n+2;s=-s;f=1./n;if(f<1e-6)break;}

printf("%f\n”,(pi=4*pi));}f=1,pi=0,n=1,s=11pi=pi+f*sn=n+2s=-sf=1/n輸出pi=pi*4f<1e-6break

while(f>1e-6){pi=pi+s*f;n=n+2;s=-s;f=1./n;}考慮每一項的絕對值!

2.continue語句功能:結(jié)束本次循環(huán),跳過循環(huán)體中尚未執(zhí)行的語句,進行下一次僅用于循環(huán)語句中while(p){Acontinue;B}if(q)while(p){AB}if(!q)

例求輸入的十個整數(shù)中正數(shù)的個數(shù)及其平均值#include<stdio.h>main(){inti,num=0,a;floatsum=0;for(i=0;i<10;i++){scanf("%d",&a); if(a<=0)continue; num++; sum+=a;}printf("%dplusinteger'ssum:%6.0f\n",num,sum);printf("Meanvalue:%6.2f\n",sum/num);}for(i=0;i<10;i++){scanf("%d",&a); if(a>0){num++; sum+=a;}}7.4循環(huán)的嵌套循環(huán)題語句中又包含另一循環(huán)的結(jié)構(gòu)

三種循環(huán)可互相嵌套,層數(shù)不限(1)while(){……while(){……}…...}(2)do{……do{……}while();…...}while();(3)while(){……do{……}while();…….}(4)for(;;){……do{……}while();……while(){……}…...}內(nèi)循環(huán)外循環(huán)內(nèi)循環(huán)讀入ak=ai=2當(dāng)i

ka被i整除真假用break結(jié)束循環(huán)i=i+1i

k+1真假輸出:a”是素數(shù)”輸出:a”不是素數(shù)”【例】輸出所有兩位素數(shù)。要求:一行輸出15個素數(shù)。判斷a是否為素數(shù)a=10;a<100;a++#include<math.h>main(){inti,a,end,n=0;

}

end=sqrt(a);flag=1;for(i=2;i<=end;i++)if(a%i==0){flag=0;break;}if(flag){printf("%4d",a);n++;if(n%15==0)printf("\n");}for(a=10;a<=99;a++){

}能改成for(a=11;a<=99;a=a+2)

?判斷a是否素數(shù)a在10~99時例循環(huán)嵌套,輸出九九表#include<stdio.h>main(){inti,j;for(i=1;i<10;i++)printf("%4d",i);printf("\n");for(i=1;i<10;i++){for(j=1;j<10;j++)printf("%4d",i*j);printf(“\n”);}}for(i=1;i<10;i++){for(j=1;j<10;j++)printf("%4d",i*j);printf(“\n”);}結(jié)論2:可以表示各種可能的組合可用于解有多組解的問題!窮舉法1234567891234567892468101214161836912151821242791827364554637281……………..ji結(jié)論1:內(nèi)層循環(huán)的變化頻率快?!纠烤幊糖笕齻€數(shù)字x、y、z(0~9)滿足:xyz+zyx=1231。#include"stdio.h"main(){intx,y,k;for(x=1;x<=9;x++)for(y=0;y<=9;y++)for(z=1;z<=9;z++)if(101*x+20*y+101*z==1231)

printf("x=%d,y=%d,z=%d\n",x,y,z);}求解過程+abnext第5項++abnext第3項abnext第4項abnext第6項+……112

溫馨提示

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

評論

0/150

提交評論