資源描述:
《C語言程序設(shè)計 第五章-循環(huán)結(jié)構(gòu)程序設(shè)計ppt課件.ppt》由會員上傳分享,免費(fèi)在線閱讀,更多相關(guān)內(nèi)容在教育資源-天天文庫。
1、第5章循環(huán)結(jié)構(gòu)程序設(shè)計概述當(dāng)對某段程序要重復(fù)執(zhí)行時,用循環(huán)語句。種類:4、if-goto語句1、while語句2、do-while語句3、for語句while語句用來實現(xiàn)當(dāng)某個條件滿足時,對一段程序進(jìn)行重復(fù)執(zhí)行的操作(當(dāng)型循環(huán))。while語句的一般格式:while(表達(dá)式)語句當(dāng)表達(dá)式的值為真(非零)時,重復(fù)執(zhí)行語句,直到邏輯表達(dá)式的值為假,跳出循環(huán)。說明:如果需要重復(fù)執(zhí)行的部分(循環(huán)體)為多條語句,則需要構(gòu)成一個復(fù)合語句。表達(dá)式語句非00while語句例用while循環(huán)求1—100的和/#includemain(){inti,s
2、um=0;/*sum累加器*/i=1;/*循環(huán)控制初值*/while(i<=100)/*{循環(huán)體}*/{sum=sum+i;i++;/*邏輯表達(dá)式值可變*/}printf("%d",sum);}邏輯表達(dá)式例輸入若干個學(xué)生成績,輸入-1表示結(jié)束,求平均成績。程序如下main(){inti,score,sum=0;i=0;/*學(xué)生人數(shù)計數(shù)器初值*/printf("pleaseinputscore:");scanf("%d",&score);while(score!=-1){sum=sum+score;i++;scanf("%d",&score);}i
3、f(i)printf("average=%f",(float)sum/i);}在while循環(huán)中需要注意:1、while語句之前必須預(yù)先設(shè)置判斷的初始條件。2、防止“死循環(huán)”的發(fā)生在循環(huán)體中要有能讓邏輯表達(dá)式值改變的語句。如前例的i++;和上例的scanf();能正確出循環(huán)。3、正確使用復(fù)合語句當(dāng)循環(huán)體中含多條語句時,需用{}將這些語句括起來,構(gòu)成一個復(fù)合語句;若無花括號,編譯不會出錯,它認(rèn)為循環(huán)體僅含后面的第一條語句,偏離設(shè)計。4、while()后面不能加分號;如果后面緊跟分號,編譯系統(tǒng)認(rèn)為循環(huán)體是一條空語句,造成“死循環(huán)”。一般形式是:do語
4、句while(表達(dá)式)先執(zhí)行該循環(huán)體語句,再判斷while中的表達(dá)式,若為真,則繼續(xù)執(zhí)行循環(huán)體,否則,執(zhí)行while后面的語句。語句表達(dá)式非00do-while語句流程3.4.2do-while語句看前面的例子,如果簡單的將其用do-while語句寫成如下的程序。main(){inti,score,sum=0;i=0;do{scanf("%d",&score);sum=sum+score;i++;}while(score!=-1)printf("average=%f",(float)sum/i);}不能正確實現(xiàn)題目要求。請分析這里存在的問題。ma
5、in(){inti,score,sum=1;i=-1;do{scanf("%d",&score);sum=sum+score;i++;}while(score!=-1);if(i)printf("average=%f",(float)sum/i);}例要用do-while語句實現(xiàn),應(yīng)重新設(shè)置初值。顯然比while語句簡練但需改變初值例3.17任意輸入一個整數(shù),將該數(shù)各位倒序輸出。程序一:用while語句實現(xiàn)main(){intnumber,digit;printf("pleaseinputdata:");scanf("%d",&number);w
6、hile(number!=0){digit=number%10;printf("%d",digit);number=number/10;}}此程序輸入為0時沒有輸出程序二:用do-while語句實現(xiàn)main(){intnumber,digit;printf("pleaseinputdata:");scanf("%d",&number);do{digit=number%10;printf("%d",digit);number=number/10;}while(number!=0);}此程序輸入為0時仍有輸出特點(diǎn):先執(zhí)行循環(huán)體,后判斷表達(dá)式說明:至少執(zhí)行
7、一次循環(huán)體do~while可轉(zhuǎn)化成while結(jié)構(gòu)expr循環(huán)體假(0)真(非0)循環(huán)體While循環(huán)例3.18根據(jù)下面的泰勒級數(shù),求sinx的近似值。sinx=要求誤差小于10-6。這是求累加和的問題,用遞推法求各項,即本項用前項遞推產(chǎn)生,這是程序設(shè)計中常見的做法。可以看出后項和前項之間存在關(guān)系式:T=-T前*X2/(i*(i-1))(其中,i=3,5,7…)程序設(shè)計中用變量t存儲當(dāng)前項,初值為第一項x,遞推語句為:t=-t*x2/(i*(i-1));累加語句為:s=s+t;循環(huán)體至少執(zhí)行一次,用do-while實現(xiàn)。...…++-++-+-)!12
8、()1(!7!5!32753ixxxxxii+1#includemain(){inti;fl