第五章:循環(huán)結(jié)構(gòu)_第1頁
第五章:循環(huán)結(jié)構(gòu)_第2頁
第五章:循環(huán)結(jié)構(gòu)_第3頁
第五章:循環(huán)結(jié)構(gòu)_第4頁
第五章:循環(huán)結(jié)構(gòu)_第5頁
已閱讀5頁,還剩40頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(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ì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論