版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
1三種基本程序結(jié)構(gòu)順序結(jié)構(gòu)選擇結(jié)構(gòu)循環(huán)結(jié)構(gòu)2第六章循環(huán)控制概述goto語句、用goto語句構(gòu)成循環(huán)結(jié)構(gòu)用while語句構(gòu)成循環(huán)結(jié)構(gòu)用do-while語句構(gòu)成循環(huán)結(jié)構(gòu)用for語句構(gòu)成循環(huán)結(jié)構(gòu)break語句與continue語句程序舉例3概述循環(huán)控制應(yīng)用例子:輸入全校學(xué)生成績;求若干個數(shù)之和;迭代求根;排序;播放音樂、視頻4goto語句一般形式goto語句標(biāo)號功能:程序執(zhí)行順序無條件跳轉(zhuǎn)到語句標(biāo)號處說明語句標(biāo)號用標(biāo)識符表示。goto語句常用環(huán)境:和if語句一起構(gòu)成循環(huán)結(jié)構(gòu);從多重循環(huán)內(nèi)層跳轉(zhuǎn)到循環(huán)體外。5goto語句示例用if語句和goto語句構(gòu)成循環(huán),求#include<stdio.h>voidmain(void){inti,sum=0;i=1;loop:if(i<=100){sum+=i;i++;
gotoloop;}printf("%d\n",sum);}6功能:表達(dá)式語句真假表達(dá)式成立(值非0)?語句while語句一般形式:while(表達(dá)式)語句當(dāng)7while語句使用舉例[例6.2]求#include<stdio.h>voidmain(void){inti,sum=0;i=1;while(i<=100){sum+=i;i++;}printf("%d\n",sum);}8while語句的注意循環(huán)體包含多個語句時,要使用語句塊的形式。在循環(huán)體內(nèi)應(yīng)該有使循環(huán)趨于結(jié)束的語句。9do-while語句do-while語句的一般形式為:do語句while(表達(dá)式)表達(dá)式語句假真直到…不10#include<stdio.h>voidmain(void){inti,sum=0;i=1;do{sum+=i;i++;}while(i<=100);printf("%d\n",sum);}用do-while語句來實(shí)現(xiàn)startsum=0i=1sum=sum+ii=i+1i<=100endTF11do-while語句和while的區(qū)別與while語句基本相同,一點(diǎn)差別在于:while語句是先判斷再確定是否進(jìn)入循環(huán)體;do-while先執(zhí)行一次指定循環(huán)體語句再判斷。P117例當(dāng)while后面表達(dá)式第一次值為"真",兩種循環(huán)完全相同;否則不同。在使用中,使用"當(dāng)"和"直到…不"來進(jìn)行區(qū)別。12for語句的流程圖如下:for語句改寫為while語句如下:求解表達(dá)式1判斷表達(dá)式2語句求解表達(dá)式3執(zhí)行過程1先求解表達(dá)式1;2求表達(dá)式2,若為假,則中止for循環(huán)若為真,則執(zhí)行for語句中的內(nèi)嵌語句3.求解表達(dá)式34.轉(zhuǎn)回第2步5.for循環(huán)結(jié)束,繼續(xù)執(zhí)行for語句的下一語句。for語句表達(dá)式1;while(表達(dá)式2){語句表達(dá)式3;}for語句的一般形式:for(表達(dá)式1;表達(dá)式2;表達(dá)式3)語句13例:用for語句求voidmain(void){inti,sum;sum=0;
for(i=1;i<=100;i++)sum+=i;printf("theresultis%d",sum);}表達(dá)式1表達(dá)式2表達(dá)式3for語句i=1;while(i<=100){sum+=i;i++;}14for語句一般用法for語句常用形式for(循環(huán)變量賦初值;循環(huán)條件;循環(huán)變量增值)又例:n!可用for語句描述如下:p=1;for(i=2;i<=n;i++)p*=i;i=2;for(;;){p*=i; i++; if(i>n)break;}程序舉例:打印圖形*****15#include<stdio.h>intmain(void){
printf("*****");}#include<stdio.h>intmain(void){inti;for(i=1;i<=5;i++);printf("*");}程序舉例:打印圖形********************16程序舉例:打印圖形**********17程序舉例:打印圖形1819for語句使用舉例-編程并輸出乘法表2021voidmain(void){inti,j;for(i=1;i<=9;i++){for(j=1;j<=i;j++)printf(”%d*%d=%d
”,i,j,j*i);printf("\n");}}1*1=12*1=22*2=43*1=33*2=63*3=9……9*1=99*2=189*3=27……9*9=81for語句使用舉例-編程并輸出乘法表Demo603.c1*1=1 1*2=21*3=3… 1*9=92*1=22*2=42*3=6… 2*9=183*1=33*2=63*3=9………9*1=99*2=189*3=27……9*9=811*1=1 1*2=21*3=3… 1*9=9
2*2=42*3=6… 2*9=18
3*3=9…3*9=27……
9*9=8123(2)for語句中表達(dá)式1是可省略的:若省略表達(dá)式1則需在for語句前相應(yīng)位置給相應(yīng)變量賦初值;注意;不能省略?。?)表達(dá)式1既可以是給循環(huán)變量賦初值如:5!如:5!可改寫為:
p=1;i=2;for(;i<6;i++)p=p*i;p=1;for(i=2;i<6;i++)p=p*i;i=2;for(p=1;i<6;i++)p=p*i;可改寫為:也可以是與循環(huán)變量無關(guān)的表達(dá)式;for語句注意24(4)for語句中表達(dá)式3也可省略,相應(yīng)地,此表達(dá)式放在for
循環(huán)體中。(5)其他寫法
for(p=1,i=2;i<6;i++)p=p*i;for(p=1,i=2;i<6;p*=i,i++);(3)for語句中表達(dá)式2也可省略,即不判斷循環(huán)條件,循環(huán)無終止地進(jìn)行下去。如:for(i=1;;i++)sum+=i;for(;;)
…for(;i<=100;){sum+=i;
i++;}while(1)
…for(i=0;(c=getchar())!=‘\n’;i+=c);P120例子25例子程序段:計(jì)算r=1到r=10的圓面積,直到面積大于100為止。floatpi=3.14159;for(r=1;r<=10;r++){area=pi*r*r;if(area>100)break;printf("r=%f,area=%f\n",r,area);}break語句與continue語句break語句一般形式:break;break語句只用于從循環(huán)體內(nèi)跳出循環(huán)-終止循環(huán)和跳出switch語句。見demo604.c26continue語句continue語句形式:continue;continue語句的作用:結(jié)束本次循環(huán)并準(zhǔn)備執(zhí)行下次循環(huán)。所謂結(jié)束本次循環(huán)指跳過循環(huán)體中continue語句后面尚未執(zhí)行的語句。準(zhǔn)備執(zhí)行下次循環(huán),是指進(jìn)行下一次是否執(zhí)行循環(huán)的判定,即先計(jì)算表達(dá)式3,再判斷表達(dá)式2的值是否為真。27voidmain(void){intn;for(n=100;n<=200;n++){if(n%3==0)break;printf(“%d,”,n);}…}voidmain(void){intn;for(n=100;n<=200;n++){if(n%3!=0)printf("%d,",n);}}continue語句舉例[例6.7]將100~200之間不能被3整除的數(shù)輸出。break;見demo607.c28break和continue的區(qū)別break語句與continue語句的區(qū)別:break語句是結(jié)束循環(huán),無條件跳到循環(huán)外。continue語句的作用是結(jié)束循環(huán)中的本次執(zhí)行,整個循環(huán)并不因此結(jié)束。29t=1,pi=0,n=1,s=1pi=pi+tn=n+2s=-st=s/n當(dāng)|t|>=10-6pi=pi*4輸出pi程序舉例例5.7用pi/4=1-1/3+1/5-1/7+1/9-……公式求pi的近似值。30
程序舉例#include<math.h>voidmain(void){intsign;doublen,t,pi;t=1;pi=0;n=1.0;sign=1;while(fabs(t)>=1e-6){pi=pi+t;n=n+2;sign=-sign;t=sign/n;}pi=pi*4;printf("pi=%10.6f\n",pi);}for()見demo608.c31運(yùn)行結(jié)果:
pi=3.141593改動:1.只到某個分母大于100為止32[例6.9]求Fibonacci數(shù)列前40個數(shù)。
Fibonacci數(shù)列有如下特點(diǎn):第1,2兩個數(shù)為1,1。從第3個數(shù)開始,該數(shù)是其前面兩個數(shù)之和。即:F1=1(n=1)F2=1(n=2)Fn=Fn-1+Fn-2(n>=3)
程序舉例-問題112358132134……33f1f2f1f2f1f2F1=1,f2=1輸出f1,f2f1=f1+f2f2=f2+f1fori=1to2034程序舉例-源程序voidmain(void){longintf1,f2;inti;f1=1;f2=1;for(i=1;i<=20;i++){printf("%12ld%12ld",f1,f2);if(i%2==0)printf("\n");f1=f1+f2;f2=f2+f1;}}見demo605.c35112358132134558914423337761098715972584418167651094617711286574636875025121393196418317811514229832040134626921783093524478570228879227465149303522415787139088169632459861023341556.6程序舉例運(yùn)行結(jié)果36改動:1.直到某個數(shù)大于11000為止2.用while改寫37判斷整數(shù)n是否素?cái)?shù)voidmain(void){inti,r,n;scanf("%d",&n);i=2;do{r=n%i;if(r==0){printf("n不是素?cái)?shù)");break;}i++;}while(i<n)printf("n是素?cái)?shù)");}Start輸入ni=2r=n%ii=i+1r=0?i>n-1打印n"是素?cái)?shù)"NY打印n"不是素?cái)?shù)"Endbreak見demo612.c38voidmain(void){inti,r,n;scanf("%d",&n);i=2;do{r=n%i;if(r==0){printf("n不是素?cái)?shù)");break;}i++;}while(i<=sqrt(n));if(i>sqrt(n))printf("n是素?cái)?shù)");}voidmain(void){inti,r,n;scanf("%d",&n);i=2;do{r=n%i;if(r==0){printf("n不是素?cái)?shù)");break;}i++;}while(i<n);if(i>=n)printf("n是素?cái)?shù)");}循環(huán)次數(shù)是多少?是否可以優(yōu)化?見demo613.c39程序舉例-問題例6.10譯密碼為使電文保密,往往按一定規(guī)律將其轉(zhuǎn)換成密碼,收報人再按一定規(guī)律將其解密。現(xiàn)按以下規(guī)律譯碼:A變成E,a變成e,即變成其后第4個字母。W變成A,X變成B,Y變成C,Z變成D,輸入一行字符要求輸出相應(yīng)密碼。40程序舉例-源程序#include<stdio.h>voidmain(void){charc;while((c=getchar()!=‘\n’){if((c>=‘a(chǎn)’&&c<=‘z’)||(c>=‘A’&&c<=‘Z’)){c=c+4; if(c>’Z’&&c<=‘Z’+4||c>’z’) c=c-26;
}printf("%c",c);}}見demo610.c41while(ans<=12742){
}
運(yùn)行結(jié)果:n=37,ans=13743.895347voidmain(void){intn=1;floatans;/*n—對折次數(shù),ans—*/ans=2*1e-7;/*存放對折后的厚度*/ans=ans*2;n=n+1;printf("n=%d,ans=%f\n",n,ans);}程序舉例例:用0.1mm厚紙對折,問對折多少次后,其厚度超過地球直徑(12742公里)?for(n=1;ans<=12742;n++)ans*=2;42voidmain(void){longinti=1,ans;ans=111*11*(i*10+1);while(111111!=ans)
{ i++; ans=111*11*(i*
溫馨提示
- 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)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 充電站火災(zāi)事故現(xiàn)場處置方案
- 建筑施工質(zhì)量控制方案范文
- 橋梁工程專項(xiàng)施工方案編制須知
- 2025年區(qū)塊鏈技術(shù)在供應(yīng)鏈金融客戶管理中的實(shí)踐分析報告
- 兒童動畫字幕翻譯及制作教程
- 中高層管理崗位內(nèi)部競聘評分標(biāo)準(zhǔn)
- 高職電子商務(wù)平臺運(yùn)營實(shí)訓(xùn)方案
- 2025年幼兒園防欺凌自查報告
- 2025年度秋季水稻機(jī)收減損專項(xiàng)監(jiān)測工作的情況報告范文
- 企業(yè)安全管理專項(xiàng)整改實(shí)施方案
- 貴州興義電力發(fā)展有限公司2026年校園招聘備考題庫及一套參考答案詳解
- 2025年天津大學(xué)管理崗位集中招聘15人備考題庫完整答案詳解
- 2025內(nèi)蒙古鄂爾多斯市鄂托克旗招聘專職社區(qū)人員30人考試筆試備考試題及答案解析
- 三方協(xié)議模板合同
- 2026年元旦校長寄語:向光而行馬到新程
- 玉米質(zhì)押合同范本
- 鋼結(jié)構(gòu)報廢回收合同2025年版本
- 節(jié)能基本情況表(打印)
- 電動車轉(zhuǎn)讓合同協(xié)議書電子版
- 大學(xué)生創(chuàng)業(yè)計(jì)劃書word文檔(三篇)
- 材料科學(xué)基礎(chǔ)輔導(dǎo)與習(xí)題-上交課件 材料科學(xué)基礎(chǔ)教程及習(xí)題 上海交通大學(xué)
評論
0/150
提交評論