![某高校循環(huán)程序設(shè)計基礎(chǔ)系_第1頁](http://file4.renrendoc.com/view11/M01/0D/34/wKhkGWWaXXGAcA3ZAADSpqgC6NA106.jpg)
![某高校循環(huán)程序設(shè)計基礎(chǔ)系_第2頁](http://file4.renrendoc.com/view11/M01/0D/34/wKhkGWWaXXGAcA3ZAADSpqgC6NA1062.jpg)
![某高校循環(huán)程序設(shè)計基礎(chǔ)系_第3頁](http://file4.renrendoc.com/view11/M01/0D/34/wKhkGWWaXXGAcA3ZAADSpqgC6NA1063.jpg)
![某高校循環(huán)程序設(shè)計基礎(chǔ)系_第4頁](http://file4.renrendoc.com/view11/M01/0D/34/wKhkGWWaXXGAcA3ZAADSpqgC6NA1064.jpg)
![某高校循環(huán)程序設(shè)計基礎(chǔ)系_第5頁](http://file4.renrendoc.com/view11/M01/0D/34/wKhkGWWaXXGAcA3ZAADSpqgC6NA1065.jpg)
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
某高校循環(huán)程序設(shè)計基礎(chǔ)系
在C語言中可用以下語句構(gòu)成循環(huán):
if…gotowhiledo…whilefor其中if…goto是通過編程技巧(if語句和goto語句組合)構(gòu)成循環(huán)功能。而且goto語句將影響程序流程的模塊化,使程序可讀性變差,所以結(jié)構(gòu)化程序設(shè)計主張限制goto語句的使用。其他三種語句是C語言提供的循環(huán)結(jié)構(gòu)專用語句。1/7/20242【例二】main(){intn=0,sum=0;loop:if(sum>=10000)gotoend;sum+=n;++n;gotoloop;end:printf(“n=%d\n”,n);}直到型當(dāng)型1、if…goto語句循環(huán)結(jié)構(gòu)【例一】main(){intn=0,sum=0;loop:sum+=n;++n;if(sum<=10000)gotoloop;printf(“n=%d\n”,n);}1/7/202432、while語句循環(huán)結(jié)構(gòu)【例三】main(){intn=0,sum=0;while(sum<=10000){sum+=n;++n;}printf(“n=%d\n”,n);}當(dāng)型一般形式while(條件表達式)循環(huán)體;用于構(gòu)成當(dāng)型循環(huán):先判斷后執(zhí)行/條件為真繼續(xù)循環(huán),直到條件為假時結(jié)束循環(huán)。【注意】條件表達式或循環(huán)體內(nèi)應(yīng)有改變條件使循環(huán)結(jié)束的語句,否則可能陷入“死循環(huán)”。1/7/202443、do…while語句循環(huán)結(jié)構(gòu)
【例四】main(){intn=0,sum=0;do{sum+=n;++n;}while(sum<=10000)printf(“n=%d\n”,n);}一般形式do{循環(huán)語句(組)}while(條件表達式);用于構(gòu)成直到型循環(huán):先執(zhí)行后判斷/條件為真繼續(xù)循環(huán),直到條件為假時結(jié)束循環(huán)?!咀⒁狻織l件表達式或循環(huán)體內(nèi)同樣應(yīng)有改變條件使循環(huán)結(jié)束的語句,否則可能陷入“死循環(huán)”。直到型直到sum超過10000為止1/7/202454、for語句循環(huán)結(jié)構(gòu)一般形式for(表達式1;條件表達式;表達式3)循環(huán)語句(組);用于構(gòu)成計數(shù)型當(dāng)型循環(huán):先判斷后執(zhí)行/條件為真繼續(xù)循環(huán),直到條件為假時結(jié)束循環(huán)。表達式1:整個循環(huán)中只執(zhí)行1次,常用來對循環(huán)變量設(shè)置初值條件表達式(表達式2):其值為真(非0)時繼續(xù)執(zhí)行循環(huán)語句(組),否則結(jié)束循環(huán)表達式3:常用于循環(huán)變量值的更新(循環(huán)體的一部分每次循環(huán)語句組執(zhí)行完后執(zhí)行一次)【例六】求∑i=1+2+3+4…+99+100(i=1~100)main(){inti,s=0;for(i=1;i<=100;i++)s=s+i;printf(“Sum=%d\n”,s);}1/7/202465、其他循環(huán)控制結(jié)構(gòu)main(){inta,y;a=10,y=0;do{a+=2;y+=a;if(y>50)break;}while(a=14);printf("a=%d,y=%d\n",a,y);}結(jié)果:a=16,y=60
變量跟蹤ay10012 1214+212+16=2814+216+28=4414+216+44=60變量跟蹤分析法break結(jié)束循環(huán)在switch中退出switch結(jié)構(gòu);在循環(huán)中結(jié)束循環(huán)。continue結(jié)束本次循環(huán)循環(huán)“短路”(跳過循環(huán)體后面的語句,開始下一輪循環(huán))。goto跳轉(zhuǎn)跳到循環(huán)體外指定標(biāo)號處。【注意】goto語句只能從循環(huán)內(nèi)向外跳轉(zhuǎn),反之不可!基礎(chǔ)系1/7/202475、其他循環(huán)控制結(jié)構(gòu)break結(jié)束循環(huán)在switch中退出switch結(jié)構(gòu);在循環(huán)中結(jié)束循環(huán)。continue結(jié)束本次循環(huán)循環(huán)“短路”(跳過循環(huán)體后面的語句,開始下一輪循環(huán))。goto跳轉(zhuǎn)跳到循環(huán)體外指定標(biāo)號處?!咀⒁狻縢oto語句只能從循環(huán)內(nèi)向外跳轉(zhuǎn),反之不可!基礎(chǔ)系求以下程序段執(zhí)行后x和i的值。inti,x;for(i=1,x=1;i<=50;i++){if(x>=10)break;if(x%2==1){x+=5;continue;}x-=3;}結(jié)果:x的值為10,i的值為6
變量跟蹤ix11→626→333→848→555→1061/7/202485、其他循環(huán)控制結(jié)構(gòu)break結(jié)束循環(huán)在switch中退出switch結(jié)構(gòu);在循環(huán)中結(jié)束循環(huán)。continue結(jié)束本次循環(huán)循環(huán)“短路”(跳過循環(huán)體后面的語句,開始下一輪循環(huán))。goto跳轉(zhuǎn)跳到循環(huán)體外指定標(biāo)號處?!咀⒁狻縢oto語句只能從循環(huán)內(nèi)向外跳轉(zhuǎn),反之不可!main(){inti=1;while(i<=15)if(++i%3!=2)continue;elseprintf("%d",i);printf("\n");}結(jié)果:2581114
變量跟蹤
i++i%3輸出i
1→2222→303→414→5255→60……1/7/202495、其他循環(huán)控制結(jié)構(gòu)break結(jié)束循環(huán)
在switch中退出switch結(jié)構(gòu);在循環(huán)中結(jié)束循環(huán)。
continue結(jié)束本次循環(huán)循環(huán)“短路”(跳過循環(huán)體后面的語句,開始下一輪循環(huán))。goto跳轉(zhuǎn)跳到循環(huán)體外指定標(biāo)號處。【注意】goto語句只能從循環(huán)內(nèi)向外跳轉(zhuǎn),反之不可!main(){inti,k=0;for(i=1;;i++){k++;while(k<i*i){k++;if(k%3==0)gotoloop;}}loop:printf("%d,%d",i,k);}結(jié)果:2,3
1/7/202410循環(huán)常用算法1、枚舉法(窮舉法)
“笨人之法”:把所有可能的情況一一測試,篩選出符合條件的各種結(jié)果進行輸出。
【例一】百元買百雞:用一百元錢買一百只雞。已知公雞5元/只,母雞3元/只,小雞1元/3只。分析:這是個不定方程——三元一次方程組問題(三個變量,兩個方程)
x+y+z=100
5x+3y+z/3=100設(shè)公雞為x只,母雞為y只,小雞為z只。1/7/202411百元買百雞問題分析1/7/202412百元買百雞問題分析main(){intx,y,z;for(x=0;x<=100;x++)for(y=0;y<=100;y++){z=100-x-y;if(5*x+3*y+z/3.0==100)printf(“cocks=%d,hens=%d,chickens=%d\n",x,y,z);}}【討論】令z=100-x-y只進行101×101=10201次運算(前者的1%)
取x<=19,y<=33只進行20×34=680次運算(第1種運算的6.7%)1/7/202413【例二】雨水淋濕了算術(shù)書的一道題,8個數(shù)字只能看清3個,第一個數(shù)字雖然看不清,但可看出不是1。編程求其余數(shù)字是什么?
[□×(□3+□)]2=8□□9分析設(shè)分別用A、B、C、D、E五個變量表示自左到右五個未知的數(shù)字。其中A的取值范圍為2~9,其余取值范圍為0~9。條件表達式即為給定算式。1/7/202414main(){intA,B,C,D,E;for(A=2;A<=9;A++)for(B=0;B<=9;B++)for(C=0;C<=9;C++)for(D=0;D<=9;D++)for(E=0;E<=9;E++)if(A*(B*10+3+C)*A*(B*10+3+C)==8009+D*100+E*10)printf(“%2d%2d%2d%2d%2d\n”,A,B,C,D,E);}結(jié)果:32864
【例二】雨水淋濕了算術(shù)書的一道題,8個數(shù)字只能看清3個,第一個數(shù)字雖然看不清,但可看出不是1。編程求其余數(shù)字是什么?
[□×(□3+□)]2=8□□91/7/2024152、歸納法(遞推法)
“智人之法”:通過分析歸納,找出從變量舊值出發(fā)求新值的規(guī)律。【例一】編程求∑i=1+2+3+4…+99+100(i=0~100)分析i=0S0=0(初值)i=1S1=0+1=S0+1i=2S2=1+2=S1+2i=3S3=1+2+3=S2+3i=4S4=1+2+3+4=S3+4
………i=nSn=1+2+3+4+…+n=Sn-1+n1/7/202416【例一】編程求∑i=1+2+3+4…+n(n≤100)程序:main(){inti,n,s=0;printf("n=");scanf("%d",&n);for(i=1;i<=n;i++)s=s+i;printf("Sum=%d\n",s);}運行結(jié)果:n=100Sum=5050如果是∑i=1+1/2+1/3+…+1/n呢?1/7/202417【例二】
編程求1-1/2+1/3-1/4+1/5-…+1/99-1/100分母為奇數(shù)時,相加分母為偶數(shù)時,相減法1:從變化規(guī)律分析……程序:main(){inti;floats=0;for(i=1;i<=100;i++)if(i%2)s=s+1/i;elses=s-1/i;printf("Sum=%f\n",s);}運行結(jié)果:Sum=1.000000錯在哪里?1/7/202418【例二】
編程求1-1/2+1/3-1/4+1/5-…+1/99-1/100法2:這是個累加型算法的編程題……程序:#include<math.h>main();{inti;floats=0;for(i=1;i<=100;i++)s=s+pow(-1,i+1)/i;printf("Sum=%f\n",s);}
程序:#include<math.h>main(){inti,k=1;floats=0;for(i=1;i<=100;i++){s=s+k/i;k=-k;}printf("Sum=%f\n",s);}累加型算法程序基本結(jié)構(gòu)為:
s=0;for(i=1;i<=n;i++)s=s+□;錯在哪里?(如何檢查程序錯誤?)運行結(jié)果:Sum=0.688172運行結(jié)果:Sum=1.0000001/7/202419【例三】編程求n!(n由鍵盤輸入)
分析i=0S0=1=S0(初值)i=1S1=0×1=S0×1i=2S2=1×2=S1×2i=3S3=1×2×3=S2×3i=4S4=1×2×3×4=S3×4
………i=nSn=1×2×3×4×…×n=Sn-1×n1/7/202420算法類型小結(jié):階乘型【階乘型】類型諸如□×□×□×□×……×□×□求其前n項之積的編程題。階乘型算法若設(shè)i為循環(huán)變量,s為前n項相乘之積,則程序的基本結(jié)構(gòu)為:
s=1;for(i=1;i<=n;i++)s=s*□;1/7/202421【例四】
編程求∑i!=1!+2!+3!…+n!(n由鍵盤輸入)外循環(huán)為累加型內(nèi)循環(huán)為階乘型法1:從變化規(guī)律分析……程序:main(){inti,j,n;floats,s1;
printf("請輸入n=");scanf("%d",&n);
s=0;for(i=1;i<=n;i++){s1=1;for(j=1;j<=i;j++)s1=s1*j;s=s+s1;}
printf("Sum=%.0f\n",s);}運行結(jié)果:n=5Sum=153/*如果n值較大,可改為printf(“Sum=%e\n”,s);*/1/7/202422【例四】
編程求∑n!=1!+2!+3!…+n!(n由鍵盤輸入)在同一個循環(huán)中先階乘,后累加法2:通過單循環(huán)實現(xiàn)……程序:main(){inti,n;floats,s1;
printf("請輸入n=");scanf("%d",&n);s=0,s1=1;for(i=1;i<=n;i++){s1=s1*i;s=s+s1;}printf("Sum=%.0f\n",s);}運行結(jié)果:n=5Sum=1531/7/202423【例五】
例5.12
兔子繁殖問題(斐波那契數(shù)列問題)main(){intf1=1,f2=1,f,i,s,n;clrscr();printf("請輸入月數(shù):");scanf("%d",&n);for(s=2,i=3;i<=n;i++){f=f1+f2;s=s+f;f1=f2;f2=f;}printf("%d個月的兔子數(shù)是%d\n",n,s);}1/7
溫馨提示
- 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)容負責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 社區(qū)公共戶 申請書
- 生態(tài)旅游目的地的客源市場分析
- 管轄權(quán)異議申請書戶籍
- 2025年度智能門業(yè)銷售與系統(tǒng)集成合同
- 2025年度城市環(huán)衛(wèi)車司機聘用合同
- 2025年度醫(yī)療器械研發(fā)與代工知識產(chǎn)權(quán)保護合同
- 教學(xué)研究項目申請書
- 2025年度新能源技術(shù)研發(fā)延期還款合同范本
- 2025年度醫(yī)療廢物處理設(shè)施運行維護合同范本
- 2025年度物流環(huán)保技術(shù)貨物委托合同
- 銷售人員崗位職責(zé)培訓(xùn)
- 助理醫(yī)師醫(yī)院協(xié)議書(2篇)
- 短暫性腦缺血發(fā)作
- 父親歸來那一天(2022年四川廣元中考語文試卷記敘文閱讀題及答案)
- 小學(xué)數(shù)學(xué)五年級上冊奧數(shù)應(yīng)用題100道(含答案)
- 工業(yè)機器人編程語言:Epson RC+ 基本指令集教程
- 2024年同等學(xué)力申碩統(tǒng)考英語卷
- 2023.05.06-廣東省建筑施工安全生產(chǎn)隱患識別圖集(高處作業(yè)吊籃工程部分)
- 2024年上海高考數(shù)學(xué)真題試題(原卷版+含解析)
- JTG 3362-2018公路鋼筋混凝土及預(yù)應(yīng)力混凝土橋涵設(shè)計規(guī)范
- 電動汽車用驅(qū)動電機系統(tǒng)-編制說明
評論
0/150
提交評論