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

下載本文檔

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

文檔簡介

1、CHS高級(jí)語言程序設(shè)計(jì)(以高級(jí)語言程序設(shè)計(jì)(以C為例)為例)Programming in C13 循環(huán)循環(huán)Looping循環(huán)循環(huán)結(jié)構(gòu)結(jié)構(gòu) 計(jì)數(shù)計(jì)數(shù)循環(huán)循環(huán) 二重二重循環(huán)循環(huán)多重多重循環(huán)循環(huán)CHS循環(huán)結(jié)構(gòu)2CHS基本概念F在日常生活中在日常生活中,或或者者在程序所處理的問題在程序所處理的問題中中,常常遇到需要常常遇到需要重復(fù)重復(fù)處理的問題處理的問題輸入全班輸入全班50個(gè)學(xué)生的成績個(gè)學(xué)生的成績分別統(tǒng)計(jì)全班分別統(tǒng)計(jì)全班50個(gè)學(xué)生的平均成績個(gè)學(xué)生的平均成績求求100個(gè)整數(shù)之和個(gè)整數(shù)之和教師教師搜集搜集50個(gè)學(xué)生的個(gè)學(xué)生的籍貫信息籍貫信息3循環(huán)結(jié)構(gòu)CHS基本概念F問題問題1 1F問題問題2 2 求學(xué)生平

2、均成績求學(xué)生平均成績nn門課程的成門課程的成績績相加后除以課相加后除以課程程數(shù)數(shù)。41001kkS循環(huán)結(jié)構(gòu)CHS基本概念例如例如 計(jì)算計(jì)算S=1+2+3+100的值。的值。計(jì)算分解:計(jì)算分解:S0SS+1轉(zhuǎn)化成循環(huán)結(jié)構(gòu)描述轉(zhuǎn)化成循環(huán)結(jié)構(gòu)描述:SS+2SS+3SS+1005k =1, 2, 3, , 100SS+k循環(huán)結(jié)構(gòu)CHS循環(huán)結(jié)構(gòu)要素循環(huán)結(jié)構(gòu)要素 變量說明和賦初值變量說明和賦初值,如,如S=0; 給定循環(huán)的初始條件給定循環(huán)的初始條件,如,如k=1; 設(shè)置循環(huán)的終止條件設(shè)置循環(huán)的終止條件,如,如k=100; 描述循環(huán)條件的改變方式描述循環(huán)條件的改變方式,如,如+k; 編寫循環(huán)體語句序列編寫循

3、環(huán)體語句序列,如,如S+=k。6循環(huán)結(jié)構(gòu)CHS基本概念大多數(shù)應(yīng)用程序都會(huì)包含循環(huán)結(jié)構(gòu)大多數(shù)應(yīng)用程序都會(huì)包含循環(huán)結(jié)構(gòu)循環(huán)結(jié)構(gòu)和順序結(jié)構(gòu)、選擇結(jié)構(gòu)是結(jié)構(gòu)化循環(huán)結(jié)構(gòu)和順序結(jié)構(gòu)、選擇結(jié)構(gòu)是結(jié)構(gòu)化程序設(shè)計(jì)的程序設(shè)計(jì)的三種基本結(jié)構(gòu)三種基本結(jié)構(gòu),它們是各種復(fù),它們是各種復(fù)雜程序的基本構(gòu)造單元雜程序的基本構(gòu)造單元循環(huán)結(jié)構(gòu)循環(huán)結(jié)構(gòu)主要有主要有while語句、語句、do-while語句語句和和for語句三種語句三種7循環(huán)結(jié)構(gòu)前測(cè)試循環(huán)和后測(cè)試循環(huán)循環(huán)體條件為真?是否前面的語句下一條語句循環(huán)體條件為真?是否前面的語句下一條語句CHSwhile語句F當(dāng)當(dāng)循環(huán)語句的循環(huán)語句的一般格式為:一般格式為:while(表達(dá)式表

4、達(dá)式)這里的這里的稱為稱為循環(huán)體循環(huán)體。9變量賦初值變量賦初值表達(dá)式的表達(dá)式的值為真值為真?是是否否執(zhí)行循環(huán)體執(zhí)行循環(huán)體求表達(dá)式的值求表達(dá)式的值循環(huán)結(jié)構(gòu)CHSwhile語句例例5-1 求求1到到100的和。的和。#include int main( )int i=1,sum=0;while(i=100)sum+=i;i+;printf(Sum=%dn,sum); return 0;10i=1,sum=0i100?YesNosum+=ii+循環(huán)結(jié)構(gòu)CHSwhile語句例例5-2 輸入一行字符,并統(tǒng)計(jì)字母出現(xiàn)的次數(shù)。輸入一行字符,并統(tǒng)計(jì)字母出現(xiàn)的次數(shù)。#include #include int m

5、ain( )int n=0; /存放英文字母出現(xiàn)的次數(shù)存放英文字母出現(xiàn)的次數(shù)char ch;printf(輸入一行字符輸入一行字符: ); while(ch=getchar( )!=n)if(isalpha(ch) n+;printf(字母出現(xiàn)的次數(shù):字母出現(xiàn)的次數(shù):%dn,n); return 0;11循環(huán)結(jié)構(gòu)CHSwhile語句例例5-3 給出下列程序的運(yùn)行結(jié)果。給出下列程序的運(yùn)行結(jié)果。#include int main( )int i=1;while(in1n1%10am-1,n1/10a1a2am-2=n2nm-2%10a2,nm-2/10a1=nm-1nm-1%10a1,nm-1/1

6、00 =nms=am2+am-12+a22+a1213循環(huán)結(jié)構(gòu)CHSwhile語句#include int main( )int n,n1,s=0;printf(n=);scanf(%d,&n);while(n0)n1=n%10;s+=n1*n1;n=n/10;printf(各個(gè)數(shù)位的平方和是:各個(gè)數(shù)位的平方和是:%dn,s); return 0;14循環(huán)結(jié)構(gòu)CHSwhile語句例例5-5 將十進(jìn)制正整數(shù)轉(zhuǎn)化成二進(jìn)制數(shù)將十進(jìn)制正整數(shù)轉(zhuǎn)化成二進(jìn)制數(shù)(顯示結(jié)果顯示結(jié)果)。例如,例如,(70)10 = (1000110)2 。除除2取余法:取余法:270350171814020100115循

7、環(huán)結(jié)構(gòu)CHSwhile語句F算法分析算法分析說明:說明:輸出的結(jié)果輸出的結(jié)果仍然是十進(jìn)制數(shù),仍然是十進(jìn)制數(shù),只是面值跟所需要只是面值跟所需要的二進(jìn)制數(shù)相同。的二進(jìn)制數(shù)相同。16int n,a,x=1,s=0;輸入十進(jìn)制正整數(shù)輸入十進(jìn)制正整數(shù)nn0?YesNoa=n%2; n/=2;s+=a*x; x*=10;輸出轉(zhuǎn)換結(jié)果輸出轉(zhuǎn)換結(jié)果循環(huán)結(jié)構(gòu)CHSwhile語句#include int main( )int n,a,x=1,s=0; /x=10k表示權(quán),表示權(quán),s存放累加值存放累加值printf(輸入輸入1個(gè)十進(jìn)制正整數(shù)個(gè)十進(jìn)制正整數(shù):);scanf(%d,&n);printf(十進(jìn)制數(shù)

8、十進(jìn)制數(shù)%d對(duì)應(yīng)的二進(jìn)制數(shù)是對(duì)應(yīng)的二進(jìn)制數(shù)是,n);while(n0)a=n%2;/n除于除于2的余數(shù)的余數(shù)n=n/2;/n除于除于2的商的商s+=a*x; /累加值累加值x*=10; /x的連乘積的連乘積printf(%dn,s); return 0;17循環(huán)結(jié)構(gòu)CHSwhile語句例例5-6 譯密碼。為使電文保密,往往需按照一譯密碼。為使電文保密,往往需按照一定規(guī)律將其轉(zhuǎn)換成密碼,收?qǐng)?bào)人再按約定的定規(guī)律將其轉(zhuǎn)換成密碼,收?qǐng)?bào)人再按約定的規(guī)律將其譯回原文。規(guī)律將其譯回原文。例如,例如,可以按以下規(guī)律可以按以下規(guī)律將電文變成密碼:將字母將電文變成密碼:將字母A變成字母變成字母E,a變變成成e,即

9、變成其后的第,即變成其后的第4個(gè)字母,個(gè)字母,W變成變成A,X變成變成B,Y變成變成C,Z變成變成D。非字母不轉(zhuǎn)換。非字母不轉(zhuǎn)換。F輸入一行字符,要求輸出其相應(yīng)的密碼。輸入一行字符,要求輸出其相應(yīng)的密碼。18循環(huán)結(jié)構(gòu)CHSwhile語句#include #include int main( )char ch;printf(String:n);while(ch=getchar( )!=n)if(isalpha(ch)ch=ch+4;if(chZ&chz) ch-=26;printf(%c,ch);printf(n); return 0;19循環(huán)結(jié)構(gòu)CHSdo-while語句Fdo-whi

10、le語句語句的一般格式為:的一般格式為:do while(表達(dá)式表達(dá)式)20否否是是表達(dá)式的表達(dá)式的值為真值為真?執(zhí)行循環(huán)體執(zhí)行循環(huán)體求表達(dá)式的值求表達(dá)式的值變量賦初值變量賦初值循環(huán)結(jié)構(gòu)CHSwhile和do-while比較21變量賦初值變量賦初值表達(dá)式的表達(dá)式的值為真值為真?是是否否執(zhí)行循環(huán)體執(zhí)行循環(huán)體求表達(dá)式的值求表達(dá)式的值否否是是表達(dá)式的表達(dá)式的值為真值為真?執(zhí)行循環(huán)體執(zhí)行循環(huán)體求表達(dá)式的值求表達(dá)式的值變量賦初值變量賦初值循環(huán)結(jié)構(gòu)CHSdo-while語句Fdo-while語句和語句和while語句的比較語句的比較多數(shù)情況下可以互相替代。多數(shù)情況下可以互相替代。F區(qū)別區(qū)別do-while

11、語句先執(zhí)行一次循環(huán)體,再判斷循語句先執(zhí)行一次循環(huán)體,再判斷循環(huán)條件是否滿足;環(huán)條件是否滿足;while語句先判斷循環(huán)條件是否滿足,然后語句先判斷循環(huán)條件是否滿足,然后才執(zhí)行循環(huán)體。才執(zhí)行循環(huán)體。22循環(huán)結(jié)構(gòu)CHSdo-while語句例例5-7 計(jì)算計(jì)算s=1+2+100。#include int main( )int i=1,s=0;dos+=i;i+; while(i=100);printf(Sum=%dn,s);23循環(huán)結(jié)構(gòu)CHSdo-while語句例例5-8 給出下列程序的運(yùn)行結(jié)果。給出下列程序的運(yùn)行結(jié)果。#include int main( )int a=10,y=0;doa+=2;y

12、+=a; while(a=14);printf(a=%dty=%dn,a,y);24循環(huán)結(jié)構(gòu)CHSdo-while語句例例5-9 在國際象棋盤的每個(gè)格子中加倍地放麥子粒。在國際象棋盤的每個(gè)格子中加倍地放麥子粒。#include int main( )int i=1;double n=1,total=0;while(i=64)total+=n;n*=2;i+;printf(total=%22.0fn,total);25循環(huán)結(jié)構(gòu)CHS計(jì)數(shù)循環(huán)26計(jì)數(shù)結(jié)構(gòu)CHSfor語句F 一般形式一般形式for(; ; ) F :設(shè)置變量的初始值;設(shè)置變量的初始值;F :設(shè)置變量的終止值;設(shè)置變量的終止值;F :

13、設(shè)置變量的增量設(shè)置變量的增量(步長值步長值)。27計(jì)數(shù)結(jié)構(gòu)CHSfor語句Ffor語句使用最為靈活,它可以用于循環(huán)次語句使用最為靈活,它可以用于循環(huán)次數(shù)已經(jīng)確定的情況,也可以用于循環(huán)次數(shù)不數(shù)已經(jīng)確定的情況,也可以用于循環(huán)次數(shù)不確定而只給出循環(huán)結(jié)束條件的情況。確定而只給出循環(huán)結(jié)束條件的情況。F如如 for(int i=1; i=100; i+) 表示從表示從i=1開始開始循環(huán),每次增長循環(huán),每次增長1,直到,直到i=100時(shí)結(jié)束。時(shí)結(jié)束。F變量每取一個(gè)值,變量每取一個(gè)值,執(zhí)行一遍。執(zhí)行一遍。28計(jì)數(shù)結(jié)構(gòu)CHSfor語句Ffor語句執(zhí)行過程語句執(zhí)行過程29計(jì)算計(jì)算表達(dá)式表達(dá)式1表達(dá)式表達(dá)式2為真否

14、為真否?是是否否執(zhí)行執(zhí)行循環(huán)體循環(huán)體計(jì)算計(jì)算表達(dá)式表達(dá)式3計(jì)數(shù)結(jié)構(gòu)CHSfor語句例例5-10 給出下列程序的運(yùn)行結(jié)果。給出下列程序的運(yùn)行結(jié)果。#include int main( )for(int i=1;i=10;+i)printf(%d,*n,i); return 0;30計(jì)數(shù)結(jié)構(gòu)CHSfor語句例例5-11 計(jì)算計(jì)算S=1+2+n的值。的值。#include int main( )int n,i,s=0;printf(n=);scanf(%d,&n);for(i=1;i=n;+i) s+=i;printf(S=%dn,s);31計(jì)數(shù)結(jié)構(gòu)CHSfor語句例例5-12 隨機(jī)產(chǎn)生隨機(jī)

15、產(chǎn)生10個(gè)個(gè)10,1000之之間的整數(shù),輸出間的整數(shù),輸出要求其中要求其中最大的數(shù)。最大的數(shù)。32max=0i=1xmax?max=xYesi=10?YesNoNo輸出輸出maxi+計(jì)數(shù)結(jié)構(gòu)CHSfor語句#include #include #include int main( )srand(time(0);int i,x,max=0;for(i=1;imax) max=x;printf(nMax=%dn,max); return 0;33計(jì)數(shù)結(jié)構(gòu)CHSfor語句例例5-13 依次輸入依次輸入10個(gè)數(shù),要求將其中個(gè)數(shù),要求將其中的最大數(shù)輸出。的最大數(shù)輸出。34max=第第1個(gè)數(shù)個(gè)數(shù)i=2xma

16、x?max=xYesi=10?YesNoNo輸出輸出maxi+計(jì)數(shù)結(jié)構(gòu)CHSfor語句#include int main( )int max,i,x;printf(a1=);scanf(%d,&max);for(i=2;imax) max=x;printf(Max=%dn,max); return 0;35計(jì)數(shù)結(jié)構(gòu)CHSfor語句例例5-14 求求Fibonacci數(shù)列的前數(shù)列的前20個(gè)數(shù)。個(gè)數(shù)。Fibonacci數(shù)列有如下特點(diǎn):第數(shù)列有如下特點(diǎn):第1個(gè)數(shù)和第個(gè)數(shù)和第2個(gè)個(gè)數(shù)都為數(shù)都為1,從第,從第3個(gè)數(shù)開始,該數(shù)是其前面兩個(gè)數(shù)開始,該數(shù)是其前面兩個(gè)數(shù)之和。即個(gè)數(shù)之和。即1,n=1F(

17、n)=1,n=2F(n-1)+F(n-2),n336計(jì)數(shù)結(jié)構(gòu)CHSfor語句int F(int n)int f1=1,f2=1;printf(%6d%6d,f1,f2);for(int i=3;i=n;i+)f1=f2+f1;int f0=f2;f2=f1;f1=f0;printf(%6d,f2);37計(jì)數(shù)結(jié)構(gòu)CHSfor語句int F(int n)int f1=1,f2=1;printf(%6d%6d,f1,f2);for(int i=2;i=10;i+)f1=f1+f2;f2=f2+f1;printf(%6d%6d,f1,f2);38計(jì)數(shù)結(jié)構(gòu)CHSfor語句(1)如果如果省略,應(yīng)在省略,應(yīng)

18、在for語句之前對(duì)語句之前對(duì)循環(huán)變量賦初值。循環(huán)變量賦初值。FF注意省略注意省略時(shí),其后的分號(hào)不能省時(shí),其后的分號(hào)不能省略。如略。如 for( ;i=n; i+) sum+=i;FF執(zhí)行時(shí),跳過執(zhí)行時(shí),跳過“求解表達(dá)式求解表達(dá)式1”這一步,其這一步,其它步驟不變。它步驟不變。39計(jì)數(shù)結(jié)構(gòu)CHSfor語句(2)如果如果省略,即沒有判斷循環(huán)的省略,即沒有判斷循環(huán)的終止條件,可以認(rèn)為終止條件,可以認(rèn)為始終為真。始終為真。F省略省略可能出現(xiàn)可能出現(xiàn)死循環(huán)死循環(huán)。for(i=1; ; i+) sum+=i;/不會(huì)正常結(jié)束循環(huán)不會(huì)正常結(jié)束循環(huán)F當(dāng)當(dāng)省略時(shí),必須在省略時(shí),必須在中設(shè)中設(shè)置結(jié)束循環(huán)的語句置結(jié)束

19、循環(huán)的語句(如如break)。40計(jì)數(shù)結(jié)構(gòu)CHSfor語句(3)如果如果省略,應(yīng)在省略,應(yīng)在中設(shè)中設(shè)置能夠改變循環(huán)變量值的語句,使程序能正置能夠改變循環(huán)變量值的語句,使程序能正常循環(huán)。如常循環(huán)。如 for(i=1; i=100; ) sum+=i; i+;(4)最簡形式最簡形式for( ; ; ) 它相當(dāng)于它相當(dāng)于while(1) 41計(jì)數(shù)結(jié)構(gòu)CHSfor語句(5)和和都可以是簡單的表都可以是簡單的表達(dá)式,也可以是逗號(hào)表達(dá)式。達(dá)式,也可以是逗號(hào)表達(dá)式。如如for(i=0,j=100;i=j;i+,j-) k=i+j;(6)可以使關(guān)系表達(dá)式,也可以是可以使關(guān)系表達(dá)式,也可以是邏輯表達(dá)式,如邏輯表

20、達(dá)式,如for(i=0;i=1000&(c=getchar( )!=n;i+=c);42計(jì)數(shù)結(jié)構(gòu)CHSfor語句例例5-15 給出下列程序的運(yùn)行結(jié)果。給出下列程序的運(yùn)行結(jié)果。#include int main( )int a,x,s,n=39;for(x=1,s=0;n0;n/=2) a=n%2; s+=a*x; x*=10; printf(%dn,s); return 0;43計(jì)數(shù)結(jié)構(gòu)CHSfor語句例例5-16 找出四位正整數(shù)中所有對(duì)稱的數(shù)。找出四位正整數(shù)中所有對(duì)稱的數(shù)。分析:分析:四位正整數(shù)四位正整數(shù)k的各位數(shù)分離方法的各位數(shù)分離方法千位數(shù):千位數(shù):k1=k/1000個(gè)位數(shù):個(gè)位

21、數(shù):k4=k%10百位數(shù):百位數(shù):k2=k%1000/100十位數(shù):十位數(shù):k3=k/10%1044計(jì)數(shù)結(jié)構(gòu)CHSfor語句#include int main( )int k,k1,k2,k3,k4;for(k=1000;k=9999;k+)k1=k/1000;k2=k%1000/100;k3=k/10%10;k4=k%10;if(k1=k4&k2=k3) printf(“%dn”,k); return 0;45計(jì)數(shù)結(jié)構(gòu)CHS幾種循環(huán)幾種循環(huán)語句語句的比較的比較(1)一般情況下一般情況下,3種循環(huán)可以互相代替種循環(huán)可以互相代替。(2)在在while和和do-while循環(huán)中,循環(huán)體循環(huán)

22、中,循環(huán)體應(yīng)應(yīng)包含包含使循環(huán)趨于結(jié)束的語句。使循環(huán)趨于結(jié)束的語句。(3)用用while和和do-while循環(huán)時(shí),循環(huán)變量初始循環(huán)時(shí),循環(huán)變量初始化的操作應(yīng)在化的操作應(yīng)在while和和do-while語句之前完成。語句之前完成。(4)for語句可以在表達(dá)式語句可以在表達(dá)式1中實(shí)現(xiàn)循環(huán)變量的中實(shí)現(xiàn)循環(huán)變量的初始化。初始化。(5)3種循環(huán)種循環(huán)語句語句都都可以可以用用break語句跳出循環(huán)語句跳出循環(huán)結(jié)構(gòu),用結(jié)構(gòu),用continue語句結(jié)束本次循環(huán)語句結(jié)束本次循環(huán)。46計(jì)數(shù)結(jié)構(gòu)CHSbreak語句Fbreak語句可以用來從循環(huán)體內(nèi)跳出,提前語句可以用來從循環(huán)體內(nèi)跳出,提前結(jié)束循環(huán),接著執(zhí)行循環(huán)語句

23、后面的語句結(jié)束循環(huán),接著執(zhí)行循環(huán)語句后面的語句F一般形式一般形式break;F基本功能基本功能結(jié)束當(dāng)前循環(huán),轉(zhuǎn)去結(jié)束當(dāng)前循環(huán),轉(zhuǎn)去執(zhí)行循環(huán)后面的語句。執(zhí)行循環(huán)后面的語句。47計(jì)數(shù)結(jié)構(gòu)break語句 break語句從當(dāng)前語句退出,可以在語句從當(dāng)前語句退出,可以在switch、while、for、do-while語句中使用。語句中使用。while(count 76) printf(You lose!); break; else printf(Keep on truckin!); count+CHSbreak語句例例5-17 計(jì)算計(jì)算r=1, 2, ,10時(shí)的圓面積時(shí)的圓面積(100)。#inclu

24、de int main( )double pi=3.14159,area;for(int r=1;r100.0) break;printf(r=%d,area=%fn,r,area);49計(jì)數(shù)結(jié)構(gòu)CHSbreak語句例例5-18 簡單菜單示例。簡單菜單示例。#include int main( )char ch;printf(A.nB.n0.Exitn);/顯示菜單顯示菜單while(1)ch=getchar();if(ch=0) break;switch(ch)case a: case A: printf(“Select An”); break;case b: case B: printf(

25、“Select Bn”); break;50計(jì)數(shù)結(jié)構(gòu)CHSbreak語句例例3-20 編寫一個(gè)程序,實(shí)現(xiàn)功能:編寫一個(gè)程序,實(shí)現(xiàn)功能:向用戶提問向用戶提問“現(xiàn)在正在下雨嗎?現(xiàn)在正在下雨嗎?”提示用戶輸入提示用戶輸入Y或或N。若輸入為若輸入為Y,顯示,顯示“現(xiàn)在正在下雨?,F(xiàn)在正在下雨?!比糨斎霝槿糨斎霝镹,顯示,顯示“現(xiàn)在沒有下雨?,F(xiàn)在沒有下雨?!狈駝t繼續(xù)提問否則繼續(xù)提問“現(xiàn)在正在下雨嗎?現(xiàn)在正在下雨嗎?”51計(jì)數(shù)結(jié)構(gòu)CHSbreak語句#include int main( )char ch;while(1)/死循環(huán)死循環(huán)printf(現(xiàn)在在下雨嗎現(xiàn)在在下雨嗎(Y/N)? );ch=getcha

26、r( );/輸入一個(gè)字符輸入一個(gè)字符if(toupper(ch)=Y) printf(現(xiàn)在在下雨現(xiàn)在在下雨.n); break; else if(toupper(ch)=N) printf(現(xiàn)在不在下雨現(xiàn)在不在下雨.n); break; return 0;52計(jì)數(shù)結(jié)構(gòu)CHScontinue語句Fcontinue語句可以結(jié)束當(dāng)前變量值的循環(huán),語句可以結(jié)束當(dāng)前變量值的循環(huán),跳過循環(huán)體中尚未執(zhí)行的語句,取下一個(gè)變跳過循環(huán)體中尚未執(zhí)行的語句,取下一個(gè)變量值繼續(xù)執(zhí)行循環(huán)語句。量值繼續(xù)執(zhí)行循環(huán)語句。F一般形式一般形式continue;F基本功能基本功能結(jié)束本次循環(huán),取下一個(gè)變量值繼續(xù)循環(huán)。結(jié)束本次循環(huán),取

27、下一個(gè)變量值繼續(xù)循環(huán)。53計(jì)數(shù)結(jié)構(gòu)continue語句 continue語句,跳過語句,跳過continue后面的語句,后面的語句,直接執(zhí)行下一次循環(huán),可以在直接執(zhí)行下一次循環(huán),可以在while、for、do-while語句中使用。語句中使用。while (count 30) printf(Enter a grade: ); scanf(%f, &grade); if(grade 100) continue; total = total + grade; count = count + 1;CHScontinue語句Fcontinue語句和語句和break語句的區(qū)別語句的區(qū)別break

28、是終止整個(gè)循環(huán)語句的執(zhí)行。是終止整個(gè)循環(huán)語句的執(zhí)行。continue語句只結(jié)束本次循環(huán),跳過循環(huán)體語句只結(jié)束本次循環(huán),跳過循環(huán)體中中continue后面的語句,取下一個(gè)變量值繼續(xù)后面的語句,取下一個(gè)變量值繼續(xù)執(zhí)行循環(huán)語句。執(zhí)行循環(huán)語句。 55計(jì)數(shù)結(jié)構(gòu)CHScontinue語句例例5-20 輸出輸出100,200之間的不能被之間的不能被3整除的整除的所有整數(shù)。所有整數(shù)。#include int main( )for(int n=100;n=200;n+)if(n%3=0) continue;printf(%5d,n);putchar(10); return 0;56計(jì)數(shù)結(jié)構(gòu)空語句 每條語句必須以

29、分號(hào)結(jié)尾。每條語句必須以分號(hào)結(jié)尾。 當(dāng)分號(hào)前沒有任何內(nèi)容,稱為空語句當(dāng)分號(hào)前沒有任何內(nèi)容,稱為空語句;CHS循環(huán)的嵌套F循環(huán)循環(huán)的的嵌套嵌套一個(gè)一個(gè)中又中又包含包含有有另一個(gè)循環(huán)結(jié)構(gòu)另一個(gè)循環(huán)結(jié)構(gòu)多重循環(huán)多重循環(huán):有包含:有包含嵌嵌套套循環(huán)的循環(huán)的結(jié)構(gòu)結(jié)構(gòu)3種循環(huán)種循環(huán)(while循環(huán)、循環(huán)、dowhile循環(huán)和循環(huán)和for循循環(huán)環(huán))可以互相嵌套可以互相嵌套58二重循環(huán)CHS二重循環(huán)F二重循環(huán)二重循環(huán)的的基本結(jié)構(gòu)和執(zhí)行過程基本結(jié)構(gòu)和執(zhí)行過程外重循環(huán)一次外重循環(huán)一次(即循即循環(huán)變量取一個(gè)值環(huán)變量取一個(gè)值),、內(nèi)重內(nèi)重循環(huán)循環(huán)和和執(zhí)行一遍。執(zhí)行一遍。59內(nèi)重循環(huán)語句內(nèi)重循環(huán)語句;外重循環(huán)語句外重循

30、環(huán)語句;二重循環(huán)CHS二重循環(huán)例例5-21 給出下列程序的運(yùn)行結(jié)果。給出下列程序的運(yùn)行結(jié)果。#include int main( )int i,j;for(i=1;i10;i+)printf(%d,i);for(j=1;j=i;j+)printf(*);printf(n);60二重循環(huán)CHS二重循環(huán)例例5-23 輸出輸出4*5的矩陣。的矩陣。1 2 3 4 52 4 6 8 103 6 9 12 154 8 12 16 20F外外重重循環(huán)循環(huán)控制輸出行數(shù)控制輸出行數(shù)F內(nèi)內(nèi)重重循環(huán)循環(huán)控制控制輸出列數(shù)輸出列數(shù)61二重循環(huán)CHS二重循環(huán)#include int main( )int i,j;for

31、(i=1;i=4;i+)for(j=1;jn時(shí),時(shí),j=2(n-i)+1,前面空前面空i-n/2格格;63* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *二重循環(huán)CHS二重循環(huán)#include int main( )int i,j,k,n;printf(“n=”); scanf(%d,&n);/行數(shù)行數(shù)if(n%2=0) n+;/n為奇數(shù)為奇數(shù)for(i=1;i=n;i+)/輸出輸出k-1個(gè)空格個(gè)空格k=i=n/2?n/2-i+2:i-n/2;for(j=1;jk;j+) printf( );/輸出輸出k

32、個(gè)個(gè)*k=i=n/2?2*i-1:2*(n-i)+1;for(j=1;j=k;j+) printf(*);printf(n);64二重循環(huán)CHS多重循環(huán)例例5-25 給出下列程序的運(yùn)行結(jié)果。給出下列程序的運(yùn)行結(jié)果。#include #define N 9int main( )int i,j,k,m;for(k=5;k=N;k+=2)for(i=1;i=k;i+)m=i=k/2?N/2-i+2:i+N/2+1-k;for(j=1;jm;j+) printf( );m=i=k/2?2*i-1:2*(k-i)+1;for(j=1;j=m;j+) printf(*);printf(n); return

33、 0;65CHS程序運(yùn)行結(jié)果 #include int main( )int x=0,y=12;dox+=5;printf(%dn,y-=5); while(!(-y); return 0;66多重循環(huán)CHS程序填空題F程序功能:用程序功能:用do-while 語句求出語句求出1 至至1000之之間滿足間滿足“用用5除余除余2,用,用7除余除余5”的整數(shù),一行的整數(shù),一行只打印四個(gè)數(shù)。只打印四個(gè)數(shù)。67多重循環(huán)CHS程序填空題#include int main( )int i=1,j=0;doif(i%5=2)&( i%7=5)printf(%6d,i);j+;if( ) printf(n); i+; while(i=1000);68多重循環(huán)CHS程序閱讀題#include int main( )int m, i, k;for(m=11;

溫馨提示

  • 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)論