C語言程序設(shè)計課件循環(huán)結(jié)構(gòu)ppt課件_第1頁
C語言程序設(shè)計課件循環(huán)結(jié)構(gòu)ppt課件_第2頁
C語言程序設(shè)計課件循環(huán)結(jié)構(gòu)ppt課件_第3頁
C語言程序設(shè)計課件循環(huán)結(jié)構(gòu)ppt課件_第4頁
C語言程序設(shè)計課件循環(huán)結(jié)構(gòu)ppt課件_第5頁
已閱讀5頁,還剩28頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、C言言語語程序程序設(shè)計設(shè)計第第4章章 循環(huán)構(gòu)造循環(huán)構(gòu)造2本章主要本章主要內(nèi)內(nèi)容容 1. 循環(huán)構(gòu)造設(shè)計理念循環(huán)構(gòu)造設(shè)計理念 2. for循環(huán)語句循環(huán)語句 3. while循環(huán)語句循環(huán)語句 4. dowhile循環(huán)語句循環(huán)語句 5. 循環(huán)嵌套循環(huán)嵌套 6. 流程控制語句流程控制語句3循循環(huán)構(gòu)環(huán)構(gòu)造程序造程序設(shè)計設(shè)計所謂循環(huán)是指運用一定條件對同一個程序段反復(fù)執(zhí)行所謂循環(huán)是指運用一定條件對同一個程序段反復(fù)執(zhí)行假設(shè)干次。被反復(fù)執(zhí)行的部分稱為循環(huán)體。假設(shè)干次。被反復(fù)執(zhí)行的部分稱為循環(huán)體。循環(huán)設(shè)計步驟:循環(huán)設(shè)計步驟:step1: 構(gòu)造循環(huán)體構(gòu)造循環(huán)體step2: 尋覓控制循環(huán)的變量尋覓控制循環(huán)的變量step

2、3: 找出控制循環(huán)變量的找出控制循環(huán)變量的3個要素:初值、繼個要素:初值、繼續(xù)循環(huán)的條件、使循環(huán)趨于終了的部分。續(xù)循環(huán)的條件、使循環(huán)趨于終了的部分。4循循環(huán)環(huán)控制的控制的兩種兩種方法方法5C循循環(huán)語環(huán)語句句6for語句語句語法方式:語法方式:for (表達(dá)式表達(dá)式1;表達(dá)式;表達(dá)式2;表達(dá)式;表達(dá)式3) 循環(huán)體;循環(huán)體; 執(zhí)行過程:執(zhí)行過程:step1: 先求解表達(dá)式先求解表達(dá)式1,表達(dá),表達(dá)式式1只執(zhí)行一次,普通是賦值只執(zhí)行一次,普通是賦值語句,用于初始化循環(huán)變量。語句,用于初始化循環(huán)變量。step2: 求解表達(dá)式求解表達(dá)式2,假設(shè)為,假設(shè)為0假,那么退出循環(huán)執(zhí)行后假,那么退出循環(huán)執(zhí)行后續(xù)語

3、句。假設(shè)為非續(xù)語句。假設(shè)為非0真,真,那么執(zhí)行循環(huán)體。那么執(zhí)行循環(huán)體。step3: 執(zhí)行表達(dá)式執(zhí)行表達(dá)式3。Step4: 轉(zhuǎn)回轉(zhuǎn)回step2繼續(xù)判別。繼續(xù)判別。7for語句運用實例語句運用實例【例【例4.1】在屏幕上顯示一行】在屏幕上顯示一行6個個*。 中心語句:中心語句: for(i=1;i=6;i+) printf(*);執(zhí)行次數(shù)執(zhí)行次數(shù)循環(huán)變量循環(huán)變量i值值循環(huán)條件循環(huán)條件i=6循環(huán)體執(zhí)行循環(huán)體執(zhí)行表達(dá)式表達(dá)式3第第1次循環(huán)次循環(huán)i=1真真* *i=2第第2次循環(huán)次循環(huán)i=2真真* *i=3第第3次循環(huán)次循環(huán)i=3真真* *i=4第第4次循環(huán)次循環(huán)i=4真真* *i=5第第5次循環(huán)次循環(huán)

4、i=5真真* *i=6第第6次循環(huán)次循環(huán)i=6真真* *i=7第第7次循環(huán)次循環(huán)i=7假假循環(huán)結(jié)束循環(huán)結(jié)束8for語句運用實例語句運用實例【例【例4.2】求】求1+2+3+100的累加和。的累加和。 #include stdio.h#include stdio.hvoid main()void main() int i,sum=0; int i,sum=0; for ( i=1;i=100;i+) for ( i=1;i100) break ; sum+= i ; i+;for (i=1;i=100;sum+=i,i+);for (i=1,j=10;ij;i+,j-) printf (%3d

5、,i+j);11while語句語句語法方式:語法方式: while (表達(dá)式表達(dá)式) 循環(huán)體;循環(huán)體;執(zhí)行過程:執(zhí)行過程:step1:求解表達(dá)式,假求解表達(dá)式,假設(shè)為設(shè)為0假,那么退假,那么退出循環(huán)執(zhí)行后續(xù)語句出循環(huán)執(zhí)行后續(xù)語句。假設(shè)為非。假設(shè)為非0真,真,那么執(zhí)行循環(huán)體。那么執(zhí)行循環(huán)體。step2: 轉(zhuǎn)回轉(zhuǎn)回step1繼續(xù)繼續(xù)判別。判別。 表達(dá)式?表達(dá)式?循環(huán)體循環(huán)體非非0(0(真真) )0(0(假假) )后續(xù)語句后續(xù)語句12while語句運用實例語句運用實例【例【例4.3】從鍵盤上讀入一個非】從鍵盤上讀入一個非0的整數(shù),統(tǒng)計該數(shù)的的整數(shù),統(tǒng)計該數(shù)的位數(shù)。位數(shù)。 #includestdio.

6、h#includestdio.hvoid main()void main()int count=0,number;int count=0,number;printf (Please enter an integer: );printf (Please enter an integer: );scanf (%d,&number);scanf (%d,&number);if(number0) number= -number;if(number0) number= -number;while (number!=0)while (number!=0)count+;count+; num

7、ber=number/10; number=number/10; printf (It contains %d digits.n,count);printf (It contains %d digits.n,count); 語句功能語句功能 ? ?13while語句運用實例語句運用實例【例【例4.4】計算表達(dá)式】計算表達(dá)式a+aa+aaa+aaaa,其中,其中a與與x的值從的值從鍵盤上輸入。鍵盤上輸入。 int a,x;int a,x;long sum=0,n=1,tn;long sum=0,n=1,tn;scanf(%d,%d, &a,&x);scanf(%d,%d, &am

8、p;a,&x);tn=a;tn=a;while(n=x)while(n=x)sum+=tn;sum+=tn;tn=tntn=tn* *10+a;10+a;n+;n+; 循環(huán)次數(shù)循環(huán)次數(shù)循環(huán)條件循環(huán)條件sumsum值值tntn值值n n值值第第1 1次次1=41=4為真為真0+20+22 2* *10+210+22 2第第2 2次次2=42=4為真為真2+222+222222* *10+210+23 3第第3 3次次3=43=4為真為真24+22224+222222222* *10+210+24 4第第4 4次次4=44=4為真為真246+2222246+222222222222* *1

9、0+210+25 5第第5 5次次5=45=4為假為假14想一想?想一想?while (c=getchar()!=Y|c!=y|c!=N|c!=n) ;while (1) ;while (i) ;while (!i) ;15dowhile語句語句語法方式:語法方式: do 循環(huán)體;循環(huán)體; while (表達(dá)式表達(dá)式);執(zhí)行過程:執(zhí)行過程:step1:執(zhí)行執(zhí)行do后面循環(huán)后面循環(huán)體中的語句;體中的語句;step2:求解求解while后圓括后圓括號內(nèi)的表達(dá)式。假設(shè)號內(nèi)的表達(dá)式。假設(shè)為為0假,執(zhí)行假,執(zhí)行step3;假設(shè)為非;假設(shè)為非0真,真,轉(zhuǎn)去繼續(xù)執(zhí)行循環(huán)體轉(zhuǎn)去繼續(xù)執(zhí)行循環(huán)體。step3: 退

10、出退出do-while循循環(huán),執(zhí)行后續(xù)語句。環(huán),執(zhí)行后續(xù)語句。表達(dá)式?表達(dá)式?循環(huán)體循環(huán)體非非0(0(真真) )0(0(假假) )后續(xù)語句后續(xù)語句16dowhile語句運用實例語句運用實例【例【例4.5】編寫含有菜單的算術(shù)四那么運算程序?!烤帉懞胁藛蔚乃阈g(shù)四那么運算程序。 do doprintf (n math exercise);printf (n math exercise); printf (n please enter your choice and numbers); printf (n please enter your choice and numbers); scanf (%

11、d%d,&x,&y);scanf (%d%d,&x,&y);op=getchar();op=getchar();getchar(); getchar(); switch(op)switch(op) case 1: printf(n add is %d,x+y);break; case 1: printf(n add is %d,x+y);break; default: printf(n error. choice again n);break; default: printf(n error. choice again n);break; while(op!=

12、5);while(op!= 5);17循環(huán)嵌套循環(huán)嵌套 循環(huán)語句可以嵌套。在循環(huán)體語句中又包含另一循環(huán)語句可以嵌套。在循環(huán)體語句中又包含另一個完好的循環(huán)構(gòu)造的方式,稱為循環(huán)的嵌套。個完好的循環(huán)構(gòu)造的方式,稱為循環(huán)的嵌套。 嵌套在循環(huán)體內(nèi)的循環(huán)稱為內(nèi)循環(huán),外面的循環(huán)嵌套在循環(huán)體內(nèi)的循環(huán)稱為內(nèi)循環(huán),外面的循環(huán)稱為外循環(huán)。稱為外循環(huán)。 假設(shè)內(nèi)循環(huán)體中又有嵌套的循環(huán)語句,那么構(gòu)成假設(shè)內(nèi)循環(huán)體中又有嵌套的循環(huán)語句,那么構(gòu)成多重循環(huán)。多重循環(huán)。 for、while、do-while循環(huán)語句既可以并列,也循環(huán)語句既可以并列,也可以相互嵌套,但要層次清楚,不能出現(xiàn)交叉可以相互嵌套,但要層次清楚,不能出現(xiàn)交叉

13、。18循環(huán)嵌套的原那么循環(huán)嵌套的原那么對于多重循環(huán),特別要留意給與循環(huán)有關(guān)的變量賦對于多重循環(huán),特別要留意給與循環(huán)有關(guān)的變量賦初值的位置;初值的位置;內(nèi)、外循環(huán)變量不能出現(xiàn)循環(huán)控制混亂,導(dǎo)致死循內(nèi)、外循環(huán)變量不能出現(xiàn)循環(huán)控制混亂,導(dǎo)致死循環(huán)或計算結(jié)果錯誤;環(huán)或計算結(jié)果錯誤;應(yīng)正確編寫內(nèi)、外循環(huán)的循環(huán)體,需求在內(nèi)循環(huán)中應(yīng)正確編寫內(nèi)、外循環(huán)的循環(huán)體,需求在內(nèi)循環(huán)中執(zhí)行的一切語句必需用執(zhí)行的一切語句必需用括起來組成復(fù)合語句作為括起來組成復(fù)合語句作為內(nèi)循環(huán)體;屬于外循環(huán)的語句應(yīng)放在內(nèi)循環(huán)體之外內(nèi)循環(huán)體;屬于外循環(huán)的語句應(yīng)放在內(nèi)循環(huán)體之外、外循環(huán)體之內(nèi);、外循環(huán)體之內(nèi);不應(yīng)在循環(huán)中執(zhí)行的操作應(yīng)放在進入最

14、外層循環(huán)之不應(yīng)在循環(huán)中執(zhí)行的操作應(yīng)放在進入最外層循環(huán)之前或最外層循環(huán)終了之后;前或最外層循環(huán)終了之后;19循環(huán)嵌套運用舉例循環(huán)嵌套運用舉例【例【例4-6】打印九九乘法表?!看蛴【啪懦朔ū?。1 1* *1=11=12 2* *1=2 21=2 2* *2=42=43 3* *1=3 31=3 3* *2=6 32=6 3* *3=93=94 4* *1=4 41=4 4* *2=8 42=8 4* *3=12 43=12 4* *4=164=165 5* *1=5 51=5 5* *2=10 52=10 5* *3=15 53=15 5* *4=20 54=20 5* *5=255=256 6*

15、 *1=6 61=6 6* *2=12 62=12 6* *3=18 63=18 6* *4=24 64=24 6* *5=305=307 7* *1=7 71=7 7* *2=14 72=14 7* *3=21 73=21 7* *4=28 74=28 7* *5=35 75=35 7* *6=426=428 8* *1=8 81=8 8* *2=16 82=16 8* *3=24 83=24 8* *4=32 84=32 8* *5=40 85=40 8* *6=48 86=48 8* *7=567=569 9* *1=9 91=9 9* *2=18 92=18 9* *3=27 93=2

16、7 9* *4=36 94=36 9* *5=45 95=45 9* *6=54 96=54 9* *7=64 97=64 9* *8=72 98=72 9* *9=819=81for(i=1;i=9;i+)for(i=1;i=9;i+) for(j=1;j=i;j+) for(j=1;j=i;j+) printf(%d printf(%d* *%d=%-4d,i,j,i%d=%-4d,i,j,i* *j); j); printf(n); printf(n); i=1i=1j=1j=1輸出:輸出:1 1* *1=1 1=1 換行換行i=2i=2j=1j=1輸出:輸出:2 2* *1=2 1=2

17、 換行換行j=2j=2輸出:輸出:2 2* *2=4 2=4 換行換行i=9i=9j=1j=1輸出:輸出:9 9* *1=9 1=9 換行換行j=2j=2輸出:輸出:9 9* *2=18 2=18 換行換行j=9j=9輸出:輸出:9 9* *9=81 9=81 換行換行20循環(huán)嵌套運用舉例循環(huán)嵌套運用舉例【例【例4.74.7】抓交通肇事犯。一輛卡車違反交通規(guī)那么,撞人后逃跑。現(xiàn)場有】抓交通肇事犯。一輛卡車違反交通規(guī)那么,撞人后逃跑?,F(xiàn)場有三人目擊事件,但都沒有記住車號,只記下車號的一些特征。甲說:牌照的三人目擊事件,但都沒有記住車號,只記下車號的一些特征。甲說:牌照的前兩位數(shù)字是一樣的;乙說:

18、牌照的后兩位數(shù)字是一樣的,但與前兩位不同前兩位數(shù)字是一樣的;乙說:牌照的后兩位數(shù)字是一樣的,但與前兩位不同; 丙是數(shù)學(xué)家,他說:四位的車號剛好是一個整數(shù)的平方。請根據(jù)以上線丙是數(shù)學(xué)家,他說:四位的車號剛好是一個整數(shù)的平方。請根據(jù)以上線索求出車號。索求出車號。 for(i=1;i=9;i+) for(i=1;i=9;i+) for(j=0;j=9;j+) for(j=0;j=9;j+) if(i!=j) if(i!=j) k=i k=i* *1000+i1000+i* *100+j100+j* *10+j; 10+j; for(c=31;c for(c=31;c* *ck;c+); ck;c+)

19、; if(c if(c* *c=k) printf(Lorry-No. is %d.n,k); c=k) printf(Lorry-No. is %d.n,k); 21循環(huán)嵌套運用舉例循環(huán)嵌套運用舉例【例【例4.84.8】從鍵盤上輸入】從鍵盤上輸入n n的值為的值為5 5,編程打印具有如下,編程打印具有如下規(guī)律的對稱圖形。規(guī)律的對稱圖形。 行號行號i i空格數(shù)空格數(shù)j j 個數(shù)個數(shù)k k -2 -2 2 2 1 1 -1 -1 1 1 3 3 0 0 0 0 5 5 1 1 1 1 3 3 2 2 2 2 1 1 fabs (i) fabs (i)n-2n-2* *fabs(i)fabs(i)

20、#includestdio.h#includestdio.h#includemath.h#includemath.hvoid main()void main()int i,j,k,n;int i,j,k,n; printf( printf(請輸入一個小于大于請輸入一個小于大于2 2且小于且小于8080的奇數(shù):的奇數(shù):);); scanf(%d,&n); scanf(%d,&n); for(i=-n/2;i=n/2;i+) for(i=-n/2;i=n/2;i+) for(j=1;jfabs(i);j+) for(j=1;jfabs(i);j+) printf( ); print

21、f( ); for(k=1;kn-2 for(k=1;kn-2* *fabs(i);k+)fabs(i);k+) printf(); printf(); printf(n); printf(n);可以從可以從0 0開場嗎?開場嗎?22流程控制語句流程控制語句 在循環(huán)構(gòu)造中,循環(huán)體普通都要執(zhí)行到循環(huán)條件在循環(huán)構(gòu)造中,循環(huán)體普通都要執(zhí)行到循環(huán)條件不成立的時候才會退出循環(huán)。但是處理實踐問題時,不成立的時候才會退出循環(huán)。但是處理實踐問題時,常遇到一些特殊的情況需求中途退出循環(huán)體,或者某常遇到一些特殊的情況需求中途退出循環(huán)體,或者某次循環(huán)時不希望執(zhí)行循環(huán)體中的某些語句,這時就需次循環(huán)時不希望執(zhí)行循環(huán)體中

22、的某些語句,這時就需求運用到流程控制語句。求運用到流程控制語句。 break break語句語句: :終止循環(huán)語句,使程序執(zhí)行跳出循環(huán)體。終止循環(huán)語句,使程序執(zhí)行跳出循環(huán)體。 continue continue語句語句: :中斷循環(huán)體的本次執(zhí)行跳過循環(huán)體中中斷循環(huán)體的本次執(zhí)行跳過循環(huán)體中尚未執(zhí)行的語句,立刻開場執(zhí)行下一次循環(huán)。尚未執(zhí)行的語句,立刻開場執(zhí)行下一次循環(huán)。 23break語句語句 語句方式為:語句方式為:break;break;表達(dá)式表達(dá)式2 2?part1part1非非0(0(真真) )0(0(假假) )后續(xù)語句后續(xù)語句表達(dá)式表達(dá)式1 1表達(dá)式表達(dá)式3 3終了表達(dá)式終了表達(dá)式? ?

23、非非0(0(真真) )0(0(假假) )forforpart2part2for(for(表達(dá)式表達(dá)式1;1;表達(dá)式表達(dá)式2;2;表達(dá)式表達(dá)式3)3) part1; part1; if( if(終了表達(dá)式終了表達(dá)式) break;) break; part2; part2; 后續(xù)語句;后續(xù)語句;24break語句運用舉例語句運用舉例 【例【例4.94.9】輸入一個正整數(shù)】輸入一個正整數(shù)m m ,判別它能否為素數(shù)。素,判別它能否為素數(shù)。素數(shù)就是只能被數(shù)就是只能被1 1和本身整除的正整數(shù),和本身整除的正整數(shù),1 1不是素數(shù),不是素數(shù),2 2是素是素數(shù)。數(shù)。 #includestdio.h #incl

24、udestdio.h#includemath.h#includemath.hvoid main()void main()int i,m,n;int i,m,n; printf(Enter a number:); printf(Enter a number:); scanf(%d,&m); scanf(%d,&m); n=(int)sqrt(m); n=(int)sqrt(m); for(i=2;i=n;i+) for(i=2;in) printf(%d is a prime number!n,m);if(in) printf(%d is a prime number!n,m);

25、else printf(%d is not a prime number!n,m);else printf(%d is not a prime number!n,m); 25continue語句語句 語句方式為:語句方式為:continue;continue;for(for(表達(dá)式表達(dá)式1;1;表達(dá)表達(dá)式式2;2;表達(dá)式表達(dá)式3)3) part1; part1; if( if(終了表達(dá)式終了表達(dá)式) ) continue;continue; part2; part2; 后續(xù)語句;后續(xù)語句;while(while(表達(dá)式表達(dá)式) ) part1; part1; if( if(終了表達(dá)式終了表達(dá)式

26、) continue;) continue; part2; part2; 后續(xù)語句;后續(xù)語句;dodo part1; part1; if( if(終了表達(dá)式終了表達(dá)式) continue;) continue; part2; part2; while( while(表達(dá)式表達(dá)式););后續(xù)語句后續(xù)語句; ;part1part1非非0(0(真真) )后續(xù)語句后續(xù)語句part2part2終了表達(dá)式?終了表達(dá)式?0(0(假假) )whilewhile非非0(0(真真) )表達(dá)式?表達(dá)式?0(0(假假) )26算法解析算法解析 【例【例4.114.11】計算】計算1-1/2+1/3-1/4+.+1/9

27、9-1/1001-1/2+1/3-1/4+.+1/99-1/100的前的前n n項的值,項的值,n n從鍵盤輸入,從鍵盤輸入,n n大于大于1 1,小于,小于100100。 int n,i,flag=1; int n,i,flag=1; double sum=0.0; double sum=0.0; printf(nn=); printf(nn=); while(1) while(1) scanf(%d,&n); scanf(%d,&n); if(n1&n1&n100) break; else printf( else printf(“data error!in

28、put again!ndata error!input again!n);); for(i=1;i=n;i+) for(i=1;i=a & c=a & c=A & c=A & c=0 & c=0 & c=9) number+; else if(c= ) space+; else if(c= ) space+; else other+; else other+; 28算法解析算法解析 【例【例4.154.15】百錢百雞問題。中國古代數(shù)學(xué)家張丘建在他的】百錢百雞問題。中國古代數(shù)學(xué)家張丘建在他的 中提出了出名的中提出了出名的“百錢買百雞問題:雞翁一,值

29、錢五,雞母一,百錢買百雞問題:雞翁一,值錢五,雞母一,值錢三,雞雛三,值錢一,百錢買百雞,問翁、母、雛各幾何?值錢三,雞雛三,值錢一,百錢買百雞,問翁、母、雛各幾何? int x,y,z,j=0; int x,y,z,j=0; printf(Following are possible plans :n); printf(Following are possible plans :n); for(x=0;x=20;x+) for(x=0;x=20;x+) for(y=0;y=33;y+) for(y=0;y=33;y+) z=100-x-y; z=100-x-y; if(z%3=0&5 if(z%3=0&5* *x+3x+3* *y+z/3=100)y+z/3=100) printf(%2d:cock=%2d hen=%2d chicken=%2dn,+j,x,y,z); printf(%2d:cock=%2d hen=%2d chicken=%2dn,+j,x,y,z); 29算法解析算法解析 【例【例4.164.16】猜數(shù)游戲。】猜數(shù)游戲。運用隨機數(shù)函數(shù)需求包含頭文件運用隨機數(shù)函數(shù)需求包含頭文件stdlib.hstdlib.h。 函數(shù)函數(shù)rand()rand()是隨機數(shù)生成器,可以設(shè)定生成數(shù)的范圍,如生成是

溫馨提示

  • 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)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論