第4章 C程序流程設(shè)計(jì)
《第4章 C程序流程設(shè)計(jì)》由會(huì)員分享,可在線閱讀,更多相關(guān)《第4章 C程序流程設(shè)計(jì)(59頁珍藏版)》請(qǐng)?jiān)谘b配圖網(wǎng)上搜索。
1、單擊此處編輯母版標(biāo)題樣式,,單擊此處編輯母版文本樣式,,第二級(jí),,第三級(jí),,第四級(jí),,第五級(jí),,單擊此處編輯母版標(biāo)題樣式,,單擊此處編輯母版文本樣式,,第二級(jí),,第三級(jí),,第四級(jí),,第,4,章,C,程序設(shè)計(jì)結(jié)構(gòu),§,4.1,什么是算法,,§,4.2,順序結(jié)構(gòu)程序設(shè)計(jì),,§,4.3,選擇結(jié)構(gòu)程序設(shè)計(jì),,§,4.4,循環(huán)結(jié)構(gòu)程序設(shè)計(jì),,§,4.5,轉(zhuǎn)向語句,怎樣學(xué)習(xí),C,語言,?,1.,工欲善其事,必先利其器,,,An artisan must first sharpen his tools if he is to do his work well.,2.,讀程序和寫程序,3.,掌握數(shù)據(jù)結(jié)構(gòu)和算法
2、,4.1.1,算法的基本概念,著名計(jì)算機(jī)科學(xué)家,Nicklaus?Wirth,提出,,程序,=,數(shù)據(jù)結(jié)構(gòu),+,算法,,數(shù)據(jù)結(jié)構(gòu):描述問題處理的,對(duì)象,及,對(duì)象間的關(guān)系,,算法,(,Algorithm,),:描述解決問題的,操作步驟,【,例,】,求兩個(gè)正整數(shù)的最大公約數(shù)。,,數(shù)據(jù)結(jié)構(gòu),:,兩個(gè)正整數(shù),m,和,n,,算法描述:,自然語言,,,流程圖,,,偽代碼,,,N-S,流程圖,經(jīng)典算法:,輾轉(zhuǎn)相除法,,對(duì)于給定的兩個(gè)數(shù),用較大的數(shù)除以較小的數(shù)。若余數(shù)不為零,則將余數(shù)和較小的數(shù)構(gòu)成新的一對(duì),繼續(xù)上面的除法,直到余數(shù)為零;此時(shí),較小的數(shù)就是原來兩個(gè)數(shù)的最大公約數(shù)。,4.1.1,算法的基本概念,【,
3、例,】,求兩個(gè)正整數(shù)的最大公約數(shù),,(1),求,16,和,12,的最大公約數(shù),,(2),求,544,和,119,的最大公約數(shù),經(jīng)典算法:,輾轉(zhuǎn)相除法,,對(duì)于給定的兩個(gè)數(shù),用較大的數(shù)除以較小的數(shù)。若余數(shù)不為零,則將余數(shù)和較小的數(shù)構(gòu)成新的一對(duì),繼續(xù)上面的除法,直到余數(shù)為零;此時(shí),較小的數(shù)就是原來兩個(gè)數(shù)的最大公約數(shù)。,4.1.1,算法的基本概念,輸入兩個(gè)正整數(shù),m,和,n,m,除以,n,,余數(shù)記為,r,若,m 4、,輾轉(zhuǎn)相除算法:給定兩個(gè)正整數(shù),m,和,n,,求它們的最大公因數(shù),,步驟,?:輸入兩個(gè)正整數(shù),m,和,n,,步驟?:若,m 5、,】,輾轉(zhuǎn)相除算法,,步驟,?:輸入兩個(gè)正整數(shù),m,和,n,,步驟?:若,m 6、不悟,民工,窮死,!,有效果,略有所成,,(1/100),堅(jiān)持,是,否,有,無,無,成功,失敗,回頭,程序人生,4.1,.,3,結(jié)構(gòu)化程序設(shè)計(jì)簡(jiǎn),述,三種基本結(jié)構(gòu),,,,,,,,只使用這三種結(jié)構(gòu)的程序,稱作,結(jié)構(gòu)化程序,順序,(Sequence),結(jié)構(gòu),,選擇,(Selection),結(jié)構(gòu),,,循環(huán),(Loop),結(jié)構(gòu),轉(zhuǎn)向語句:,break,語句,,,goto,語句,,,continue,語句,,,return,語句,if,語句,,switch…case,語句,for,語句,,while,語句,,do…while,語句,4.2,順序結(jié)構(gòu)程序設(shè)計(jì),【,例,】,編寫程序,LAB1_1.c,,計(jì)算 7、定期存款本利之和,,設(shè)銀行定期存款的年利率,rate,為,2.25%,,并已知存款期為,year,年,存款本金為,capital,元,試編程計(jì)算,year,年后的本利之和,deposit,。,,【,要求,】,定期存款的年利率,rate,、存款期,year,和存款本金,capital,均由鍵盤輸入。,4.3.1 if,語句,if,語句的三種形式,,形式一,,,,,形式二,if,(,表達(dá)式,),,,語句,1;,if,(,表達(dá)式,),,,語句,1;,,else,,,語句,2;,表達(dá)式,語句,1,真,假,語句,2,,表達(dá)式,后續(xù)語句,語句,1,真,假,后續(xù)語句,4.3.1 if,語句,【,例,】,判斷 8、某學(xué)生成績(jī)是否及格,.,及格輸出,"Pass",,否則輸出,"Fail".,,#include<,stdio.h,>,,main(),,{,int,score;,,,printf("Input,score:");,,,scanf("%d",&score,);,,,(,score>=60,),?,printf(,",Pass\n,",),:,printf(,",Fail\n,",),;,,,},注意:,,?,{},的使用,,?,分號(hào),的位置,if (score>=60),,,printf(,",Pass\n,",),;,,else,,,printf(,",Fail\n,",),;,if,語句,e 9、lse,語句,4.3.1 if,語句,【,例,】,判斷某學(xué)生成績(jī)是否及格,.,及格輸出,"Pass",,否則輸出,"Fail".,,思考,1,:用,if,語句的第一種形式實(shí)現(xiàn),,,#include<,stdio.h,>,,main(),,{,int,score;,,,printf("Input,score:");,,,scanf("%d",&score,);,,,,},if(score>=60),printf("Pass\n,");,,if(score<60),printf("Fail\n,");,4.3.1 if,語句,【,例,】,判斷某學(xué)生成績(jī)是否及格,.,及格輸出,"Pass",,否則輸 10、出,"Fail".,,思考,2,:,score=72,時(shí),下列代碼的執(zhí)行情況和輸出結(jié)果,,,#include<,stdio.h,>,,main(),,{,int,score;,,,printf("Input,score:");,,,scanf("%d",&score,);,,if(score>=60),;,,printf("Pass\n,");,,if(score<60),;,,printf("Fail\n,");,,},空語句:什么也不做,72,?,,Pass,,,_,Fail,,_,……,,if,,(,表達(dá)式,1,),,,語句塊,1,;,,else,,if,,(,表達(dá)式,2,),,,語句塊 11、,2,;,,else,,.,,.,,.,,if,,(,表達(dá)式,n,),,,語句塊,n,;,,else,,,語句塊,n+1,;,,……,4.3.1 if,語句,形式三,:,if-else,的嵌套結(jié)構(gòu),expr1,假,,語句塊,1,真,……,expr2,語句塊,2,真,expr,n,假,…,假,語句塊,n,真,假,語句塊,,n+1,……,4.3.1 if,語句,【,例,】,從鍵盤讀入一個(gè)字符,根據(jù)以下規(guī)則轉(zhuǎn)換該字,,符,并把轉(zhuǎn)換結(jié)果輸出到屏幕。,,轉(zhuǎn)換規(guī)則:,,? 輸入,大寫字母,? 輸出對(duì)應(yīng)的,小寫字母,,? 輸入小,寫字母,? 輸出對(duì)應(yīng)的,大寫字母,,? 輸入數(shù)字字符,? 原樣輸出,,? 輸入 12、其它字符,? 輸出,"Input invalid!",,4.3.1 if,語句,(1),定義一個(gè)字符型變量,ch,,(2),給,ch,賦值,,(3),判斷,ch,所屬類型,進(jìn)行相應(yīng)轉(zhuǎn)換并輸出,,,ch,是大寫字母的條件,:,(,ch,>=',A',),&&,(,ch,<='Z',),,,?,ch,=,ch+32,,,ch,是小寫字母的條件,:,(,ch,>=',a',),&&,(,ch,<='z',),,,?,ch,=ch-32,,,ch,是數(shù)字字符的條件,:,(,ch,>='0',),&&,(,ch<='9',),,,?,輸出,ch,,,ch,是其他字符,:,不滿足以上三個(gè)條件,,,?,輸出 13、無效提示信息,等價(jià)于,,(,ch,>=65)&&(ch<=90),【,算法描述,】,,,,,,,,,4.3.1 if,語句,【,程序,1】,使用,if,語句的第一種形式,,#include<,stdio.h,>,,main(),,{,,char,ch,;,,,scanf("%c",,&,ch,);,,,if,(ch,>='A' &&,ch,<='Z') printf("%c",ch+32);,,,if,(ch,>='a' &&,ch,<='z') printf("%c",ch-32);,,,if,(ch,>='0' &&,ch,<='9'),printf("%c",ch,);,,if,(, 14、(,!,(,ch,>='A' &&,ch,<='Z'),),,,&&,(,!,(,ch,>='a' &&,ch,<='z'),),,,&&,(,!,(,ch,>='0' &&,ch,<='9'),),),,,printf("Input,invalid!");,,},?,?,,?,?,,?,?,,?,,,,,?,輸入 語句執(zhí)行情況 輸出,,,!,?,,5,?,,a?,,A?,1,3,5,7,,8,Input invalid!,1,3,5,,6,,7,5,1,3,,4,,5,7,A,1,,2,,3,5,7,a,4.3.1 if,語句,【,程序,2】,使用,if-else,嵌套語句,,# 15、include<,stdio.h,>,,main(),,{,,char,ch,;,,,scanf("%c",&ch,);,,,if,(ch,>='A' &&,ch,<='Z'),,,,printf("%c",ch+32);,,else,if,(ch,>='a' &&,ch,<='z'),,,printf("%c",ch-32);,,,,else,,if,(ch,>='0' &&,ch,<='9'),,,,printf("%c",ch,);,,,,else,,printf("Input,invalid!");,,},?,,?,,?,,?,,?,,?,,?,輸入 語句執(zhí)行情況 輸出,, 16、,!,?,,5,?,,a?,,A?,1,3,5,,7,Input invalid!,1,3,5,,6,5,,1,3,,4,A,1,,2,a,4.3.1 if,語句,else,部分,可以,沒有,,,,,else,不能,單獨(dú)使用,【,例,】,if(score>=60),;,,,printf("Pass\n,");,,else,,,printf("Fail\n,");,【,例,】,if,,(x>0),,if,,(y>0),,printf("Point,,is,,in,,I.");,,else,,printf("Point,,is,,in,,IV.");,/*Error!*/,4.3.1 if,語句, 17、【,例,】,下列程序是否能通過編譯和鏈接?若不能,錯(cuò)誤出現(xiàn)在哪里?若能通過,程序的功能是什么?,main(),,{,int,a,b,c,result;,,,scanf("%d%d%d",&a,&b,&c,);,,,if,(a>b),,,if,(a>c) result=a;,,,else,result=c;,,,else,,,if,(b>c) result=b;,,,else,result=c;,,},if,和,else,的配對(duì)原則:,else,總是和位于其,上方,且離它,最近,的,未配對(duì),的,if,配對(duì),,,,4.3.1 if,語句,【,例,】,下列程序是否能通過編譯和鏈接?若不能,錯(cuò)誤出現(xiàn)在 18、哪里?若能通過,程序的功能是什么?,main(),,{,,,int,a,b,c,result;,,,scanf("%d%d%d",&a,&b,&c,);,,,if,(a>b),,,if,(a>c) result=a;,,,else,result=c;,,,else,,,if,(b>c) result=b;,,,else,result=c;,,},,,,4.3.1 if,語句,【,例,】,根據(jù)輸入的百分制成績(jī),轉(zhuǎn)換成相應(yīng)的五分制成績(jī),并打印輸出。,,轉(zhuǎn)換標(biāo)準(zhǔn)為:,90≤,分?jǐn)?shù),≤,100,? A,,80≤,分?jǐn)?shù)<,90,? B,,70≤,分?jǐn)?shù)<,80,? C,,60≤,分?jǐn)?shù)<,70,? D,,, 19、分?jǐn)?shù)<,60,? E,,要求分別用,if,控制語句和,if-else,嵌套控制語句實(shí)現(xiàn)。,,4.3.1 if,語句,【Demo4_7.c】,使用,if,語句的第一種形式,,#include<,stdio.h,>,,main(),,{,int,score;,,,scanf("%d",,&,score,);,,,,if,(,score,>=90,,&&,,score<=,100,),,printf("A\n,");,,,,if,(score,>=80,&&,,score,<90,),printf("B\n,");,,,,if,(score,>=70,&&,,score,<80,),printf(" 20、C\n,");,,,,if,(score,>=60,&&,,score,<70,),printf("D\n,");,,,,if,(score,<60,),,printf("E\n,");,,},,4.3.1 if,語句,【,程序,2】,使用,if-else,嵌套形式,,#include<,stdio.h,>,,main(),,{,int,score;,scanf("%d",&score,);,,,if,(score,>=90,),,,printf("A\n,");,,,else,,if,(score,>=80,),,,printf("B\n,");,,,else,,if,(score,>=70 21、,),,,printf("C\n,");,,,else,,if,(score,>=60,),,,printf("D\n,");,,,else,,printf("E\n,");,,},4.3.2,多路選擇,switch,語句,基本形式,,switch,(,,表達(dá)式,,),,{,,,case,,常量表達(dá)式,1,:,語句,1,;,,,……,,,case,,常量表達(dá)式,i,:,語句,i,;,,,……,,,case,,常量表達(dá)式,n,:,語句,n,;,,,default,:,語句,n,+1,;,,},4.3.2,多路選擇,switch,語句,【,思考,1】,用,switch,語句改寫:根據(jù)分?jǐn)?shù)輸出對(duì)應(yīng)等 22、級(jí),int,score;,,scanf("%d",,&,score,);,,switch,(score),,{,,,case,(,score>=90 && score<=100,): …,,,case,(,score>=80 && score<90,): …,,,case,(,score>=70 && score<70,):,,,case,(,score>=60 && score<70,):,,,case,(,score<60,): …,,,default,: …,,},ERROR!!!,,case,后面要求是,常量,表達(dá)式,4.3.2,多路選擇,switch,語句,【,思考,2】,用,swi 23、tch,語句改寫:根據(jù)分?jǐn)?shù)輸出對(duì)應(yīng)等級(jí),int,score;,,scanf("%d",,&,score,);,,switch,(score),,{,,,case,,100,:printf("A\n");,,,case,,99,,:printf("A\n");,,,… …,,,case,,90,,:printf("A\n");,,… …,,,case,,60,,:printf("D\n");,,,default,:,printf("E\n,");,,},無法,或者,不能簡(jiǎn)單,列舉,出所有的可能情形,4.3.2,多路選擇,switch,語句,【,思考,3】,用,switch,語句改寫:根據(jù)分?jǐn)?shù)輸出 24、對(duì)應(yīng)等級(jí),int,score,,flag,;,,scanf("%d",,&,score,);,,flag,=score/10;,,switch,(,flag,),,{,,,case,,10,:,printf("A\n,");,,,case,,9,,:,printf("A\n,");,,,case,,8,,:,printf("B\n,");,,,case,,7,,:,printf("C\n,");,,,case,,6,,:,printf("D\n,");,,,default,:,printf("E\n,");,,},flag=0,1,2,……,9,10,4.3.2,多路選擇,switch,語句, 25、【,思考,4】,使用轉(zhuǎn)向控制語句,break;,int,score,,flag,;,,scanf("%d",,&,score,);,,flag,=score/10;,,switch,(,flag,),,{,,,case,10,:printf("A\n");,break;,,,case,9,,:,printf("A\n,");,break;,,,case,8,,:,printf("B\n,");,break;,,,case,7,,:,printf("C\n,");,break;,,,case,6,,:,printf("D\n,");,break;,,,default,:printf("E\n," 26、);,break;,,},強(qiáng)制退出,switch,語句,執(zhí)行其后續(xù)語句,該,break,語句可以沒有,case,后的復(fù)合語句可以不使用,{},4.3.2,多路選擇,switch,語句,e==e1,語句,1,e==e2,語句,2,e==e,n,語句,n,語句,n+1,真,表達(dá)式,e,…,…,真,真,假,假,假,假,后續(xù)語句,e==e1,語句,1,e==e2,語句,2,e==e,n,語句,n,語句,n+1,真,表達(dá)式,e,…,真,真,假,假,假,假,后續(xù)語句,…,4.3.2,多路選擇,switch,語句,【,思考,5】,用,switch,語句改寫:根據(jù)分?jǐn)?shù)輸出對(duì)應(yīng)等級(jí),int,score,,fla 27、g,;,,scanf("%d",,&,score,);,,flag,=score/10;,,switch,(,flag,),,{,,,case,10,:printf("A\n");,break;,,,case,9,,:,printf("A\n,");,break;,,,case,8,,:,printf("B\n,");,break;,,,case,7,,:,printf("C\n,");,break;,,,case,6,,:,printf("D\n,");,break;,,,default,:printf("E\n,");,break;,,},多個(gè),case,可共用一組執(zhí)行語句,4.3.2,多 28、路選擇,switch,語句,【,思考,6】,處理無效輸入,int,score,,flag,;,,scanf("%d",,&,score,);,,flag,=score/10;,,switch,(,flag,),,{,,,case,10,:,,,case,9,,:,printf("A\n,");,break;,,,case,8,,:,printf("B\n,");,break;,,,case,7,,:,printf("C\n,");,break;,,,case,6,,:,printf("D\n,");,break;,,,default,:printf("E\n,");,break;,,},如果讀 29、入的成績(jī)小于,0,或大于,100,,,輸出,?,,4.3.2,多路選擇,switch,語句,int,score,,flag,;,,scanf("%d",,&,score,);,,flag,=score/10;,,switch,(,flag,),,{,,,case,,10,:,,,case,,9,:,printf("A\n,"),;,,,break;,,,case,,8,:,printf("B\n,"),;,,,break;,,,case,,7,:,printf("C\n,"),;,,break;,,,case,,6,:,printf("D\n,"),;,,break;,case,,5,:,,c 30、ase,,4,:,,case,,3,:,,case,,2,:,,case,,1,:,,case,,0,:printf("E\n");,,break;,,default,:printf("Input,invalid!\n"),;,,,break;,,},int,score,,flag,;,,scanf("%d",,&,score,);,,if,(score>=0 && score<=100),,{,,,flag,=score/10;,,switch,(,flag,),,{,case,10,:,,,case,9,,:,printf("A\n,");,break;,,,case,8,,:,print 31、f("B\n,");,break;,,,case,7,,:,printf("C\n,");,break;,,,case,6,,:,printf("D\n,");,break;,,,default,:printf("E\n,");,,,},,},,else,printf("Input,invalid!\n");,4.3.2,多路選擇,switch,語句,4.3.2 switch,語句小結(jié),?,,表達(dá)式,和,常量表達(dá)式,的值必須都是,整型類,,?,,常量表達(dá)式的值必須,互不相同,,?,,default,語句如果有,只允許出現(xiàn),一次,;,可出現(xiàn)在,switch,中的,任何位置,,通常放在,最后,(, 32、各個(gè),case,和,default,的出現(xiàn)次序不會(huì)影響結(jié)果,),,?,,執(zhí)行完某個(gè),case,之后的語句,程序并不會(huì)跳出,switch,結(jié)構(gòu),而是順序執(zhí)行它下面,case,之后的其它語句。,中斷離開,switch,結(jié)構(gòu),要用,break,語句,選擇結(jié)構(gòu)編程練習(xí),【,練習(xí),】,簡(jiǎn)單的計(jì)算器程序,(Demo4_9.c),,要求用,switch,語句編程設(shè)計(jì)一個(gè)簡(jiǎn)單的計(jì)算器程序,,要求根據(jù)用戶從鍵盤輸入的表達(dá)式:,,操作數(shù),1,運(yùn)算符,操作數(shù),2,,,計(jì)算表達(dá)式的值,(,操作數(shù)和運(yùn)算符之間沒有空白符,,,如鍵盤輸入為:,3+5),,指定的算術(shù)運(yùn)算符為加,(+),、減,(-),、乘,(*),、除,(/ 33、),4.4,循環(huán)結(jié)構(gòu)程序設(shè)計(jì),在,Demo4_9.c,基礎(chǔ)上,增加如下要求:,,要求連續(xù)做多次算術(shù)運(yùn)算,每次運(yùn)算結(jié)束后,程序都給出提示:,,Do you want to,continue(Y,/N or,y/n,)?,,如果用戶輸入,Y,或,y,時(shí),程序繼續(xù)進(jìn)行其它算術(shù)運(yùn)算,否則程序才退出運(yùn)行狀態(tài)。那么,程序如何修改?,4.4.1 for,循環(huán)控制語句,for,(,表達(dá)式,1,;,表達(dá)式,2,;,表達(dá)式,3,),,{,,,語句塊,;,,},表達(dá)式,2,真,語句塊,表達(dá)式,3,表達(dá)式,1,假,,int,i,sum,=0,;,,for,( i=1; i<=100; i++ ),,{,,sum,=, 34、sum+,i,;,},,printf("1+2+3+…+100=%d\n",sum);,1+2+3+4+...+99+100,,sum=a+b ………………………………3,,sum=,sum,+,3,………………………………6,,sum=,sum,+,4,,………………………………10,,……,,sum=,sum,+,100,4.4.1 for,循環(huán)語句,(,累加求和,),【Demo4_11】,用,for,語句計(jì)算,1+2+3+...+99+100,sum=sum+i,,(,i,取值,1~100,),sum=0;,,sum=,sum,+,1,;,,sum=,sum,+,2,;,4.4. 35、1 for,循環(huán)語句,(,累乘求積,),【Demo4_12】,計(jì)算,1×3×5×……×19,的值,算法分析,,step1,:,定義整型變量,i,,,result,,step2,:,賦初值:,i=1,,,result=1,,step3,:,result,×,i,?,result,,step4,:,i+2,?,i,,,轉(zhuǎn)向,step3,,,直到,i=19,int,i,result,=,,;,,for,(,,;,,;,,),,{,,,},i=1,i<=19,i+=2,1,result=result*i;,4.4.1 for,循環(huán)語句,可以省略,for,語句的各,表達(dá)式,,但不能省略,分號(hào),間隔符,, 36、?,for,(,;,表達(dá)式,2,;,表達(dá)式,3),int,,i=1,,sum=0;,,for(,;,i<=100,;,i++),,sum+=i;,int,,i,,,sum,;,,for(,i=1,sum=0,;,,i<=100,;,,i++),,sum+=i;,int,i,sum=0;,,for( i=1; i<=100; i++ ),,sum=sum+i;,4.4.1 for,循環(huán)語句,?,for,(,表達(dá)式,1,;,,;,表達(dá)式,3,),int,i,sum=0;for(i=1,;;,i++),,{,,,,,},int,i,sum=0;,,for( i=1; i<=100; i++ ),, 37、sum=sum+i;,if,(i>100),break;,,else,sum+=i;,break,語句:退出當(dāng)前循環(huán),4.4.1 for,循環(huán)語句,?,for,(,表達(dá)式,1,;,,表達(dá)式,2,;,),int,,i,,,sum=0,;,,for,( i=1,;,i<=100,;,i++ ),,,sum+=i;,,int,,i,,,sum=0,;,,for,( i=1,;,i<=100,;,),,{,,,sum+=i;,,,i++;,,},4.4.1 for,循環(huán)語句,?,for,(,;,,;,),int,i,sum=0;,,for,( i=1; i<=100; i++),,sum+=i;,in 38、t,i,=1,,sum=0;,,for,(,;,,;,),,{,,,if,(i>100),break;,,,else,{ sum+=i;,,,i++;,,},,},4.4.2 while,和,do…while,循環(huán)控制語句,while,(,表達(dá)式,),,{,,,語句塊,;,,},后續(xù)語句,假,語句塊,表達(dá)式,真,do,,{,,,語句塊,;,,},,while,(,表達(dá)式,);,后續(xù)語句,假,語句塊,表達(dá)式,真,區(qū)別:,分號(hào),和,執(zhí)行情況,,4.4.3,小結(jié),三種循環(huán)語句的比較和使用,,?,循環(huán)次數(shù)已知,或,循環(huán)步長固定,,用,for,語句較好,,,【,例,】,計(jì)算,1+2+…+100,,【,例 39、,】,計(jì)算,1×3×5×…×19,,?,如果,循環(huán)次數(shù)未知,,用,while,語句較好,,,【,例,】,統(tǒng)計(jì)從鍵盤輸入一行字符的個(gè)數(shù),,?,如果,至少要執(zhí)行一次循環(huán)體,,用,do-while,語句較好,4.4.4,循環(huán)嵌套,【,例,】,編寫程序:輸出由“,*,”組成的三角形。三角形邊長,n,由,scanf,(),函數(shù)輸入。例,n=4,和,n=6,時(shí),程序運(yùn)行情況分別如下圖所示:,4.4.4,循環(huán)嵌套,在循環(huán)體語句中又包含另一個(gè)循環(huán)結(jié)構(gòu)的形式,稱為,循環(huán)嵌套,(雙重循環(huán),多重循環(huán)),,嵌套在循環(huán)體內(nèi)的循環(huán)體稱為,內(nèi)循環(huán),,外面的循環(huán)稱為,外循環(huán),,三種循環(huán)可以互相嵌套,for(,...,),,{ 40、,,……,,for(,...,),,{,...,,},,,……,,},內(nèi)循環(huán),,,外循環(huán),for(,...,),,{,,,......,,while(,...,),,{,...,,},,,......,,},內(nèi)循環(huán),,,外循環(huán),4.4.4,循環(huán)嵌套,,輸出空格 輸出* 輸出空格,,i=1 j=1,2,,3,4,5,,,6,,,7,,i=2 j=1,,2,3,4,5,6,,7,,i=3 j=,1,2,3,4,5,6,7,,i=4 j= 1,2,3,4,5,6,7,行方向:,每行輸出字符(,'*',和,' ',)個(gè)數(shù),=,2n-1,,列方向:,什么情況下輸 41、出空格?什么情況下輸出,'*',?,對(duì)第,i,行:當(dāng),1,<=j<=,n-i,或,n+i,<=j<=,2n-1,,,輸出,空格,,否則:輸出,*,4.4.4,循環(huán)嵌套,int,,i,,,j,,n;,,printf("n,=");,scanf("%d",&n,);,,/*,i,控制行的輸出,共輸出,n,行 *,/,,for,(i,=1; i<=n; i++),,{,,/* j,控制列的輸出:每行都要輸出(,2n-1,),個(gè)字符*,/,,,for,(j=1; j<=,(2*n-1),; j++),,,{,,,if,,(j<=(n-i),,||,,j>=(n+i)),,printf,(" ");,, 42、,else,,,printf,("*");,,,},,,printf("\n,");,,},,4.4.4,循環(huán)嵌套,行方向:,每行輸出字符(,'*',和,' ',)個(gè)數(shù),=,i+n-1,,,列方向:,什么情況下輸出空格?什么情況下輸出,'*',?,,輸出空格 輸出*,,i=1 j=1,2,,3,4,,i=2 j=1,,2,3,4,5,,i=3 j=,1,2,3,4,5,6,,i=4 j= 1,2,3,4,5,6,7,對(duì)第,i,行:當(dāng),1,<=j<=,n-i,,,輸出,空格,,否則:輸出,*,?,思考,2,:忽略字符*后面的空格,4.4.4,循環(huán)嵌套,int,i,j,n; 43、,,printf("n,=");,scanf("%d",&n,);,,/*,i,控制行的輸出,共輸出,n,行 *,/,,for,(i=1; i<=n; i++),,{,,,/* j,控制列的輸出:每行都要輸出(,i+n-1,),個(gè)字符*,/,,,for,(j=1; j<=,(2*n-1),; j++),,,{,,,if,( j<=(n-i),||,j>=(n+i) ),,printf,(" ");,,,else,,,printf,("*");,,,},,,printf("\n,");,,},j<=(n-i),(i+n-1),,4.5,轉(zhuǎn)向語句,break,語句,,用在,switch,選擇語句, 44、中,,用在,循環(huán)語句,中:,退出本層循環(huán),,continue,語句,,只能用在,循環(huán)語句,:,結(jié)束本次循環(huán),提前準(zhǔn)備進(jìn)入下一次循環(huán),break,和,continue,在循環(huán)中的作用,【,例,】,執(zhí)行語句后,,x,的值是,,int,,x,y,;,,for (y=1,x=1; y<=6; y++),,{,,if (x>=10),,break; ──,?,,if (x%2==1),,{,,x,+=,5; ──,?,,,continue; ──,?,,,},,x-=3; ──,?,,},y=1:,?,x,=6,,? continue;,,y=2:,?,x,=3,,y=3:,?,x,=8,,? 45、 continue;,,y=4:,?,x,=5,,y=5:,?,x,=10,,? continue;,,y=6:,?break,;,常用數(shù)據(jù)結(jié)構(gòu),樹,4.4.2 while,循環(huán)控制語句,【,例,】,用,while,語句計(jì)算,1+2+3+...+99+100,int,,i,=1,,,sum=0,;,,while,(,,i<=100,,),,{,,,sum+=i;,,,i=i+1;,,},,printf("1+2+3+…+100=%d\n",sum);,,,,4.4.3 do…while,循環(huán)控制語句,【,例,】,用,do-while,語句計(jì)算,1+2+3+...+99+100,int,,i,=1,,,sum=0,;,,do,,{,,,sum+=i;,,,i=i+1;,,},while,(,i<=100,),;,,printf("1+2+3+…+100=%d\n",sum);,
- 溫馨提示:
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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 市教育局冬季運(yùn)動(dòng)會(huì)安全工作預(yù)案
- 2024年秋季《思想道德與法治》大作業(yè)及答案3套試卷
- 2024年教師年度考核表個(gè)人工作總結(jié)(可編輯)
- 2024年xx村兩委涉案資金退還保證書
- 2024年憲法宣傳周活動(dòng)總結(jié)+在機(jī)關(guān)“弘揚(yáng)憲法精神推動(dòng)發(fā)改工作高質(zhì)量發(fā)展”專題宣講報(bào)告會(huì)上的講話
- 2024年XX村合作社年報(bào)總結(jié)
- 2024-2025年秋季第一學(xué)期初中歷史上冊(cè)教研組工作總結(jié)
- 2024年小學(xué)高級(jí)教師年終工作總結(jié)匯報(bào)
- 2024-2025年秋季第一學(xué)期初中物理上冊(cè)教研組工作總結(jié)
- 2024年xx鎮(zhèn)交通年度總結(jié)
- 2024-2025年秋季第一學(xué)期小學(xué)語文教師工作總結(jié)
- 2024年XX村陳規(guī)陋習(xí)整治報(bào)告
- 2025年學(xué)校元旦迎新盛典活動(dòng)策劃方案
- 2024年學(xué)校周邊安全隱患自查報(bào)告
- 2024年XX鎮(zhèn)農(nóng)村規(guī)劃管控述職報(bào)告