循環(huán)結(jié)構(gòu)的程序設(shè)計(jì)課件_第1頁
循環(huán)結(jié)構(gòu)的程序設(shè)計(jì)課件_第2頁
循環(huán)結(jié)構(gòu)的程序設(shè)計(jì)課件_第3頁
循環(huán)結(jié)構(gòu)的程序設(shè)計(jì)課件_第4頁
循環(huán)結(jié)構(gòu)的程序設(shè)計(jì)課件_第5頁
已閱讀5頁,還剩46頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡介

第六章循環(huán)結(jié)構(gòu)的程序設(shè)計(jì)1

循環(huán)語句的執(zhí)行流程

while語句do-while語句

for語句本章要點(diǎn)2循環(huán)的概念問題:從鍵盤上輸入10個(gè)整數(shù)并求和,怎么編程?問題:從鍵盤上輸入500個(gè)整數(shù)并求和,怎么編程?3

首先判斷循環(huán)控制表達(dá)式是否為“真”,若為“真”,則反復(fù)執(zhí)行循環(huán)體;若為“假”,則結(jié)束循環(huán)。1.當(dāng)型循環(huán)循環(huán)體N條件Y當(dāng)型循環(huán)入口出口5

首先執(zhí)行循環(huán)體,然后再判斷循環(huán)控制表達(dá)式,若為“真”,則反復(fù)執(zhí)行循環(huán)體,直到循環(huán)控制表達(dá)式為“假”時(shí)結(jié)束循環(huán)。2.直到型循環(huán)直到型循環(huán)條件NY循環(huán)體6§6.2while語句while語句格式:while(表達(dá)式)語句;

說明:語句部分即循環(huán)體可以是簡單語句,也可以是復(fù)合語句。7main(){intcount,num,total;

count=0;total=0;/*total:存放累加和*/

while(count<10)/*循環(huán)控制條件*/{count++;/*循環(huán)體*/

printf("EntertheNo.%d=",count);scanf("%d",&num);total+=num;}/*計(jì)算累加和*/

printf("Total=%d\n",total);}例從鍵盤輸入10個(gè)整數(shù),求這10個(gè)整數(shù)的和9main(){intn=0; while(n<3) printf(”nis%d\n”,n); n++; printf(”That\’sall.\n”);}例{}例:分析程序的運(yùn)行結(jié)果10無法正常終止的程序,稱為“死循環(huán)”。結(jié)論:while語句循環(huán)體中,一定要有能夠?qū)ρh(huán)控制條件產(chǎn)生影響的語句。避免出現(xiàn)“死循環(huán)”現(xiàn)象。11

index=1; while(--index<5) printf(”Goodmorning!\n”); 分析:仍有問題,程序改變了index,但方向錯(cuò)了。在index達(dá)到系統(tǒng)能夠處理的最大負(fù)數(shù)時(shí),將會(huì)產(chǎn)生下溢而終止程序。

結(jié)論:循環(huán)體中必須有能夠使循環(huán)正常停止的條件。例2分析下列程序段13

分析:由于不知道要輸入的字符數(shù)量,只知停止條件是輸入字母a,則只能將循環(huán)控制條件設(shè)為ch!='a'。 #include<stdio.h> main() {charch=''; while(ch!='a')putchar(ch=getch()); }例:從鍵盤中讀入一系列字符,直到輸入字母a時(shí)才停止14

改寫:

#include<stdio.h> main() {charch; while((ch=getch())!='a')putchar(ch); }15例:求1到100的之和

main(){inttotal=0,i=1;

while(i<=100) { total=total+i;

i++; }

printf(”Total=%d\n",total);}17循環(huán)嵌套:在循環(huán)體中,又包含有循環(huán)語句,構(gòu)成循環(huán)嵌套。

例:輸出下三角形乘法九九表。123456789---------------------------------------12436948121651015202561218243036714212835424981624324048566491827364554637281

假設(shè):行號(hào)為i(1<=i<=9),列號(hào)為j(1<=j<=i)則:第i行中一共要輸出i個(gè)乘積i=6j=5i*j18

main(){inti=1,j;

while(i<=9)printf("%4d",i++);

printf("\n--------------\n");i=1;while(i<=9){j=1;

while(j<=i) {printf("%4d",i*j);j++;}

printf("\n");i++;}}

193.為了保證循環(huán)正常運(yùn)行,應(yīng)該特別注意:循環(huán)控制條件

控制條件的初始狀態(tài)(初始值)循環(huán)體內(nèi)部對(duì)控制條件的影響21§6.4do-while語句do-while語句格式

do語句

while(表達(dá)式);22do-while語句的執(zhí)行流程表達(dá)式?執(zhí)行語句成立不成立執(zhí)行while子句之后的語句循環(huán)控制條件循環(huán)體23

main(){unsignedintnumber;printf("Inputthenumber:");scanf("%d",&number); do{printf("%d",number%10);

number/=10;/*number縮小10倍*/ }while(number!=0);}例:輸入一個(gè)>=0的整數(shù),要求以相反的順序輸出該數(shù)。例如輸入12345,則輸出為54321。25第一類'0','1','2','3','4','5','6','7','8','9'第二類'+','-','*','/','%','='第三類其它字符當(dāng)輸入字符'\'時(shí)先計(jì)數(shù)然后停止接收輸入例從鍵盤輸入任意的字符,按下列規(guī)則進(jìn)行分類計(jì)數(shù)26不成立執(zhí)行表達(dá)式1for語句的執(zhí)行流程:循環(huán)初始條件循環(huán)控制條件表達(dá)式2?執(zhí)行語句成立執(zhí)行for循環(huán)之后的語句執(zhí)行表達(dá)式3循環(huán)體29for語句等價(jià)于下列語句:表達(dá)式1;while(表達(dá)式2){語句;表達(dá)式3;}30遞推公式: n!=1 當(dāng)n=1時(shí)

n!=(n-1)!*n 當(dāng)n>1時(shí)

main(){longintn=1; inti; for(i=1;i<=10;i++) {n=n*i; printf("%2d!=%ld\n",i,n);}}例:求1到10整數(shù)的階乘31main(){inti,j; for(i=1;i<10;i++) printf("%4d",i);

printf("\n------------------\n"); for(i=1;i<10;i++)

for(j=1;j<=i;j++)printf((j==i)?"%4d\n":"%4d",i*j);}例:用for語句實(shí)現(xiàn)打印乘法九九表32說明:1for語句的一般形式中的“表達(dá)式1”可以省略,此時(shí)應(yīng)該在for語句之前對(duì)循環(huán)變量賦初值。而此時(shí)雖然表達(dá)式1被省略了,但其后的分號(hào)不能省略。例如:

inti=1,sum=0;for(;i<=100;i++)sum=sum+i;332表達(dá)式2也可以被省略,此時(shí)不判斷循環(huán)條件,循環(huán)將無終止地進(jìn)行下去,也就是認(rèn)為表達(dá)式2始終為真。3表達(dá)式3也可以省略。表達(dá)式3的功能是使循環(huán)變量變化,此時(shí)應(yīng)保證循環(huán)變量變化,使循環(huán)能正常結(jié)束。4三個(gè)表達(dá)式都可以省略,此時(shí)不設(shè)初值,不判斷循環(huán)條件,循環(huán)變量不增值,因此該for語句的循環(huán)體將無終止地執(zhí)行下去。

345表達(dá)式1可以是設(shè)置循環(huán)變量初始值的賦值表達(dá)式,也可以是與循環(huán)變量無關(guān)的其它表達(dá)式。如:inti=1,sum;for(sum=0;i<=100;i++)sum=sum+i;

表達(dá)式3也可以是與循環(huán)控制無關(guān)的任意表達(dá)式。如:for(i=1;i<=100;sum=sum+i)i++;0;99;35

6表達(dá)式1和表達(dá)式3可以是一個(gè)簡單的表達(dá)式,也可以是逗號(hào)表達(dá)式,即包含一個(gè)以上的簡單表達(dá)式,中間用逗號(hào)間隔。如:for(sum=0,i=1;i<=100;i++)sum=sum+i;36

7表達(dá)式2一般是關(guān)系表達(dá)式或邏輯表達(dá)式,但也可以是數(shù)值表達(dá)式或字符表達(dá)式,只要其值為非0,就執(zhí)行循環(huán)體。如:for(i=0;(c=getchar())!=’\n’;i+=c);37數(shù)列1、1、2、3、5、8、13、21、…是著名的菲波那奇數(shù)列,其遞推通項(xiàng)公式為: U1=U2=1 Un=Un-1+Un-2 (n>=3)

根據(jù)遞推通項(xiàng)公式,可用遞推法編寫程序,計(jì)算第N項(xiàng)的值。遞推法:由初始的已知條件開始,先計(jì)算出第(N-1)步的結(jié)果,再利用前面已知的(N-1)項(xiàng)結(jié)果,按照遞推公式(或遵照遞推規(guī)則),推出第N步結(jié)果。 遞推法是程序設(shè)計(jì)中最常用的方法之一,使用遞推法必須有明確的遞推初始值和遞推規(guī)則(遞推公式)。例:求菲波那奇數(shù)列的第n項(xiàng)38

main(){intn,i,un1,un2,un;for(;;){printf("Inputn=?");scanf("%d",&n);if(n>=3)break;/*退出for循環(huán)*/

elseprintf("\nInputniserror!\n");}

un=un2=1;/*設(shè)置遞推初始值*/

for(i=3;i<=n;i++){un1=un2;un2=un;un=un1+un2;}printf("No.%dis%d\n",n,un);}39§6.5循環(huán)語句小結(jié)C語言提供了三種循環(huán)語句:for、while、do-while。特點(diǎn)如下: 1、for和while先判斷循環(huán)條件后執(zhí)行循環(huán)體,do-while語句先執(zhí)行循環(huán)體后判斷循環(huán)條件。 2、while和do-while語句的條件表達(dá)式只有一個(gè),for語句有3個(gè)。 3、while、do-while、for可以相互替換使用。404、while語句多用于不需要賦初值的或循環(huán)次數(shù)不定的情況。

for語句多用于要賦初值或循環(huán)次數(shù)固定的情況。

do-while語句多用于至少要運(yùn)行一次的循環(huán)。5、循環(huán)語句可以嵌套,可以并列,但不能交叉。41為了保證循環(huán)體正常運(yùn)行,應(yīng)該特別注意:循環(huán)控制條件控制條件的初始狀態(tài)(初始值)循環(huán)體內(nèi)部對(duì)控制條件的影響以上三個(gè)方面相互配合,相互影響,共同完成循環(huán)控制42§6.6轉(zhuǎn)移語句轉(zhuǎn)移語句的作用:

改變程序的運(yùn)行流程C語言轉(zhuǎn)移語句

breakcontinuegotoreturn436.6.1break語句格式:

break;功能:1.在switch語句中結(jié)束case子句,使控制轉(zhuǎn)到switch語句之外。2.在循環(huán)語句的循環(huán)體中使用,結(jié)束循環(huán)過程,使控制轉(zhuǎn)移到整個(gè)循環(huán)語句之外的下一條語句處。44不成立表達(dá)式?成立執(zhí)行后續(xù)語句breakbreak語句的執(zhí)行流程while語句do-while語句成立表達(dá)式?不成立執(zhí)行后續(xù)語句break45不成立表達(dá)式2?成立執(zhí)行后續(xù)語句執(zhí)行表達(dá)式3執(zhí)行表達(dá)式1breakfor語句46

main(){intj;longn;

n=555555;for(j=999;j>=100;j--)if(n%j==0)

{

printf(”3digitsin%ld=%d\n”,n,j); break;/*控制退出循環(huán)*/}}例:求555555的約數(shù)中最大的三位數(shù)是多少?47break語句使用注意: 1、在嵌套循環(huán)中,break語句僅能退出一層(當(dāng)前)循環(huán)。 2、若在循環(huán)語句中包含了switch語句,那么switch語句中的break語句僅能使控制退出switch語句。

486.6.2continue語句格式continue;功能continue語句僅能在循環(huán)語句中使用它的作用不是結(jié)束循環(huán),而是開始一次新的循環(huán)。對(duì)于for語句,將控制轉(zhuǎn)到執(zhí)行表達(dá)式3和條件測試部分;對(duì)于while和do-while語句,將控制轉(zhuǎn)到條件測試部分;49continue語句的執(zhí)行流程表達(dá)式?continue成立不成立執(zhí)行后續(xù)語句

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(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)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論