循環(huán)體程序設(shè)計課件_第1頁
循環(huán)體程序設(shè)計課件_第2頁
循環(huán)體程序設(shè)計課件_第3頁
循環(huán)體程序設(shè)計課件_第4頁
循環(huán)體程序設(shè)計課件_第5頁
已閱讀5頁,還剩97頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

第六章循環(huán)結(jié)構(gòu)程序設(shè)計膿漚杏玉墓壟末憫貌杰酒忠挪變驅(qū)純勤饅規(guī)申償謅笆猾動包顏鈔場污陌灰第六章循環(huán)體程序設(shè)計第六章循環(huán)體程序設(shè)計第六章循環(huán)結(jié)構(gòu)程序設(shè)計膿漚杏玉墓壟末憫貌杰酒忠挪變驅(qū)純勤饅§6循環(huán)語句提出問題?提問:打印10行“****************”,怎么編程?回答:寫10個printf(“****************”);語句。提問:打印500行,怎么編程?回答:這個,嗯……???不會讓我寫500個......注意:讓我們換一個角度來看待這些問題,以上問題實(shí)質(zhì)是:將printf函數(shù)重復(fù)執(zhí)行N遍。printf(“****************”);懂栗燒舒旁啪輛弄憎迫賺盲啪訊注圾紊鳥澳侖霉良辮穗眠特閏牛逝究蛻我第六章循環(huán)體程序設(shè)計第六章循環(huán)體程序設(shè)計2§6循環(huán)語句提出問題?提問:打印10行“*********§6循環(huán)語句循環(huán)反復(fù)執(zhí)行同一段程序,直到滿足一定的條件后才停止執(zhí)行該段程序。C語言中控制循環(huán)的語句:

whiledo-whilefor嘿脾羞逞曼珍壇伴去慰會僅油港愛姚閩吧膏組拼弟診妓控銻聳關(guān)狠道綠鎂第六章循環(huán)體程序設(shè)計第六章循環(huán)體程序設(shè)計3§6循環(huán)語句循環(huán)嘿脾羞逞曼珍壇伴去慰會僅油港愛姚閩吧膏組拼§6-1while語句while語句格式while(表達(dá)式)語句;

說明:語句部分可以是簡單語句,也可 以是復(fù)合語句。while語句的執(zhí)行流程表達(dá)式?執(zhí)行語句成立不成立執(zhí)行while循環(huán)之后的語句循環(huán)控制條件循環(huán)體打鴿紛迄鏟桐陪芝電股啦喀巳墩跑精填膿紉弘瓣孺水閉拴楓撫遇冒磋愧郎第六章循環(huán)體程序設(shè)計第六章循環(huán)體程序設(shè)計4§6-1while語句while語句格式表達(dá)式?執(zhí)行語句成§6-1while語句-實(shí)例例:從鍵盤輸入10個整數(shù),求這10個整數(shù)的和。 #include<stdio.h>main(){intcount,num,total;

/*count:計數(shù)器,num:輸入的整數(shù)*/count=0;total=0;/*total:存放累加和*/while(count<10)/*循環(huán)控制條件*/{count++;/*循環(huán)體*/printf("EntertheNo.%d=",count);scanf("%d",&num);total+=num;/*計算累加和*/

}printf("Total=%d\n",total);}擒夸孵鱗盟壘擒居摳郵凜暫遮撬佬俊頸鄲衛(wèi)筷手歌煞今獻(xiàn)款蝶柞頑沃箭庚第六章循環(huán)體程序設(shè)計第六章循環(huán)體程序設(shè)計5§6-1while語句-實(shí)例例:從鍵盤輸入10個整數(shù),求§6-1while語句-實(shí)例例:分析程序的運(yùn)行結(jié)果 #include<stdio.h>main(){ intn=0; while(n<3) printf(”nis%d\n”,n); n++; printf(”That\’sallthisprogramdoes.\n”);}結(jié)果:程序?qū)⒉煌5拇蛴 皀is0”,直至終止程序無法正常終止的程序,稱為“死循環(huán)”。結(jié)論:在while語句循環(huán)體中,一定要有能夠?qū)ρh(huán)控制條件產(chǎn)生影響的語句。避免出現(xiàn)“死循環(huán)”現(xiàn)象。{}睬呵媒膝釜象廉走諱暑湊尤煩艦祈鑼痙朔主鞠欣齲東淖圍毀腳已篷辜珠們第六章循環(huán)體程序設(shè)計第六章循環(huán)體程序設(shè)計6§6-1while語句-實(shí)例例:分析程序的運(yùn)行結(jié)果{}睬呵§6-1while語句-實(shí)例例1:分析下列程序段 index=1; while(index<5) printf(”Goodmorning!\n”);分析:程序段將無限制打印字符串。因?yàn)檠h(huán)中沒有任何語句可以改變循環(huán)控制變量index的初值1例2:分析下列程序段

index=1; while(--index<5) printf(”Goodmorning!\n”);分析:仍有問題,程序改變了index的值,但方向錯了。 在index達(dá)到系統(tǒng)能夠處理的最大負(fù)數(shù)時,將會產(chǎn)生下溢而終止程序。結(jié)論:循環(huán)體中必須有能夠使循環(huán)正常停止的條件。色某絡(luò)吐警瓣逐恭綏合鳥燼堪太帥扭頁喀瓤逮進(jìn)貢晶漆券鵲凝與嫌屑曹始第六章循環(huán)體程序設(shè)計第六章循環(huán)體程序設(shè)計7§6-1while語句-實(shí)例例1:分析下列程序段色某絡(luò)吐警§6-1while語句-實(shí)例【例6.1】求 main(){inti,sum=0;i=1;while(i<=100){sum=sum+i;i=i+1;}printf(“%d”,sum);}繩砧虜侶曬敦勸冉娶糜戮尿鉀戶念這葫琶惦谷斯歉屑汾孕衰淡芽婁麥鄖秧第六章循環(huán)體程序設(shè)計第六章循環(huán)體程序設(shè)計8§6-1while語句-實(shí)例【例6.1】求 main()繩§6-1while語句-實(shí)例【例6.2】求前n個數(shù)的平方的和:根據(jù)上例寫出程序如下:main(){inti=1,sum=0,n;scanf(“%d”,&n);while(i<=n){ sum=sum+i*i; i++; }printf(“i=%d,n=%d,sum=%d\n”,i,n,sum);}紀(jì)竭雀俄熄頁禿并肋丁吊片吹螢攪幕籬樟盅綜襟害晦淺笆酶吼嗜源破晶率第六章循環(huán)體程序設(shè)計第六章循環(huán)體程序設(shè)計9§6-1while語句-實(shí)例【例6.2】求前n個數(shù)的平方的§6-1while語句-實(shí)例該例也可以寫成如下:

main(){inti=1,sum=0,n;scanf(“%d”,&n);while(n){ sum=sum+n*n; n--; }printf(“i=%d,n=%d,sum=%d\n”,i,n,sum);}窘勺役巷稅蛀垃棄彌墳漚斥羔淑壞遞失瘍啞廬貓櫻下夏脅突堡莽給頸證磐第六章循環(huán)體程序設(shè)計第六章循環(huán)體程序設(shè)計10§6-1while語句-實(shí)例該例也可以寫成如下:ma§6-1while語句-實(shí)例【例6.3】將輸入的字符原樣輸出,以“#”號結(jié)束。#include<stdio.h>main(){charc;c=getchar();while(c!=‘#’){putchar(c);c=getchar();}}熬渙衡川償程困則蛹齋埋擒頃甚奔匪湃疤彩船策貳眨虱跋晦瓷氨踢蝸貝膘第六章循環(huán)體程序設(shè)計第六章循環(huán)體程序設(shè)計11§6-1while語句-實(shí)例【例6.3】將輸入的字符原樣輸§6-1while語句-實(shí)例上述程序也可以寫為:#include“stdio.h”main(){charc;while((c=getchar())!=‘#’)putchar(c);}逸正菜刑奉表守嗽囪佑壩驚李團(tuán)授柴擾到脆艙隧祿坎默椎疽枷峽活品倘獻(xiàn)第六章循環(huán)體程序設(shè)計第六章循環(huán)體程序設(shè)計12§6-1while語句-實(shí)例上述程序也可以寫為:#incl§6-1while語句-實(shí)例【例6.4】統(tǒng)計從鍵盤輸入的以’\n’結(jié)束的字符中英文字母的個數(shù)。#include<stdio.h>main(){intn=0; charc;while((c=getchar())!='\n'){ if(c>=‘a(chǎn)’&&c<=‘z’||c>=‘A’&&c<=‘Z’) n++; }printf("%d\n",n);}Ab2!*AB4偽泛僚潦驢頁波潭價朗褂努窮盎搭液綁諾胺素哮楚韶溝純淵桌醬騷僳堪架第六章循環(huán)體程序設(shè)計第六章循環(huán)體程序設(shè)計13§6-1while語句-實(shí)例【例6.4】統(tǒng)計從鍵盤輸入的以§6-1while語句-實(shí)例while使用注意1.while(0){....}由于循環(huán)的條件表達(dá)式恒等于0,循環(huán)體永遠(yuǎn)也不會執(zhí)行。2.while(1){....}由于循環(huán)的條件表達(dá)式恒等于1,所以不可能通過循環(huán)控制條件來結(jié)束循環(huán)體的執(zhí)行,稱為“死循環(huán)”。3.為了保證循環(huán)正常運(yùn)行,應(yīng)該特別注意:循環(huán)控制條件控制條件的初始狀態(tài)(初始值)循環(huán)體內(nèi)部對控制條件的影響浦消姐攙訟屎尚閹攝初夜敝囪羚重薊李勉臆壹摳畦菲吻粳無子平糯翌喚淵第六章循環(huán)體程序設(shè)計第六章循環(huán)體程序設(shè)計14§6-1while語句-實(shí)例while使用注意浦消姐攙訟屎§6-2do-while語句do-while語句格式

do

語句

while(

表達(dá)式);do-while語句的執(zhí)行流程表達(dá)式?執(zhí)行語句成立不成立執(zhí)行while子句之后的語句循環(huán)控制條件循環(huán)體倫煩莆龔疹式略芒請峨雨亨啪蛆僻港仁摩捆受達(dá)當(dāng)摔桐沁必耙歪夾史蛹捏第六章循環(huán)體程序設(shè)計第六章循環(huán)體程序設(shè)計15§6-2do-while語句do-while語句格式表達(dá)式§6-2do-while語句do-while語句特點(diǎn) do-while與while的最大區(qū)別: do-while語句先執(zhí)行循環(huán)體然后再判斷循環(huán)控制條件,而while卻是先判斷條件之后再執(zhí)行循環(huán)體。 使用do-while構(gòu)成的循環(huán),循環(huán)體至少要執(zhí)行一次;而采用while構(gòu)成的循環(huán),循環(huán)體有可能一次也不會執(zhí)行。趣刷叭且匆甩瑟淄葡覺壁醛田亡可晚脊呸藉舶慚巒燕貝虐是哲癬蕾疾梳碘第六章循環(huán)體程序設(shè)計第六章循環(huán)體程序設(shè)計16§6-2do-while語句do-while語句特點(diǎn)趣刷叭§6-2do-while語句-實(shí)例【例6.6】用do-while語句求main(){inti,sum=0;i=1;do{sum=sum+i;i++;}while(i<=100);printf(“%d”,sum);}象湍憑碉萊蜒淡氦嫌慷慰俞烙圭吏媚塊塌者蝕幫租俠壹膠凱減仗唉癥稱酪第六章循環(huán)體程序設(shè)計第六章循環(huán)體程序設(shè)計17§6-2do-while語句-實(shí)例【例6.6】用do-wh/*ex4-11-1.c*/#include<stdio.h>main(){inti,sum=0;scanf("%d",&i);do{sum+=i;i++;}while(i<=10);printf(“sum=%d",sum);}/*ex4-11-2.c*/#include<stdio.h>main(){inti,sum=0;scanf("%d",&i);while(i<=10){sum+=i;i++;}printf(“sum=%d",sum);}1sum=551sum=5511sum=1111sum=0§6-2while和dowhile比較燙得兩超影各江瑩戍蠟昧蠶訓(xùn)陣謄帝撈崩趕絢坊寒刷凋遏井贅甭寇哦鏡婪第六章循環(huán)體程序設(shè)計第六章循環(huán)體程序設(shè)計18/*ex4-11-1.c*//*ex4-11-2.c*/1§6-2do-while語句-實(shí)例【例6.8】輸入一個整數(shù),計算它的位數(shù).并反向輸出.main(){longnum;intcount=0;printf(“輸入一個整數(shù):”);scanf(“%ld”,&num);do{printf(“%d”,num%10);num=num/10;count++;}while(num);printf(“該整數(shù)是%d位數(shù).”,count);}必捏叢野疵值櫥蓄敞添積莎類兆眾他堯暢母烏輩臂活和秀禱泌枝至律然趕第六章循環(huán)體程序設(shè)計第六章循環(huán)體程序設(shè)計19§6-2do-while語句-實(shí)例【例6.8】輸入一個整數(shù)§6-3for語句for語句格式for(表達(dá)式1;表達(dá)式2;表達(dá)式3)語句;for語句的執(zhí)行流程循環(huán)初始條件循環(huán)控制條件表達(dá)式2?執(zhí)行語句成立不成立執(zhí)行for循環(huán)之后的語句執(zhí)行表達(dá)式3執(zhí)行表達(dá)式1循環(huán)體for語句等價于下列語句:表達(dá)式1;while(表達(dá)式2){

語句;

表達(dá)式3;}紡翌礙掐央暮撕褲??镄摞|翰哆悉皚飾旗批糠抨脅布群挾掣詐河常騎囑疙第六章循環(huán)體程序設(shè)計第六章循環(huán)體程序設(shè)計20§6-3for語句for語句格式循環(huán)初始條件循環(huán)控制條件表§6-3for語句-實(shí)例例:求一個數(shù)的階乘。#include<stdio.h> main() {longintjc=1; inti,n; scanf(“%d”,&n);

for

(

i=1;i<=n;i++

)

jc=jc*i; printf("%d!=%ld\n",n,jc);

}for語句最常用的形式for(初值;控制條件;增量)語句;33!=6鮮卻套峨僧護(hù)熏消啟衍驟蹲福托空很訖磊似品只汝隙他官駭滄堯虎縱疫括第六章循環(huán)體程序設(shè)計第六章循環(huán)體程序設(shè)計21§6-3for語句-實(shí)例例:求一個數(shù)的階乘。for語句最?!?-3for語句for語句的變化形式 for語句中的三個表達(dá)式中的任意一個都是可以省略的,但是分號不能省略。1.省略表達(dá)式2,則:for(表達(dá)式1;;表達(dá)式3)就形成了一個死循環(huán)。2.省略表達(dá)式1和表達(dá)式3,則:for(;表達(dá)式2;)就等同于:while(表達(dá)式)

據(jù)此結(jié)論:所有用while語句實(shí)現(xiàn)的循環(huán)都可以用for語句實(shí)現(xiàn)。3.表達(dá)式1、2、3全省略,則:for

(;;)就等同于:while

(1)肄埋貪話稼蔬得淆介洪懷掐蹬竭吏拷矣原物龔姜退猿喻埂僵儡線懲屠掩問第六章循環(huán)體程序設(shè)計第六章循環(huán)體程序設(shè)計22§6-3for語句for語句的變化形式肄埋貪話稼蔬得淆介洪§6-3for語句-實(shí)例【例6.9】輸入20個0~9的數(shù)字字符,計算有多少奇數(shù),偶數(shù)和零。

#defineM20main(){inti,k,n1=0,n2=0,n3=0;charch;printf(“輸入數(shù)字字符20個:\n”);for(k=1;k<=M;k++){scanf(“%c”,&ch);i=ch-’0’;if(i==0)n3++;/*零*/elseif(i%2==0)n1++;/*偶數(shù)*/elsen2++;/*奇數(shù)*/}printf(“有%2d個偶數(shù),%2d個奇數(shù),%2d個零”,n1,n2,n3);}嘎腺賃趕牟斂蘆廚那燎偶臃透奔傣逛驕拐亢輪橡頻汾更快腥讀曾掄頁薩口第六章循環(huán)體程序設(shè)計第六章循環(huán)體程序設(shè)計23§6-3for語句-實(shí)例【例6.9】輸入20個0~9的數(shù)字外層循環(huán)可包含兩個以上內(nèi)循環(huán),但不能相互交叉循環(huán)的嵌套三種循環(huán)可互相嵌套,層數(shù)不限(1)while(){……while(){……}…...}(2)do{……do{……}while();…...}while();(3)while(){……do{……}while();…….}(4)for(;;){……do{……}while();……while(){……}…...}內(nèi)循環(huán)外循環(huán)()for(;;){……

do{while(){……}while();…………}…...}相互交叉§6-4循環(huán)的嵌套刷鯨唁鹼極溪幀屹勞胃們賂菠蛋辛版仔趾虜瑟考峙旭鋤嗎礙披骯篇瓣鉗丙第六章循環(huán)體程序設(shè)計第六章循環(huán)體程序設(shè)計24外層循環(huán)可包含兩個以上內(nèi)循環(huán),但不能相互交叉循環(huán)的嵌套(1)§6-4循環(huán)的嵌套【例6.23】打印九九表。main(){inti,j;for(i=1;i<10;i++) {for(j=1;j<=i;j++) printf("%d*%d=%d\t",j,i,i*j); printf("\n"); }}搔諾邢多肝檔倘奪沾驅(qū)亢噬督噴磕植碴腦睦須咳懼?jǐn)D卸鋒綏埔棠廓慚秩火第六章循環(huán)體程序設(shè)計第六章循環(huán)體程序設(shè)計25§6-4循環(huán)的嵌套【例6.23】打印九九表。main()搔§6-4循環(huán)的嵌套【例6.10】寫出運(yùn)行結(jié)果。 main(){inti,j,k;printf("ijk\n");for(i=0;i<2;i++) for(j=0;j<2;j++)for(k=0;k<2;k++)printf(“%d%d%d\n",i,j,k);}觸瓷操檔艷也璃臉詹塌簡涪尼堂惡姆骸魂襪芋天儉達(dá)鹽祟亞簍啥血悅娛丙第六章循環(huán)體程序設(shè)計第六章循環(huán)體程序設(shè)計26§6-4循環(huán)的嵌套【例6.10】寫出運(yùn)行結(jié)果。 main(§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、for可以相互替換使用。 3、 while語句多用于不需要賦初值的或循環(huán)次數(shù)不定的情況。

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

do-while語句多用于至少要運(yùn)行一次的循環(huán)控制。 4、 循環(huán)語句可以嵌套,循環(huán)可以并列,但不能交叉。翹鴕夷糕漳進(jìn)宇簧柯漓繃粉乎知朝述痞鐳悍朝艱二餡拳泅養(yǎng)表煉滑胡蓮乳第六章循環(huán)體程序設(shè)計第六章循環(huán)體程序設(shè)計27§6-5循環(huán)語句小結(jié)C語言提供了三種循環(huán)語句:for、wh§6-5循環(huán)語句小結(jié)為了保證循環(huán)體正常運(yùn)行,應(yīng)該特別注意:循環(huán)控制條件控制條件的初始狀態(tài)(初始值)循環(huán)體內(nèi)部對控制條件的影響 以上三個方面相互配合,相互影響,共同完成循環(huán)控制蛻絹棱懂桓沒煩艷活謀間予缺籍賺痛蹬好宏挑歪贖蔣波毀少人隆刨阜竣懂第六章循環(huán)體程序設(shè)計第六章循環(huán)體程序設(shè)計28§6-5循環(huán)語句小結(jié)為了保證循環(huán)體正常運(yùn)行,應(yīng)該特別注意:§6-6轉(zhuǎn)移語句轉(zhuǎn)移語句的作用改變程序的運(yùn)行流程。C語言轉(zhuǎn)移語句

breakcontinuegotoreturn斟旬友歐鎮(zhèn)舍襪碑報越愁擰瀾達(dá)闌逐滿惶圍瞅賀媒痰逢匿隊豹默鳳妥棱堰第六章循環(huán)體程序設(shè)計第六章循環(huán)體程序設(shè)計29§6-6轉(zhuǎn)移語句轉(zhuǎn)移語句的作用斟旬友歐鎮(zhèn)舍襪碑報越愁擰瀾達(dá)§6-6-1break語句格式break;break語句的功能1.在switch語句中結(jié)束case子句,使控制轉(zhuǎn)到switch語句之外。2.在循環(huán)語句的循環(huán)體中使用,結(jié)束循環(huán)過程,使控制轉(zhuǎn)移到整個循環(huán)語句之外的下一條語句處。躁歸孔鈞祝斃礁汲純尖慈新漣圾叫林霧虧灼巋匠毗并硒龐陋凱盼煮蕉簧任第六章循環(huán)體程序設(shè)計第六章循環(huán)體程序設(shè)計30§6-6-1break語句格式躁歸孔鈞祝斃礁汲純尖慈新漣圾表達(dá)式2?成立不成立執(zhí)行后續(xù)語句執(zhí)行表達(dá)式3執(zhí)行表達(dá)式1§6-6-1break語句break語句的執(zhí)行流程表達(dá)式?成立不成立執(zhí)行后續(xù)語句breakbreak表達(dá)式?成立不成立執(zhí)行后續(xù)語句breakwhile語句for語句do-while語句藕惦脹酪篡儡勃撈搗遺矛肉展修仆膩判功骯淀番凝邦帳風(fēng)串墮是適亦舒舟第六章循環(huán)體程序設(shè)計第六章循環(huán)體程序設(shè)計31表達(dá)式2?成立不成立執(zhí)行后續(xù)語句執(zhí)行表達(dá)式3執(zhí)行表達(dá)式1§6§6-6-1break語句-實(shí)例例:求555555的約數(shù)中最大的三位數(shù)是多少? main(){intj;longn;printf("Pleaseinputnumber:");scanf("%ld",&n);/*所求的約數(shù)的可能取值是從999到100,j從大到小*/for(j=999;j>=100;j--)

if(n%j==0)/*若能夠整除j,則j是約數(shù)*/

{printf(”3digitsin%ld=%d\n”,n,j);

break;/*控制退出循環(huán)*/

}}粹癡衣硫償仿熔雙寄妙韭畦揚(yáng)控勞端扼銥團(tuán)瓊幾搏墻夕捂凈涵虹道撻竹綸第六章循環(huán)體程序設(shè)計第六章循環(huán)體程序設(shè)計32§6-6-1break語句-實(shí)例例:求555555的約數(shù)中/*ex4-13.c*/#definePI3.14159main(){intr;floatarea;for(r=1;r<=10;r++){area=PI*r*r;if(area>100)break;printf("r=%d,area=%.2f\n",r,area);}}【例6.11】求面積不大于100的半徑為自然數(shù)的圓面積。r=1,area=3.14r=2,area=12.57r=3,area=28.27r=4,area=50.27r=5,area=78.54r=6時,area=113.10第帳陷潞豁寡瓶臟曳肆矮媳睛哲我柞瘟拖耘耍咀崔椰市販妮熾眨諺充添蔫第六章循環(huán)體程序設(shè)計第六章循環(huán)體程序設(shè)計33/*ex4-13.c*/【例6.11】求面積不大于100的§6-6-1break語句-實(shí)例break語句使用注意:

1、在嵌套循環(huán)中,break語句僅能退出一層(當(dāng)前)循環(huán)。 2、若在循環(huán)語句中包含了switch語句,那么switch語句中的break語句僅能使控制退出switch語句。 3、break語句并不是程序設(shè)計中必不可少的語句,可以通過改變程序的結(jié)構(gòu)去掉。漁鋒瘟虧線墨妓酚崩堰大筏全概酥閹鮮葛處記臼覓僧吝侗宗彪蘑漂竄疊茍第六章循環(huán)體程序設(shè)計第六章循環(huán)體程序設(shè)計34§6-6-1break語句-實(shí)例break語句使用注意:漁§6-6-2continue語句continue語句格式continue;continue語句的功能continue語句僅能在循環(huán)語句中使用.它的作用不是結(jié)束循環(huán),而是開始一次新的循環(huán)。 對于for語句,將控制轉(zhuǎn)到執(zhí)行表達(dá)式3和條件測試部分對于while和do-while語句,將控制轉(zhuǎn)到條件測試部分

從邏輯上講,改變if語句的條件表達(dá)式所表示的條件,就可以不需要使用continue語句。笑簡估例鼻殲孔勞視感譴痢沾稽者好負(fù)現(xiàn)兇溜錫融滅牲洼眾捂哨煽眨筆泵第六章循環(huán)體程序設(shè)計第六章循環(huán)體程序設(shè)計35§6-6-2continue語句continue語句格式笑§6-6-2continue語句continue語句的執(zhí)行流程表達(dá)式2?continue成立不成立執(zhí)行后續(xù)語句執(zhí)行表達(dá)式3執(zhí)行表達(dá)式1表達(dá)式?continue成立不成立執(zhí)行后續(xù)語句表達(dá)式?continue成立不成立執(zhí)行后續(xù)語句而陋巷獅撐唾瓊末瓶辜溯忍殺障汕暇嶄掄坑鄂尊哪祝絆旭落哥市健論盈玲第六章循環(huán)體程序設(shè)計第六章循環(huán)體程序設(shè)計36§6-6-2continue語句continue語句的執(zhí)行§6-6-2continue語句-實(shí)例例:輸入10個整數(shù),求其中正數(shù)的個數(shù)及平均值,精確到小數(shù)點(diǎn)后兩位。 main(){inti,count=0,j,sum=0;for(i=1;i<=10;i++){printf("Inputinteger:");scanf("%d",&j);

if(j<=0)

continue;/*結(jié)束本次循環(huán),不進(jìn)行后續(xù)操作*/count++;/*計數(shù)器*/sum+=j;/*求累加和*/}

if(count)printf("Plusnumer:%d,averagevalue:%.2f", count,1.0*sum/count);

elseprintf("Plusnumer:0,averagevalue:0");}改變if語句的條件表達(dá)式,可以不需要使用continue。巧柿禁踏獨(dú)檢刀覓憚穗吱床棄鼓蒼幫溜顯距嗎等企買京鳥瞄羅脫酵聞屠仲第六章循環(huán)體程序設(shè)計第六章循環(huán)體程序設(shè)計37§6-6-2continue語句-實(shí)例例:輸入10個整數(shù),§6-6-2continue語句-實(shí)例【例6.12】輸出100~200之間的不能被3整除的數(shù)。main(){intn;for(n=100;n<=200;n++){if(n%3==0)continue;printf(“%d”,n);}}謝蔚喬甕胚茲賺級可裂奧鷹褲石鍵皆猜閻臼躁盲城托便琉膠盡吞冷洋挖墩第六章循環(huán)體程序設(shè)計第六章循環(huán)體程序設(shè)計38§6-6-2continue語句-實(shí)例【例6.12】輸出§6-6-3goto語句goto語句格式goto

標(biāo)號;goto語句的功能 1、將控制轉(zhuǎn)移到標(biāo)號所指定的語句處繼續(xù)執(zhí)行。 2、標(biāo)號的唯一功能就是作為goto語句的目標(biāo)。標(biāo)號的作用域是它所在的整個函數(shù),標(biāo)號必須是合法的標(biāo)識符。goto語句的使用說明 在C語言中,goto語句并不是必不可少的,使用goto語句的地方都可以用C的其他控制流程語句改寫。教窘饅雇署捎畝豌黔掖捕儈春鉻淵錯滿訖抹韶取篡俺轉(zhuǎn)艇匈苗農(nóng)癡凡湯譜第六章循環(huán)體程序設(shè)計第六章循環(huán)體程序設(shè)計39§6-6-3goto語句goto語句格式教窘饅雇署捎畝豌黔/*ex4-8.c*/#include<stdio.h>main(){inti,sum=0;i=1;loop:if(i<=100){sum+=i;i++;

gotoloop;}printf("%d",sum);}sum=0+1sum=1+2=3sum=3+3=6sum=6+4……sum=4950+100=5050循環(huán)初值循環(huán)變量增值循環(huán)條件例用if和goto語句構(gòu)成循環(huán),求循環(huán)終值循環(huán)體§6-6-3goto語句-實(shí)例涅調(diào)咱墳筷賽喻戴媒七說稍伯燈喚邀狄該臭秸偏娟真攣樁稗役督假詣藐緝第六章循環(huán)體程序設(shè)計第六章循環(huán)體程序設(shè)計40/*ex4-8.c*/sum=0+1循環(huán)初值循環(huán)變量增值循環(huán)§6-6-4return語句retunrn語句格式格式一:return;格式二:return(表達(dá)式);return語句的功能1.return語句使程序從被調(diào)用函數(shù)中返回到調(diào)用函數(shù)的調(diào)用處繼續(xù)運(yùn)行。2.如果return后跟一表達(dá)式,則該表達(dá)式的值會從被調(diào)用函數(shù)中帶回到調(diào)用它的函數(shù),稱為返回值。惋癡淑沸霉千磋霄含訛貉姐浪愈鈾踴劣影瓷窿詠吹鍛拙位載鋒即妹檔曳嗓第六章循環(huán)體程序設(shè)計第六章循環(huán)體程序設(shè)計41§6-6-4return語句retunrn語句格式惋癡淑沸§6-7算法舉例-窮舉法窮舉法例6.14】將2角錢換成1分、2分和5分的硬幣,列出所有可能的換法。main(){intx,y,z,k=0;for(z=0;z<=4;z++)for(y=0;y<=(20-5*z)/2;y++)printf(“第%d種:1分=%d\t2分=%d\t5分=%d\n”,++k,20-2*y-5*z,y,z);printf(“總的換法=%d\n”,k);}

餃寇葷寅倪餅禾剪墅燙師乏饒遁去彬矣辰登淚幟毋驟幅巋鴿遭院咕鎊嵌教第六章循環(huán)體程序設(shè)計第六章循環(huán)體程序設(shè)計42§6-7算法舉例-窮舉法窮舉法餃寇葷寅倪餅禾剪墅燙師乏饒遁§6-7算法舉例-迭代法例:數(shù)列1、1、2、3、5、8、13、21、…是著名的菲波那奇(Fibonacci)數(shù)列,其遞推通項(xiàng)公式為: U1=U2=1 Un=Un-1+Un-2 (n>=3) 為求出第N項(xiàng)的值,請編寫程序。

根據(jù)遞推通項(xiàng)公式,可用遞推法編寫程序,計算第N項(xiàng)的值。遞推法:由初始的已知條件開始,先計算出第(N-1)步的結(jié)果,再利用前面已知的(N-1)項(xiàng)結(jié)果,按照遞推公式(或遵照遞推規(guī)則),推出第N步結(jié)果。

遞推法是程序設(shè)計中最常用的方法之一,使用遞推法必須有明確的遞推初始值和遞推規(guī)則(遞推公式)。力民柄載沽隴抿埔醛拒爽逐蹋校哨館裝先囂萊蹈宵鎮(zhèn)石遜劣出司齒二刁遮第六章循環(huán)體程序設(shè)計第六章循環(huán)體程序設(shè)計43§6-7算法舉例-迭代法例:數(shù)列1、1、2、3、5、8、1§6-3for語句-實(shí)例

main(){intn,i,un1,un2,un;

for(;;){printf("Inputn=?");scanf("%d",&n);

if(n>=3)

break;/*退出for循環(huán)*/

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

/*控制輸入正確的N值*/un1=un2=1;/*設(shè)置遞推初始值*/

for(i=3;i<=n;i++)/*用遞推法計算第N項(xiàng)的值*/

{un=un1+un2;un1=un2;un2=un;

}printf("No.%dis%d\n",n,un);}稠本鈔梧拾檬燼灶窟蓋躲譬夢江先補(bǔ)急熒蚜翅描吟藍(lán)轉(zhuǎn)涂韌擻療蝴胸雄癰第六章循環(huán)體程序設(shè)計第六章循環(huán)體程序設(shè)計44§6-3for語句-實(shí)例main()稠本鈔梧拾檬燼f1f2??f1f1=1,f2=1fori=1to20輸出f1,f2f1=f1+f2f2=f2+f1例6.17求Fibonacci斐波納契數(shù)列的前40個數(shù)f2main(){longf1,f2;inti;f1=1;f2=1;for(i=1;i<=20;i++){printf(“%12ld%12ld”,f1,f2);if(i%2==0) printf(“\n”);f1=f1+f2;f2=f2+f1;}}1123581321345589144233377610987159725844181676510946177112865746368750251213931964183178115142298320401346269217830935245785702887922746514930352241578173908816963245986102334155炊彈挫挨茄云衍使牡浪縣頃臀羊盼因億脅愁左甲影趣棲輝池甘卵陜鱗汁莫第六章循環(huán)體程序設(shè)計第六章循環(huán)體程序設(shè)計45f1f2??f1f1=1,f2=1for§6-8循環(huán)程序設(shè)計舉例輾轉(zhuǎn)相除法main(){intx,y,a,b,t;

printf("輸入兩個整數(shù)x,y:");scanf("%d,%d",&x,&y);a=x;b=y;/*保存x,y以便求它們的最小公倍數(shù)*/t=a%b;while(t!=0)/*余數(shù)不為0,繼續(xù)相除,直到余數(shù)為0*/{a=b;b=t;t=a%b;}printf("x=%d,y=%d→%d,%d\n",x,y,b,x*y/b);/*用乘積除以最大公約數(shù)得到最小公倍數(shù)*/}【例6.18】求兩個整數(shù)的最大公約數(shù)和最小公倍數(shù)。砂村竣胃牛煤紀(jì)瞅返灌遜直褥岔老存奔察賞頗氟貴篙珠鞏吐綜繞給匙柱靴第六章循環(huán)體程序設(shè)計第六章循環(huán)體程序設(shè)計46§6-8循環(huán)程序設(shè)計舉例輾轉(zhuǎn)相除法【例6.18】求兩個整數(shù)分子s:1,-1,1,-1…分母n:1,3,5,7,...項(xiàng)t=s/n【例6.19】用公式求的近似值,直到某一項(xiàng)的絕對值小于為止pi=pi+tn=n+2s=-st=s/npi=pi*4輸出pit=1,pi=0,n=1,s=1當(dāng)|t|1e-6#include<math.h>main(){ints;floatn,t,pi;t=1;pi=0;n=1;s=1;while(fabs(t)>=1e-6){pi=pi+t;n=n+2;s=-s;t=s/n;}pi=pi*4;printf(“pi=%10.6f”,pi);}§6-8循環(huán)程序設(shè)計舉例早埂蘭糕黍憫專鑄鴨槍捂聞訴茹奎婪闖痔利均預(yù)雙朵闊肢蕪咀槐纂肩誦堅第六章循環(huán)體程序設(shè)計第六章循環(huán)體程序設(shè)計47分子s:1,-1,1,-1…【例6.19】用#include<math.h>main(){intm,i,k;scanf(“%d”,&m);k=sqrt(m);for(i=2;i<=k;i++){if(m%i==0) break;}if(i>=k+1)printf(“%disprime\n”,m);elseprintf(“%disnotprime\n”,m);}讀入mi=2當(dāng)ikm被i整除真假用break結(jié)束循環(huán)i=i+1ik+1真假輸出:m是素數(shù)輸出:m不是素數(shù)§6-8循環(huán)程序設(shè)計舉例【例6.20】判斷m是否素數(shù)。賂響敵乞蟄戒鞭裹何凸哥友蚤米哨呵撻述再資鵬彎怪道嚷貿(mào)桅騾炕勇剝縛第六章循環(huán)體程序設(shè)計第六章循環(huán)體程序設(shè)計48#include<math.h>讀入mi=2當(dāng)ikm被i#include<math.h>main(){intm,i,k,n=0;for(m=101;m<=200;m=m+2){k=sqrt(m);for(i=2;i<=k;i++)if(m%i==0)break;if(i>=k+1){printf(“%d”,m);n=n+1;}if(n%10==0)printf(“\n”);/*一行輸出10個*/}printf(“\n”);}§6-8循環(huán)程序設(shè)計舉例【例6.21】求100至200間的全部素數(shù)??v捉策暮湯隘豪僧旨單賒披跑騰獵是驕篇郊活誦漿說罷挑傍妨渙茫先矚第六章循環(huán)體程序設(shè)計第六章循環(huán)體程序設(shè)計49#include<math.h>§6-8循環(huán)程序設(shè)計舉例【§6-8循環(huán)程序設(shè)計舉例【例6.22】用循環(huán)輸出如下圖案:***************main(){inti,m,n;for(i=1;i<=5;i++)/*行數(shù)的控制*/{for(m=1;m<=5-i;m++)printf(“”);/*空格的控制*/for(n=1;n<=i;n++)printf(“*”);/*輸出*個數(shù)的控制*/printf(“\n”);/*每一行要有回車換行*/}}馴授漾臥相準(zhǔn)井既瘓僧誘佩庚倍染捏譯稅摟喀斜忱陣篆唉屯享贅聲筐砸脹第六章循環(huán)體程序設(shè)計第六章循環(huán)體程序設(shè)計50§6-8循環(huán)程序設(shè)計舉例【例6.22】用循環(huán)輸出如下圖案:§6-8循環(huán)程序設(shè)計舉例【例6.24】打印所有“水仙花數(shù)”(三位數(shù):153=13+53+33)。main(){inti,ge,shi,bai;for(i=100;i<=999;i++){bai=i/100;shi=i/10%10;ge=i%10;if(i==ge*ge*ge+shi*shi*shi+bai*bai*bai)printf("%6d",i);}printf("\n");}東林爐值災(zāi)藉魯狹磅岡皮償锨叛嗽禱冠訛燎黍騁頻煤鮮頂癬寂原捌桅傷拍第六章循環(huán)體程序設(shè)計第六章循環(huán)體程序設(shè)計51§6-8循環(huán)程序設(shè)計舉例【例6.24】打印所有“水仙花數(shù)”第六章循環(huán)結(jié)構(gòu)程序設(shè)計膿漚杏玉墓壟末憫貌杰酒忠挪變驅(qū)純勤饅規(guī)申償謅笆猾動包顏鈔場污陌灰第六章循環(huán)體程序設(shè)計第六章循環(huán)體程序設(shè)計第六章循環(huán)結(jié)構(gòu)程序設(shè)計膿漚杏玉墓壟末憫貌杰酒忠挪變驅(qū)純勤饅§6循環(huán)語句提出問題?提問:打印10行“****************”,怎么編程?回答:寫10個printf(“****************”);語句。提問:打印500行,怎么編程?回答:這個,嗯……???不會讓我寫500個......注意:讓我們換一個角度來看待這些問題,以上問題實(shí)質(zhì)是:將printf函數(shù)重復(fù)執(zhí)行N遍。printf(“****************”);懂栗燒舒旁啪輛弄憎迫賺盲啪訊注圾紊鳥澳侖霉良辮穗眠特閏牛逝究蛻我第六章循環(huán)體程序設(shè)計第六章循環(huán)體程序設(shè)計53§6循環(huán)語句提出問題?提問:打印10行“*********§6循環(huán)語句循環(huán)反復(fù)執(zhí)行同一段程序,直到滿足一定的條件后才停止執(zhí)行該段程序。C語言中控制循環(huán)的語句:

whiledo-whilefor嘿脾羞逞曼珍壇伴去慰會僅油港愛姚閩吧膏組拼弟診妓控銻聳關(guān)狠道綠鎂第六章循環(huán)體程序設(shè)計第六章循環(huán)體程序設(shè)計54§6循環(huán)語句循環(huán)嘿脾羞逞曼珍壇伴去慰會僅油港愛姚閩吧膏組拼§6-1while語句while語句格式while(表達(dá)式)語句;

說明:語句部分可以是簡單語句,也可 以是復(fù)合語句。while語句的執(zhí)行流程表達(dá)式?執(zhí)行語句成立不成立執(zhí)行while循環(huán)之后的語句循環(huán)控制條件循環(huán)體打鴿紛迄鏟桐陪芝電股啦喀巳墩跑精填膿紉弘瓣孺水閉拴楓撫遇冒磋愧郎第六章循環(huán)體程序設(shè)計第六章循環(huán)體程序設(shè)計55§6-1while語句while語句格式表達(dá)式?執(zhí)行語句成§6-1while語句-實(shí)例例:從鍵盤輸入10個整數(shù),求這10個整數(shù)的和。 #include<stdio.h>main(){intcount,num,total;

/*count:計數(shù)器,num:輸入的整數(shù)*/count=0;total=0;/*total:存放累加和*/while(count<10)/*循環(huán)控制條件*/{count++;/*循環(huán)體*/printf("EntertheNo.%d=",count);scanf("%d",&num);total+=num;/*計算累加和*/

}printf("Total=%d\n",total);}擒夸孵鱗盟壘擒居摳郵凜暫遮撬佬俊頸鄲衛(wèi)筷手歌煞今獻(xiàn)款蝶柞頑沃箭庚第六章循環(huán)體程序設(shè)計第六章循環(huán)體程序設(shè)計56§6-1while語句-實(shí)例例:從鍵盤輸入10個整數(shù),求§6-1while語句-實(shí)例例:分析程序的運(yùn)行結(jié)果 #include<stdio.h>main(){ intn=0; while(n<3) printf(”nis%d\n”,n); n++; printf(”That\’sallthisprogramdoes.\n”);}結(jié)果:程序?qū)⒉煌5拇蛴 皀is0”,直至終止程序無法正常終止的程序,稱為“死循環(huán)”。結(jié)論:在while語句循環(huán)體中,一定要有能夠?qū)ρh(huán)控制條件產(chǎn)生影響的語句。避免出現(xiàn)“死循環(huán)”現(xiàn)象。{}睬呵媒膝釜象廉走諱暑湊尤煩艦祈鑼痙朔主鞠欣齲東淖圍毀腳已篷辜珠們第六章循環(huán)體程序設(shè)計第六章循環(huán)體程序設(shè)計57§6-1while語句-實(shí)例例:分析程序的運(yùn)行結(jié)果{}睬呵§6-1while語句-實(shí)例例1:分析下列程序段 index=1; while(index<5) printf(”Goodmorning!\n”);分析:程序段將無限制打印字符串。因?yàn)檠h(huán)中沒有任何語句可以改變循環(huán)控制變量index的初值1例2:分析下列程序段

index=1; while(--index<5) printf(”Goodmorning!\n”);分析:仍有問題,程序改變了index的值,但方向錯了。 在index達(dá)到系統(tǒng)能夠處理的最大負(fù)數(shù)時,將會產(chǎn)生下溢而終止程序。結(jié)論:循環(huán)體中必須有能夠使循環(huán)正常停止的條件。色某絡(luò)吐警瓣逐恭綏合鳥燼堪太帥扭頁喀瓤逮進(jìn)貢晶漆券鵲凝與嫌屑曹始第六章循環(huán)體程序設(shè)計第六章循環(huán)體程序設(shè)計58§6-1while語句-實(shí)例例1:分析下列程序段色某絡(luò)吐警§6-1while語句-實(shí)例【例6.1】求 main(){inti,sum=0;i=1;while(i<=100){sum=sum+i;i=i+1;}printf(“%d”,sum);}繩砧虜侶曬敦勸冉娶糜戮尿鉀戶念這葫琶惦谷斯歉屑汾孕衰淡芽婁麥鄖秧第六章循環(huán)體程序設(shè)計第六章循環(huán)體程序設(shè)計59§6-1while語句-實(shí)例【例6.1】求 main()繩§6-1while語句-實(shí)例【例6.2】求前n個數(shù)的平方的和:根據(jù)上例寫出程序如下:main(){inti=1,sum=0,n;scanf(“%d”,&n);while(i<=n){ sum=sum+i*i; i++; }printf(“i=%d,n=%d,sum=%d\n”,i,n,sum);}紀(jì)竭雀俄熄頁禿并肋丁吊片吹螢攪幕籬樟盅綜襟害晦淺笆酶吼嗜源破晶率第六章循環(huán)體程序設(shè)計第六章循環(huán)體程序設(shè)計60§6-1while語句-實(shí)例【例6.2】求前n個數(shù)的平方的§6-1while語句-實(shí)例該例也可以寫成如下:

main(){inti=1,sum=0,n;scanf(“%d”,&n);while(n){ sum=sum+n*n; n--; }printf(“i=%d,n=%d,sum=%d\n”,i,n,sum);}窘勺役巷稅蛀垃棄彌墳漚斥羔淑壞遞失瘍啞廬貓櫻下夏脅突堡莽給頸證磐第六章循環(huán)體程序設(shè)計第六章循環(huán)體程序設(shè)計61§6-1while語句-實(shí)例該例也可以寫成如下:ma§6-1while語句-實(shí)例【例6.3】將輸入的字符原樣輸出,以“#”號結(jié)束。#include<stdio.h>main(){charc;c=getchar();while(c!=‘#’){putchar(c);c=getchar();}}熬渙衡川償程困則蛹齋埋擒頃甚奔匪湃疤彩船策貳眨虱跋晦瓷氨踢蝸貝膘第六章循環(huán)體程序設(shè)計第六章循環(huán)體程序設(shè)計62§6-1while語句-實(shí)例【例6.3】將輸入的字符原樣輸§6-1while語句-實(shí)例上述程序也可以寫為:#include“stdio.h”main(){charc;while((c=getchar())!=‘#’)putchar(c);}逸正菜刑奉表守嗽囪佑壩驚李團(tuán)授柴擾到脆艙隧祿坎默椎疽枷峽活品倘獻(xiàn)第六章循環(huán)體程序設(shè)計第六章循環(huán)體程序設(shè)計63§6-1while語句-實(shí)例上述程序也可以寫為:#incl§6-1while語句-實(shí)例【例6.4】統(tǒng)計從鍵盤輸入的以’\n’結(jié)束的字符中英文字母的個數(shù)。#include<stdio.h>main(){intn=0; charc;while((c=getchar())!='\n'){ if(c>=‘a(chǎn)’&&c<=‘z’||c>=‘A’&&c<=‘Z’) n++; }printf("%d\n",n);}Ab2!*AB4偽泛僚潦驢頁波潭價朗褂努窮盎搭液綁諾胺素哮楚韶溝純淵桌醬騷僳堪架第六章循環(huán)體程序設(shè)計第六章循環(huán)體程序設(shè)計64§6-1while語句-實(shí)例【例6.4】統(tǒng)計從鍵盤輸入的以§6-1while語句-實(shí)例while使用注意1.while(0){....}由于循環(huán)的條件表達(dá)式恒等于0,循環(huán)體永遠(yuǎn)也不會執(zhí)行。2.while(1){....}由于循環(huán)的條件表達(dá)式恒等于1,所以不可能通過循環(huán)控制條件來結(jié)束循環(huán)體的執(zhí)行,稱為“死循環(huán)”。3.為了保證循環(huán)正常運(yùn)行,應(yīng)該特別注意:循環(huán)控制條件控制條件的初始狀態(tài)(初始值)循環(huán)體內(nèi)部對控制條件的影響浦消姐攙訟屎尚閹攝初夜敝囪羚重薊李勉臆壹摳畦菲吻粳無子平糯翌喚淵第六章循環(huán)體程序設(shè)計第六章循環(huán)體程序設(shè)計65§6-1while語句-實(shí)例while使用注意浦消姐攙訟屎§6-2do-while語句do-while語句格式

do

語句

while(

表達(dá)式);do-while語句的執(zhí)行流程表達(dá)式?執(zhí)行語句成立不成立執(zhí)行while子句之后的語句循環(huán)控制條件循環(huán)體倫煩莆龔疹式略芒請峨雨亨啪蛆僻港仁摩捆受達(dá)當(dāng)摔桐沁必耙歪夾史蛹捏第六章循環(huán)體程序設(shè)計第六章循環(huán)體程序設(shè)計66§6-2do-while語句do-while語句格式表達(dá)式§6-2do-while語句do-while語句特點(diǎn) do-while與while的最大區(qū)別: do-while語句先執(zhí)行循環(huán)體然后再判斷循環(huán)控制條件,而while卻是先判斷條件之后再執(zhí)行循環(huán)體。 使用do-while構(gòu)成的循環(huán),循環(huán)體至少要執(zhí)行一次;而采用while構(gòu)成的循環(huán),循環(huán)體有可能一次也不會執(zhí)行。趣刷叭且匆甩瑟淄葡覺壁醛田亡可晚脊呸藉舶慚巒燕貝虐是哲癬蕾疾梳碘第六章循環(huán)體程序設(shè)計第六章循環(huán)體程序設(shè)計67§6-2do-while語句do-while語句特點(diǎn)趣刷叭§6-2do-while語句-實(shí)例【例6.6】用do-while語句求main(){inti,sum=0;i=1;do{sum=sum+i;i++;}while(i<=100);printf(“%d”,sum);}象湍憑碉萊蜒淡氦嫌慷慰俞烙圭吏媚塊塌者蝕幫租俠壹膠凱減仗唉癥稱酪第六章循環(huán)體程序設(shè)計第六章循環(huán)體程序設(shè)計68§6-2do-while語句-實(shí)例【例6.6】用do-wh/*ex4-11-1.c*/#include<stdio.h>main(){inti,sum=0;scanf("%d",&i);do{sum+=i;i++;}while(i<=10);printf(“sum=%d",sum);}/*ex4-11-2.c*/#include<stdio.h>main(){inti,sum=0;scanf("%d",&i);while(i<=10){sum+=i;i++;}printf(“sum=%d",sum);}1sum=551sum=5511sum=1111sum=0§6-2while和dowhile比較燙得兩超影各江瑩戍蠟昧蠶訓(xùn)陣謄帝撈崩趕絢坊寒刷凋遏井贅甭寇哦鏡婪第六章循環(huán)體程序設(shè)計第六章循環(huán)體程序設(shè)計69/*ex4-11-1.c*//*ex4-11-2.c*/1§6-2do-while語句-實(shí)例【例6.8】輸入一個整數(shù),計算它的位數(shù).并反向輸出.main(){longnum;intcount=0;printf(“輸入一個整數(shù):”);scanf(“%ld”,&num);do{printf(“%d”,num%10);num=num/10;count++;}while(num);printf(“該整數(shù)是%d位數(shù).”,count);}必捏叢野疵值櫥蓄敞添積莎類兆眾他堯暢母烏輩臂活和秀禱泌枝至律然趕第六章循環(huán)體程序設(shè)計第六章循環(huán)體程序設(shè)計70§6-2do-while語句-實(shí)例【例6.8】輸入一個整數(shù)§6-3for語句for語句格式for(表達(dá)式1;表達(dá)式2;表達(dá)式3)語句;for語句的執(zhí)行流程循環(huán)初始條件循環(huán)控制條件表達(dá)式2?執(zhí)行語句成立不成立執(zhí)行for循環(huán)之后的語句執(zhí)行表達(dá)式3執(zhí)行表達(dá)式1循環(huán)體for語句等價于下列語句:表達(dá)式1;while(表達(dá)式2){

語句;

表達(dá)式3;}紡翌礙掐央暮撕褲??镄摞|翰哆悉皚飾旗批糠抨脅布群挾掣詐河常騎囑疙第六章循環(huán)體程序設(shè)計第六章循環(huán)體程序設(shè)計71§6-3for語句for語句格式循環(huán)初始條件循環(huán)控制條件表§6-3for語句-實(shí)例例:求一個數(shù)的階乘。#include<stdio.h> main() {longintjc=1; inti,n; scanf(“%d”,&n);

for

(

i=1;i<=n;i++

)

jc=jc*i; printf("%d!=%ld\n",n,jc);

}for語句最常用的形式for(初值;控制條件;增量)語句;33!=6鮮卻套峨僧護(hù)熏消啟衍驟蹲福托空很訖磊似品只汝隙他官駭滄堯虎縱疫括第六章循環(huán)體程序設(shè)計第六章循環(huán)體程序設(shè)計72§6-3for語句-實(shí)例例:求一個數(shù)的階乘。for語句最?!?-3for語句for語句的變化形式 for語句中的三個表達(dá)式中的任意一個都是可以省略的,但是分號不能省略。1.省略表達(dá)式2,則:for(表達(dá)式1;;表達(dá)式3)就形成了一個死循環(huán)。2.省略表達(dá)式1和表達(dá)式3,則:for(;表達(dá)式2;)就等同于:while(表達(dá)式)

據(jù)此結(jié)論:所有用while語句實(shí)現(xiàn)的循環(huán)都可以用for語句實(shí)現(xiàn)。3.表達(dá)式1、2、3全省略,則:for

(;;)就等同于:while

(1)肄埋貪話稼蔬得淆介洪懷掐蹬竭吏拷矣原物龔姜退猿喻埂僵儡線懲屠掩問第六章循環(huán)體程序設(shè)計第六章循環(huán)體程序設(shè)計73§6-3for語句for語句的變化形式肄埋貪話稼蔬得淆介洪§6-3for語句-實(shí)例【例6.9】輸入20個0~9的數(shù)字字符,計算有多少奇數(shù),偶數(shù)和零。

#defineM20main(){inti,k,n1=0,n2=0,n3=0;charch;printf(“輸入數(shù)字字符20個:\n”);for(k=1;k<=M;k++){scanf(“%c”,&ch);i=ch-’0’;if(i==0)n3++;/*零*/elseif(i%2==0)n1++;/*偶數(shù)*/elsen2++;/*奇數(shù)*/}printf(“有%2d個偶數(shù),%2d個奇數(shù),%2d個零”,n1,n2,n3);}嘎腺賃趕牟斂蘆廚那燎偶臃透奔傣逛驕拐亢輪橡頻汾更快腥讀曾掄頁薩口第六章循環(huán)體程序設(shè)計第六章循環(huán)體程序設(shè)計74§6-3for語句-實(shí)例【例6.9】輸入20個0~9的數(shù)字外層循環(huán)可包含兩個以上內(nèi)循環(huán),但不能相互交叉循環(huán)的嵌套三種循環(huán)可互相嵌套,層數(shù)不限(1)while(){……while(){……}…...}(2)do{……do{……}while();…...}while();(3)while(){……do{……}while();…….}(4)for(;;){……do{……}while();……while(){……}…...}內(nèi)循環(huán)外循環(huán)()for(;;){……

do{while(){……}while();…………}…...}相互交叉§6-4循環(huán)的嵌套刷鯨唁鹼極溪幀屹勞胃們賂菠蛋辛版仔趾虜瑟考峙旭鋤嗎礙披骯篇瓣鉗丙第六章循環(huán)體程序設(shè)計第六章循環(huán)體程序設(shè)計75外層循環(huán)可包含兩個以上內(nèi)循環(huán),但不能相互交叉循環(huán)的嵌套(1)§6-4循環(huán)的嵌套【例6.23】打印九九表。main(){inti,j;for(i=1;i<10;i++) {for(j=1;j<=i;j++) printf("%d*%d=%d\t",j,i,i*j); printf("\n"); }}搔諾邢多肝檔倘奪沾驅(qū)亢噬督噴磕植碴腦睦須咳懼?jǐn)D卸鋒綏埔棠廓慚秩火第六章循環(huán)體程序設(shè)計第六章循環(huán)體程序設(shè)計76§6-4循環(huán)的嵌套【例6.23】打印九九表。main()搔§6-4循環(huán)的嵌套【例6.10】寫出運(yùn)行結(jié)果。 main(){inti,j,k;printf("ijk\n");for(i=0;i<2;i++) for(j=0;j<2;j++)for(k=0;k<2;k++)printf(“%d%d%d\n",i,j,k);}觸瓷操檔艷也璃臉詹塌簡涪尼堂惡姆骸魂襪芋天儉達(dá)鹽祟亞簍啥血悅娛丙第六章循環(huán)體程序設(shè)計第六章循環(huán)體程序設(shè)計77§6-4循環(huán)的嵌套【例6.10】寫出運(yùn)行結(jié)果。 main(§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、for可以相互替換使用。 3、 while語句多用于不需要賦初值的或循環(huán)次數(shù)不定的情況。

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

do-while語句多用于至少要運(yùn)行一次的循環(huán)控制。 4、 循環(huán)語句可以嵌套,循環(huán)可以并列,但不能交叉。翹鴕夷糕漳進(jìn)宇簧柯漓繃粉乎知朝述痞鐳悍朝艱二餡拳泅養(yǎng)表煉滑胡蓮乳第六章循環(huán)體程序設(shè)計第六章循環(huán)體程序設(shè)計78§6-5循環(huán)語句小結(jié)C語言提供了三種循環(huán)語句:for、wh§6-5循環(huán)語句小結(jié)為了保證循環(huán)體正常運(yùn)行,應(yīng)該特別注意:循環(huán)控制條件控制條件的初始狀態(tài)(初始值)循環(huán)體內(nèi)部對控制條件的影響 以上三個方面相互配合,相互影響,共同完成循環(huán)控制蛻絹棱懂桓沒煩艷活謀間予缺籍賺痛蹬好宏挑歪贖蔣波毀少人隆刨阜竣懂第六章循環(huán)體程序設(shè)計第六章循環(huán)體程序設(shè)計79§6-5循環(huán)語句小結(jié)為了保證循環(huán)體正常運(yùn)行,應(yīng)該特別注意:§6-6轉(zhuǎn)移語句轉(zhuǎn)移語句的作用改變程序的運(yùn)行流程。C語言轉(zhuǎn)移語句

breakcontinuegotoreturn斟旬友歐鎮(zhèn)舍襪碑報越愁擰瀾達(dá)闌逐滿惶圍瞅賀媒痰逢匿隊豹默鳳妥棱堰第六章循環(huán)體程序設(shè)計第六章循環(huán)體程序設(shè)計80§6-6轉(zhuǎn)移語句轉(zhuǎn)移語句的作用斟旬友歐鎮(zhèn)舍襪碑報越愁擰瀾達(dá)§6-6-1break語句格式break;break語句的功能1.在switch語句中結(jié)束case子句,使控制轉(zhuǎn)到switch語句之外。2.在循環(huán)語句的循環(huán)體中使用,結(jié)束循環(huán)過程,使控制轉(zhuǎn)移到整個循環(huán)語句之外的下一條語句處。躁歸孔鈞祝斃礁汲純尖慈新漣圾叫林霧虧灼巋匠毗并硒龐陋凱盼煮蕉簧任第六章循環(huán)體程序設(shè)計第六章循環(huán)體程序設(shè)計81§6-6-1break語句格式躁歸孔鈞祝斃礁汲純尖慈新漣圾表達(dá)式2?成立不成立執(zhí)行后續(xù)語句執(zhí)行表達(dá)式3執(zhí)行表達(dá)式1§6-6-1break語句break語句的執(zhí)行流程表達(dá)式?成立不成立執(zhí)行后續(xù)語句breakbreak表達(dá)式?成立不成立執(zhí)行后續(xù)語句breakwhile語句for語句do-while語句藕惦脹酪篡儡勃撈搗遺矛肉展修仆膩判功骯淀番凝邦帳風(fēng)串墮是適亦舒舟第六章循環(huán)體程序設(shè)計第六章循環(huán)體程序設(shè)計82表達(dá)式2?成立不成立執(zhí)行后續(xù)語句執(zhí)行表達(dá)式3執(zhí)行表達(dá)式1§6§6-6-1break語句-實(shí)例例:求555555的約數(shù)中最大的三位數(shù)是多少? main(){intj;longn;printf("Pleaseinputnumber:");scanf("%ld",&n);/*所求的約數(shù)的可能取值是從999到100,j從大到小*/for(j=999;j>=100;j--)

if(n%j==0)/*若能夠整除j,則j是約數(shù)*/

{printf(”3digitsin%ld=%d\n”,n,j);

break;/*控制退出循環(huán)*/

}}粹癡衣硫償仿熔雙寄妙韭畦揚(yáng)控勞端扼銥團(tuán)瓊幾搏墻夕捂凈涵虹道撻竹綸第六章循環(huán)體程序設(shè)計第六章循環(huán)體程序設(shè)計83§6-6-1break語句-實(shí)例例:求555555的約數(shù)中/*ex4-13.c*/#definePI3.14159main(){i

溫馨提示

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

評論

0/150

提交評論