版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
第五章循環(huán)結(jié)構(gòu)(一)回顧多重if結(jié)構(gòu)就是在主if塊的else部分中還包含其他if塊嵌套if結(jié)構(gòu)是在主if塊中還包含另一個(gè)if語句C語言規(guī)定,嵌套if結(jié)構(gòu)中每個(gè)else部分總是屬于前面最近的那個(gè)缺少對(duì)應(yīng)的else部分的if語句switch結(jié)構(gòu)也可以用于多分支選擇。用于分支條件是整型表達(dá)式,而且判斷該整型表達(dá)式的值是否等于某些值(可以羅列的),然后根據(jù)不同的情況,執(zhí)行不同的操作條件運(yùn)算符是if–else語句的另一種表現(xiàn)形式目標(biāo)理解為什么使用循環(huán)結(jié)構(gòu)理解循環(huán)的兩大規(guī)則熟練掌握while循環(huán)的使用熟練掌握do-while循環(huán)的使用理解while和do-while循環(huán)的區(qū)別循環(huán)的必要性Intresult1,result2,result3;intresult4,result5;result1=1*10;printf("1×10=%d\n",result1);result2=2*10;printf("2×10=%d\n",result2);result3=3*10;printf("3×10=%d\n",result3);result4=4*10;printf("4×10=%d\n",result4);result5=5*10;printf("5×10=%d\n",result5);
1×10=102×10=203×10=304×10=405×10=50輸出結(jié)果重復(fù)語句C語言中的各種循環(huán)whiledo-whilefor需要多次重復(fù)執(zhí)行一個(gè)或多個(gè)任務(wù)的問題考慮使用循環(huán)來解決5.1while語句構(gòu)成循環(huán)while(表達(dá)式){
語句;}while循環(huán)的一般語法:while(index<100){......
index++;}計(jì)算表達(dá)式的值,當(dāng)值為真(非0)時(shí),執(zhí)行循環(huán)體語句,一旦條件為假,就停止執(zhí)行循環(huán)體。如果條件在開始時(shí)就為假,那么不執(zhí)行循環(huán)體語句直接退出循環(huán)。
工作原理示例規(guī)則1:[<初始化>]while(循環(huán)條件){<循環(huán)體>}循環(huán)條件中使用的變量需要經(jīng)過初始化規(guī)則2:while(index<100){......
index++;}while循環(huán)主體中的語句必須修改循環(huán)條件的值,否則會(huì)形成死循環(huán)while(1)真1×10=102×10=203×10=304×10=405×10=500+11+12+1上個(gè)數(shù)字
+1...重復(fù)
(上個(gè)數(shù)字
+1)×10while循環(huán)示例1(找出循環(huán)規(guī)律)#include<stdio.h>voidmain(){intnum=1,result;while(num<=10){result=num*10;printf("%d×10=
%d\n",num,result);num++;}}內(nèi)存numresult1null102輸出:1×10=102×10=203×10=304×10=405×10=506×10=607×10=708×10=809×10=9010×10=10011100循環(huán)實(shí)現(xiàn)的算法1.累積和算法p51
循環(huán)變量i控制數(shù)的規(guī)律性變化i++
累積和變量sum存儲(chǔ)和sum=sum+i*i2.迭代算法
x1x2=cos(x1)0cos(0)cos(0)cos(cos(0))cos(cos(0))x1=x2cos(cos(0))x1=x2習(xí)題5.35.125.135.16嵌套while循環(huán)
嵌套while循環(huán)的語法while(i<=10){...while(i<=j){......}...}外循環(huán)內(nèi)循環(huán)只有在內(nèi)循環(huán)完全結(jié)束后,外循環(huán)才會(huì)進(jìn)行下一趟。問題描述:用“*”打印一個(gè)直角三角形圖案。圖案如下所示:*******************************************************嵌套while循環(huán)示例voidmain(){intnstars=1,stars;
while(nstars<=10){ stars=1;
while(stars<=nstars) { printf("*"); stars++; } printf("\n"); nstars++;}}內(nèi)層循環(huán)控制每行打印*號(hào)的個(gè)數(shù)外層循環(huán)控制打印的行數(shù)輸出:*******************************************************5.2do-while循環(huán)do{
語句;}while(表達(dá)式);while循環(huán)的一般語法:do{......
scanf(“%d”,&answer);}while(answer!=-1);它先執(zhí)行循環(huán)體中的語句,然后再判斷條件是否為真,如果為真則繼續(xù)循環(huán);如果為假,則終止循環(huán)。
工作原理示例問題描述:猜數(shù)游戲。要求猜一個(gè)介于1~10之間的數(shù)字,根據(jù)用戶猜測(cè)的數(shù)與標(biāo)準(zhǔn)值進(jìn)行對(duì)比,并給出提示,以便下次猜測(cè)能接近標(biāo)準(zhǔn)值,直到猜中為止。do-while循環(huán)示例intnumber=5,guess;printf("猜一個(gè)介于1與10之間的數(shù)\n");do{printf("請(qǐng)輸入您猜測(cè)的數(shù):");scanf("%d",&guess);if(guess>number)printf("太大\n");elseif(guess<number)printf("太小\n");}while(guess!=number);printf("您猜中了!答案為%d\n",number);猜一個(gè)介于1與10之間的數(shù)請(qǐng)輸入您猜測(cè)的數(shù):3太小請(qǐng)輸入您猜測(cè)的數(shù):5您猜中了!答案為
5輸入數(shù)字
5后,do…while循環(huán)中的條件為假,
輸出結(jié)果消息后,程序終止。Dowhile實(shí)現(xiàn)Fibonacci數(shù)列(迭代的過程) f1f2f=f1+f2010+1=1
111+1=2121+2=3f1=f2f2=ff1=f2f2=f嵌套do-while循環(huán)
嵌套
do-while循環(huán)的語法do{...do{...}while(...)...}while(...)外循環(huán)內(nèi)循環(huán)只有在內(nèi)循環(huán)完全結(jié)束后,外循環(huán)才會(huì)進(jìn)行下一趟。嵌套do-while循環(huán)示例intvalue,r_digit;value=0;do{printf("\n請(qǐng)輸入一個(gè)數(shù):");scanf("%d",&value);if(value<=0)printf("該數(shù)必須為正數(shù)\n");}while(value<=0);printf("\n反轉(zhuǎn)后的數(shù)為:");do{r_digit=value%10;printf("%d",r_digit);value=value/10;}while(value!=0);printf("\n");通過示例比較intvalue,r_digit;value=0;do{printf("\n請(qǐng)輸入一個(gè)數(shù):");scanf("%d",&value);if(value<=0)printf("該數(shù)必須為正數(shù)\n");}while(value<=0);printf("\n反轉(zhuǎn)后的數(shù)為:");do{r_digit=value%10;printf("%d",r_digit);value=value/10;}while(value!=0);printf("\n");intvalue,r_digit;value=0;while(value<=0)
{printf("\n請(qǐng)輸入一個(gè)數(shù):");scanf("%d",&value);if(value<=0)printf("該數(shù)必須為正數(shù)\n");}printf("\n反轉(zhuǎn)后的數(shù)為:");while(value!=0){r_digit=value%10;printf("%d",r_digit);value=value/10;}printf("\n");
該程序用
do-while
循環(huán)將數(shù)字左右反轉(zhuǎn)同樣的程序用
while循環(huán)將數(shù)字左右反轉(zhuǎn)比較while和do-while循環(huán)while(循環(huán)條件){循環(huán)體;}do{
循環(huán)體;}while(循環(huán)條件);do-while循環(huán)是先執(zhí)行后判斷,所以,即使開始條件為假,循環(huán)體也至少會(huì)被執(zhí)行一次。while循環(huán)是先判斷后執(zhí)行,所以,如果條件為假,則循環(huán)體一次也不會(huì)被執(zhí)行。
比較
while和do-while循環(huán)的工作原理總結(jié)循環(huán)結(jié)構(gòu)的特點(diǎn)是,在給定條件成立時(shí),重復(fù)執(zhí)行某程序段,直到條件不成立為止while循環(huán)用于在給定條件為真的情況下重復(fù)執(zhí)行一組操作,while循環(huán)先判斷后執(zhí)行do-while循環(huán)先執(zhí)行后判斷,因此循環(huán)將至少執(zhí)行一次在循環(huán)中,需要修改循環(huán)變量的值以改變循環(huán)條件,否則有可能形成死循環(huán)循環(huán)嵌套必須將內(nèi)層循環(huán)完整的包含在外層循環(huán)中第五章循環(huán)結(jié)構(gòu)(二)回顧循環(huán)結(jié)構(gòu)的特點(diǎn)是,在給定條件成立時(shí),重復(fù)執(zhí)行某程序段,直到條件不成立為止while循環(huán)用于在給定條件為真的情況下重復(fù)執(zhí)行一組操作,while循環(huán)先判斷后執(zhí)行do-while循環(huán)先執(zhí)行后判斷,因此循環(huán)將至少執(zhí)行一次在循環(huán)中,需要修改循環(huán)變量的值以改變循環(huán)條件,否則有可能形成死循環(huán)循環(huán)嵌套必須將內(nèi)層循環(huán)完整的包含在外層循環(huán)中目標(biāo)熟練使用for循環(huán)理解break和continue語句的用法熟練使用嵌套循環(huán)for(表達(dá)式1;表達(dá)式2;表達(dá)式3){
語句;}
for循環(huán)的一般語法:5.3for循環(huán)counter=0;inum=1;cnt=100;counter==10;inum<25;cnt>0counter++;inum=inum+1;cnt--分號(hào)用于分隔for
循環(huán)的三個(gè)表達(dá)式1、計(jì)算表達(dá)式1的值,通常為循環(huán)變量賦初值;2、計(jì)算表達(dá)式2的值,即判斷循環(huán)條件是否為真,若值為真則執(zhí)行循環(huán)體一次,否則跳出循環(huán);3、計(jì)算表達(dá)式3的值,這里通常寫更新循環(huán)變量的賦值表達(dá)式,然后轉(zhuǎn)回第2步重復(fù)執(zhí)行;工作原理1234for循環(huán)示例1#include<stdio.h>voidmain(){intnumber,count,factorial=1;printf("\n請(qǐng)輸入任意一個(gè)正整數(shù):");scanf("%d",&number);for(count=1;count<=number;count++) factorial=factorial*count;printf("\n%d的階乘
=%d\n",number,factorial);}請(qǐng)輸入任意一個(gè)正整數(shù):5內(nèi)存numbercountfactorial51121206循環(huán)執(zhí)行五次5的階乘=120逗號(hào)運(yùn)算符for(i=0,j=max;i<=max;i++,j--)printf(“\n%d+%d=%d”,i,j,i+j);for語句中的三個(gè)表達(dá)式都可以是逗號(hào)表達(dá)式逗號(hào)表達(dá)式就是通過“,”運(yùn)算符隔開的多個(gè)表達(dá)式組成的表達(dá)式逗號(hào)表達(dá)式從左往右計(jì)算。逗號(hào)運(yùn)算符在C語言運(yùn)算符中的優(yōu)先級(jí)最低for循環(huán)示例2#include<stdio.h>voidmain(){ inti,j,max; printf("請(qǐng)輸入一個(gè)值\n"); printf("根據(jù)這個(gè)值可以輸出以下加法表:"); scanf("%d",&max);
for(i=0,j=max;i<=max;i++,j--)
printf("\n%d+%d=%d",i,j,i+j); printf("\n");}循環(huán)執(zhí)行max次初始化語句只執(zhí)行一次請(qǐng)輸入一個(gè)值根據(jù)這個(gè)值可以輸出以下加法表:50+5=51+4=52+3=53+2=54+1=5for循環(huán)的表達(dá)式for循環(huán)中有三個(gè)表達(dá)式for語句中的各個(gè)表達(dá)式都可以省略分號(hào)分隔符不能省略for(<初始化循環(huán)變量>;<循環(huán)條件>;<修改循環(huán)變量的值>){<循環(huán)體語句>;}可省略不能省略省略表達(dá)式1intnum=0;for(;num<=10;num++){ printf("%d\n",num*2);}
inta=0,n;printf("\n輸入n的值:");scanf("%d",&n);for(;n>0;a++,n--)printf("%d",a*2);
相當(dāng)于省去了為循環(huán)變量賦初值,此時(shí)應(yīng)在for語句之前給循環(huán)變量賦初值省略表達(dá)式2for(num=1;;num++){...}
即不判斷循環(huán)條件,也就是認(rèn)為表達(dá)式2始終為真,這時(shí)應(yīng)在循環(huán)體內(nèi)設(shè)法結(jié)束循環(huán),否則將成為死循環(huán)省略表達(dá)式3for(i=1;i<=100;)
{sum=sum+1;i++;}
即省去修改循環(huán)變量的值,但此時(shí)應(yīng)在循環(huán)體內(nèi)設(shè)法更改循環(huán)變量的值省略三個(gè)表達(dá)式for(;;){printf("這將一直進(jìn)行下去");i=getchar();if(i=='X'||i=='x') break;}
即不為循環(huán)變量賦初值,不設(shè)置循環(huán)條件(認(rèn)為表達(dá)式2為真值),不修改循環(huán)變量的值,無終止地執(zhí)行循環(huán)體。此時(shí)應(yīng)在循環(huán)體內(nèi)設(shè)法結(jié)束循環(huán),否則會(huì)成為死循環(huán)5.4for循環(huán)的嵌套For循環(huán)嵌套實(shí)現(xiàn)算法:1倒置圖形外層循環(huán)控制行i,內(nèi)層循環(huán)控制每層的空格k和字符j。2素?cái)?shù)的求解外層控制需要判斷的數(shù)i,內(nèi)層對(duì)每個(gè)數(shù)進(jìn)行具體的判斷(從2到sprt(i))。5.5break和continuebreak語句強(qiáng)行跳出循環(huán)體,循環(huán)體中break后面的語句不再執(zhí)行。在多層循環(huán)中,一個(gè)break語句只向外跳一層。break語句2-2跳出
for循環(huán)for(;;){printf("這將一直進(jìn)行下去");i=getchar();if(i=='X'||i=='x')
break;}
跳出
while循環(huán)X=11while(1){if(x--==10)
break;}
跳出
do-while循環(huán)X=11do{if(x--==10)
break;}while(10);問題描述:統(tǒng)計(jì)從鍵盤輸入的若干個(gè)字符中有效字符的個(gè)數(shù),以換行符作為輸入結(jié)束。有效字符是指第一個(gè)空格符前面的字符,若輸入字符中沒有空格符,則有效字符為除了換行符之外的所有字符。#include<stdio.h>voidmain(){ intcount=0,ch; printf("\n請(qǐng)輸入一行字符:"); while((ch=getchar())!='\n') { if(ch=='')
break; count++; } printf("\n共有
%d個(gè)有效字符。\n",count);}break語句示例內(nèi)存chcountH0_
請(qǐng)輸入一行字符:Helloworld
共有5個(gè)有效字符1循環(huán)執(zhí)行5次5continue語句continue語句的作用是跳過循環(huán)體中剩余的語句而執(zhí)行下一次循環(huán)對(duì)于while和do-while循環(huán),continue語句執(zhí)行之后的動(dòng)作是條件判斷;對(duì)于for循環(huán),隨后的動(dòng)作是變量更新.continue語句2-2while(…){
…………continue;
…………}while(…){
…………
break;
…………}跳出整個(gè)循環(huán)繼續(xù)下一次循環(huán)問題描述:求整數(shù)1~100的累加值,但要求跳過所有個(gè)位為3的數(shù)。#include<stdio.h>voidmain(){ inti,sum=0; for(i=1;i<=100;i++) { if(i%10==3)
continue; sum+=i; } printf("sum=%d\n",sum);}continue語句示例內(nèi)存isumnull0131循環(huán)執(zhí)行到i=1378輸出:sum=45701循環(huán)執(zhí)行到i=1011014570問題描述:用“*”輸出一個(gè)菱形圖案,圖案如下:
*************************嵌套循環(huán)示例1voidmain(){ inti,j,k;
for(i=1;i<=4;i++) {
for(j=1;j<=4-i;j++) printf("");
for(k=1;k<=2*i-1;k++)
printf("*"); printf("\n"); }
for(i=1;i<=3;i++){
for(j=1;j<=i;j++) printf("");
for(k=1;k<=7-2*i;k++) printf("*"); printf("\n");}}
輸出:*************************控制打印的行數(shù)控制每行打印的空格數(shù)控制每行打印的*號(hào)數(shù)控制打印的行數(shù)控制每行打印的空格數(shù)控制每行打印的*號(hào)數(shù)問題描述:打印輸出100至200之間的全部素?cái)?shù)。分析:素?cái)?shù)是指只能被1和它本身整除的數(shù)。算法比較簡(jiǎn)單,先將這個(gè)數(shù)被2除,如果能整除,且該數(shù)又不等于2,則該數(shù)不是素?cái)?shù)。如果該數(shù)不能被2整除,再看則是否能被3整除。如果被3整除,并且該數(shù)不等于3,則該數(shù)不是素?cái)?shù),否則再判斷是否被4整除,依此類推,該數(shù)只要是能被小于本身的某個(gè)數(shù)整除時(shí),就不是素?cái)?shù)。
嵌套循環(huán)示例2voidmain(){inti,j,n;n=0;
for(i=100;i<=200;i++){j=2;
while(i%j!=0)
j++;
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 操作系統(tǒng)課程設(shè)計(jì)死鎖
- 2024年度企業(yè)抵押借款合同正本規(guī)范范本3篇
- 2024年裝修工程合同:某房地產(chǎn)公司與裝修公司之間的裝修工程合作
- 承德醫(yī)學(xué)院《構(gòu)成設(shè)計(jì)》2023-2024學(xué)年第一學(xué)期期末試卷
- 成都銀杏酒店管理學(xué)院《自動(dòng)化專業(yè)英語》2023-2024學(xué)年第一學(xué)期期末試卷
- 二零二五年度住宅小區(qū)地下車庫車位購置合同4篇
- 皮膚護(hù)理的講解
- 萬兆園區(qū)規(guī)劃與實(shí)施路徑的創(chuàng)新方案
- 豹紋墻面施工方案
- 2025年度智能安防門窗系統(tǒng)安裝施工合同范本3篇
- 模型預(yù)測(cè)控制現(xiàn)狀與挑戰(zhàn)
- MOOC創(chuàng)新創(chuàng)業(yè)與管理基礎(chǔ)(東南大學(xué))
- 快速出具舊機(jī)動(dòng)車評(píng)估報(bào)告
- 人員保有培訓(xùn)課件
- 中職課程思政說課比賽 課件
- 臺(tái)大歐麗娟《紅樓夢(mèng)》公開課全部筆記
- 公司報(bào)價(jià)管理辦法
- 農(nóng)貿(mào)市場(chǎng)安全生產(chǎn)風(fēng)險(xiǎn)分級(jí)管控和隱患排查治理雙體系方案全套資料2019-2020完整實(shí)施方案模板
- 人教版 五年級(jí)上冊(cè)道德與法治全冊(cè)各課及單元同步檢測(cè)試卷【含答案】
- T梁濕接縫及橫隔梁施工方案
- 掛籃檢查驗(yàn)收記錄表
評(píng)論
0/150
提交評(píng)論