版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
循環(huán)結(jié)構(gòu)程序設(shè)計第一頁,共三十九頁,編輯于2023年,星期二5.1循環(huán)的概念計算機解題過程中,經(jīng)常遇到要編制循環(huán)結(jié)構(gòu),即大量問題均離不開循環(huán)結(jié)構(gòu),(有人說:沒有循環(huán)結(jié)構(gòu)等于沒有計算機)
如求:1+2+3+….+100
求:sinx=x-x3/3!+x5/5!-x7/7!+……
幾乎所有數(shù)學函數(shù)均需展開成多項式,求其近似值,均離不開循環(huán)結(jié)構(gòu).第二頁,共三十九頁,編輯于2023年,星期二循環(huán)結(jié)構(gòu)準備部分工作部分控制部分出循環(huán)結(jié)束修改部分未結(jié)束左邊是先執(zhí)行后判斷右邊是先判斷后執(zhí)行準備部分控制部分工作部分修改部分出循環(huán)未結(jié)束結(jié)束第三頁,共三十九頁,編輯于2023年,星期二組成作用準備部分完成賦初值,(如累加變量清零,累乘變量置1等),設(shè)置循環(huán)次數(shù)工作部分反復多次被執(zhí)行的操作修改部分保證循環(huán)做有規(guī)律的變化控制部分可按已設(shè)置的循環(huán)次數(shù)或控制循環(huán)條件結(jié)束循環(huán)第四頁,共三十九頁,編輯于2023年,星期二5.2循環(huán)結(jié)構(gòu)的實現(xiàn)5.2.1while語句構(gòu)成當型循環(huán)格式:while(表達式)語句例求1+2+3+----+100的值(教材例子5.1)#include<stdio.h>voidmain(){inti=1,sum=0;/*準備部分*/while(i<=100)/*控制部分*/{sum=sum+i;/*工作部分*/i=i+1;/*修改部分*/}printf("sum=%d\n",sum);printf("i=%d\n",i);//退出循環(huán)時候i的數(shù)值
}第五頁,共三十九頁,編輯于2023年,星期二5.2.1do..while語句構(gòu)成直到型循環(huán)格式:do語句while(表達式)
例求1+2+3+----+100的值(教材例子5.1)#include<stdio.h>voidmain(){inti=1,sum=0;/*準備部分*/do{sum=sum+i;/*工作部分*/i=i+1;}/*修改部分*/while(i<=100);/*控制部分*/ printf("sum=%d\n",sum);printf("i=%d\n",i);//退出循環(huán)時候i的數(shù)值}第六頁,共三十九頁,編輯于2023年,星期二while與dowhile區(qū)別voidmain()voidmain(){intsum=0,i;{intsum=0,i;scanf("%d",&i);scanf("%d",&i);while(i<=10)do{sum+=i;{sum+=i;i++;i++;}}while(i<=10);printf("%d\n",sum);printf("%d\n",sum);}}當輸入i=0,二個程序結(jié)果相同,求1+2+…..+10的值當輸入i>10,左邊程序循環(huán)一次都不執(zhí)行;
而右邊程序執(zhí)行一次第七頁,共三十九頁,編輯于2023年,星期二循環(huán)語句注意事項循環(huán)體如果包括一個以上的語句需要加{}循環(huán)體中應該有可以使循環(huán)趨于結(jié)束的語句注意初始條件的值循環(huán)可以提前預知循環(huán)次數(shù)(例5.1、5.2),有時也無法判斷循環(huán)次數(shù)(例5.4、5.5),需要選取好控制部分。第八頁,共三十九頁,編輯于2023年,星期二例:用0.1mm厚紙對折,問對折多少次后,其厚度超過地球直徑(12742公里)
#include<stdio.h>voidmain(){intn=1;floatans;/*n—對折次數(shù),ans—ans=1e-7;存放對折后的厚度*/while(ans<=12742){n=n+1;ans=ans*2;}printf("n=%d,ans=%f\n",n,ans);}運行結(jié)果:n=37,ans=13743.895347第九頁,共三十九頁,編輯于2023年,星期二例:計算T=1+1/2+1/3+…+1/n(教材5.6)#include<stdio.h>voidmain(){floatt=0,a;inti=1,n; scanf("%d",&n);while(i<=n){ a=1.0/I; t=t+a; i++;}printf("t=%f\n",t);}第十頁,共三十九頁,編輯于2023年,星期二逗號運算符及其表達式
逗號運算符:,逗號表達式格式:<表達式1>,<表達式2>,…<表達式n>
計算逗號表達式值是按自左至右的順序,先計算<表達式1>的值,再計算<表達式2>的值,...而逗號表達式值是最后一個<表達式n>的值.示例:a=1,b=2,c=3,d=a+b表達式值為3第十一頁,共三十九頁,編輯于2023年,星期二關(guān)于逗號表達式的說明1.其優(yōu)先級最低,結(jié)合性是自左至右2.注意逗號表達式構(gòu)成的語句和非逗號表達式構(gòu)成的語句區(qū)別。a=1;b=2;和a=1,b=2;3.第十二頁,共三十九頁,編輯于2023年,星期二#include<stdio.h>voidmain(){inta,b,c,d;a=(c=100,d=200,c+d);//注意有無括號的區(qū)別
b=(c=d=0,c+50);//注意有無括號的區(qū)別
printf("%d,%d,%d,%d\n",a,b,c,d);}運行結(jié)果:300,50,0,0第十三頁,共三十九頁,編輯于2023年,星期二for語句構(gòu)成循環(huán)格式:for(<表達式1>;<表達式2>;<表達式3>)語句表達式1稱為初值表達式表達式2稱為控制表達式表達式3稱為步增表達式<表達式1>---<表達式3>均是C的任何一種表達式求表達式1
表達式2值非0?語句求表達式3Yfor語句的下一語句N第十四頁,共三十九頁,編輯于2023年,星期二利用for語句改寫例5.1(1)#include<stdio.h>voidmain(){intI,sum=0;for(i=1;i<=100;i++)sum+=i;printf("sum=%d\n",sum);}運行結(jié)果:sum=5050第十五頁,共三十九頁,編輯于2023年,星期二利用for語句改寫例5.1(2)#include<stdio.h>voidmain(){inti,sum;for(i=1,sum=0;i<=100;i++)sum+=i;printf("sum=%d\n",sum);}第十六頁,共三十九頁,編輯于2023年,星期二利用for語句改寫例5.1(3)#include<stdio.h>voidmain(){inti,sum;for(i=1,sum=0;i<=100;sum+=i,i++);printf("sum=%d\n",sum);}第十七頁,共三十九頁,編輯于2023年,星期二關(guān)于for語句說明1.for語句使用靈活是功能最為強大的循環(huán)語句。它可以構(gòu)成當型或直到型循環(huán)。2.for語句中任何一個表達式均可省略。3.例如上例省略表達式1i=1,sum=0;for(;i<=100;sum+=i,i++);4.例如上例省略表達式3for(i=1,sum=0;i<=100;) sum+=i,i++;第十八頁,共三十九頁,編輯于2023年,星期二關(guān)于for語句說明4.省略表達式2for(i=1;;i++)…等價于for(i=1;1;i++)…構(gòu)成一個判斷條件永遠為真的循環(huán),這樣的循環(huán)是不會結(jié)束的,稱為死循環(huán),為了防止死循環(huán)的發(fā)生,要采用別的方式退出循環(huán)。5.for的后面循環(huán)體語句可有可無,可以是一個語句;可以是多個語句,但要用{}括起來。6.for中表達式都可以省略,但括號以及分號不可以省略。第十九頁,共三十九頁,編輯于2023年,星期二5.3循環(huán)的嵌套在一個循環(huán)結(jié)構(gòu)中的循環(huán)體中又出現(xiàn)了另外一個循環(huán)結(jié)構(gòu),稱之為循環(huán)的嵌套。while()//外循環(huán){ …. for(;;)…//內(nèi)循環(huán)
…}第二十頁,共三十九頁,編輯于2023年,星期二內(nèi)、外層循環(huán)可由任何循環(huán)語句構(gòu)成for(;;) do{ … { … while()… for(;;)… … …} }while()循環(huán)只可以嵌套不可以交叉。不允許:第二十一頁,共三十九頁,編輯于2023年,星期二例:打印輸出九九乘法表(教材例5.8)#include<stdio.h>voidmain(){inti,j;for(i=1;i<=9;i++) { for(j=1;j<=9;j++) {printf("%d*%d=%d",i,j,i*j); } printf("\n"); }}第二十二頁,共三十九頁,編輯于2023年,星期二例求1!+3!+5!+7!教材例5.9#include<stdio.h>voidmain(){intjc,k,m;floatsum=0.0;for(m=1;m<=7;m=m+2){ jc=1; for(k=1;k<=m;k++) jc=jc*k; sum=sum+jc;}printf("sum=%f\n",sum);}第二十三頁,共三十九頁,編輯于2023年,星期二例求1!+3!+5!+7!(改寫)#include<stdio.h>voidmain(){intjc,k,m;floatsum=0.0;jc=1;for(m=1;m<=7;m=m+2){ sum=sum+jc; jc=jc*(m+1)*(m+2);}printf("sum=%f\n",sum);}第二十四頁,共三十九頁,編輯于2023年,星期二5.4break和continuebreak---退出switch語句或循環(huán)(提供一種非正常出口)continue---提早結(jié)束本次循環(huán),而不是終止循環(huán).while(表達式1){if(表達式2)continue;if(表達式3)break;}出循環(huán)
break
continue
N表達式1非0?Y第二十五頁,共三十九頁,編輯于2023年,星期二break和continue示例#include<stdio.h>voidmain(){ intk,sum=0; for(k=1;k<100;k++) { sum=sum+k; if(sum>200)break; } printf("sum=%d",sum);}第二十六頁,共三十九頁,編輯于2023年,星期二break和continue示例voidmain(){inti;
for(i=1;i<6;i++)
{if(i%2==1) { printf("#");
continue;
} printf("*");
}}第二十七頁,共三十九頁,編輯于2023年,星期二循環(huán)綜合示例(求解兩個數(shù)字的最大公約數(shù)和最小公倍數(shù))#include<stdio.h>voidmain(){ inta,b,c,m,n; scanf("%d%d",&m,&n); a=m;b=n;while(a%b!=0) { if(b>a){c=a;a=b;b=c} elsea=a-b; } printf("最大公約數(shù)是%d最小公倍數(shù)是%d\n",b,m*n/b);}第二十八頁,共三十九頁,編輯于2023年,星期二求:A,B,使AB-BA=45成立#include<stdio.h>voidmain(){inta,b,k,ans=45;for(a=1;a<10;a++)for(b=0;b<10;b++){k=(10*a+b)-(b*10+a);if(k==ans)printf("a=%d,b=%d\n",a,b);}}第二十九頁,共三十九頁,編輯于2023年,星期二例:判斷數(shù)字是否為素數(shù)判斷數(shù)字m為質(zhì)數(shù)方法:m除以2~m-1(按定義),之間每個整數(shù)都除不盡m除以2~m/2,之間每個整數(shù)都除不盡m除以2~m的平方根,之間每個整數(shù)都除不盡第三十頁,共三十九頁,編輯于2023年,星期二#include<math.h>#inclue<stdio.h>voidmain(){inti,j,m,c=0;for(i=3;i<100;i++){m=sqrt(i);for(j=2;j<=m;j++)if(i%j==0)break;if(j>=m+1){printf("%d",i);c=c+1;}}printf("\nc=%d\n",c);}第三十一頁,共三十九頁,編輯于2023年,星期二例:輸出斐波那契數(shù)列前40項
F(1)=1,F(2)=1,F(n)=F(n-1)+F(n-2)#include<stdio.h>voidmain(){longintf1=1,f2=1,f3;inti=3; printf("%10ld\n",f1); printf("%10ld\n",f2);while(i<=40){ f3=f1+f2; printf("%10ld\n",f3);i++;f1=f2;f2=f3; }}第三十二頁,共三十九頁,編輯于2023年,星期二例:輸出斐波那契數(shù)列前40項
F(1)=1,F(2)=1,F(n)=F(n-1)+F(n-2)#include<stdio.h>voidmain(){longintf1=1,f2=1;
inti=1;while(i<=20){printf("%10ld%10ld\n",f1,f2);f1=f1+f2;f2=f1+f2;i=i+1;}}第三十三頁,共三十九頁,編輯于2023年,星期二例.教材習題5.7#include<stdio.h>voidmain(){inti,j,k,n;for(n=100;n<1000;n++){i=n/100;j=n/10-i*10;k=n%10;if(i*100+j*10+k==i*i*i+j*j*j+k*k*k)printf("%d",n);}printf("\n");}第三十四頁,共三十九頁,編輯于2023年,星期二求定積分不是用解析法求準確值,而是用近似法(等效矩形法、等效梯形法、辛普生公式(Sipson)
#include<math.h>#include<stdio.h>voidmain(){inti,n;doublea,b,h,s=0,f,x;scanf("%lf,%lf,%d",&a,&b,&n);h=(b-a)/n;x=a;f=sin(a);for(i=1;i<n;i++){s=s+f*h;x=x+h;f=sin(x);}printf("s=%f\n",s);}寬為h;
高為sin(x)
ab第三十五頁,共三十九頁,編輯于2023年,星期二等效梯形法:#include<math.h>#include<stdio.h>voidmain(){inti,n;doublea,b,h,s,f;scanf("%lf,%lf,%d",&a,&b,&n);h=(b-a)/n;s=sin(a);for(i=1;i<=n;i++){f=sin(a+i*h);s=s+2*f;}s=(s-sin(b))*h/2;printf("s=%f\n",s);
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025版旅行社與旅游健康產(chǎn)業(yè)合作框架協(xié)議4篇
- 二零二五年度抹灰工程綠色施工評價合同4篇
- 二零二五年度光伏發(fā)電項目承包合作協(xié)議范本4篇
- 二零二五版無形資產(chǎn)擔保合同模板3篇
- 河南省二零二五年度臨時工勞務派遣服務協(xié)議書3篇
- 二零二五版船舶光租合同風險控制與預防3篇
- 二零二五版門面房買賣及裝修配套服務合同3篇
- 二零二五年度石粉購銷合同履行期限規(guī)定2篇
- 二零二五年度棉花種植基地運輸服務合同規(guī)范3篇
- 二零二五年度生態(tài)環(huán)保工程承包施工合同7篇
- 衡水市出租車駕駛員從業(yè)資格區(qū)域科目考試題庫(全真題庫)
- 護理安全用氧培訓課件
- 《三國演義》中人物性格探析研究性課題報告
- 注冊電氣工程師公共基礎(chǔ)高數(shù)輔導課件
- 土方勞務分包合同中鐵十一局
- 乳腺導管原位癌
- 冷庫管道應急預案
- 司法考試必背大全(涵蓋所有法律考點)
- 公共部分裝修工程 施工組織設(shè)計
- 《學習教育重要論述》考試復習題庫(共250余題)
- 裝飾裝修施工及擔保合同
評論
0/150
提交評論