資源描述:
《C語言程序設(shè)計(jì)_循環(huán)結(jié)構(gòu)程序設(shè)計(jì)ppt課件.ppt》由會(huì)員上傳分享,免費(fèi)在線閱讀,更多相關(guān)內(nèi)容在教育資源-天天文庫。
1、5.1while語句5.2do-while語句5.3for語句5.4break、continue和goto語句5.5循環(huán)的嵌套5.6復(fù)合結(jié)構(gòu)程序舉例第五章循環(huán)結(jié)構(gòu)程序設(shè)計(jì)教學(xué)目的和基本要求:要求學(xué)生了解循環(huán)結(jié)構(gòu)程序設(shè)計(jì),掌握各種循環(huán)語句應(yīng)用的特點(diǎn)及異同點(diǎn),掌握循環(huán)嵌套及復(fù)合結(jié)構(gòu)。教學(xué)重點(diǎn):各種循環(huán)語句應(yīng)用的特點(diǎn)及異同點(diǎn)。scanf(“%f”,&a);s=s+a;scanf(“%f”,&a);s=s+a;………….這樣重復(fù)一百次,然后輸出s的值。這樣寫顯然非常麻煩。我們注意到程序中的scanf(“%f”,&a);s=s+a;兩句話是一直重復(fù)的,
2、如果能用一種語句,使這兩句話能自動(dòng)的重復(fù)執(zhí)行一百次,就可以簡化了書寫的麻煩,這就是循環(huán)語句。編程解決這樣的一個(gè)問題:從鍵盤輸入一百個(gè)學(xué)生的成績,求總成績。從前面所學(xué),有兩種解決方法。1.設(shè)一百個(gè)變量,分別輸入學(xué)生的成績,然后求和。這種方法浪費(fèi)內(nèi)存空間,顯然不實(shí)際。2.設(shè)一個(gè)變量,每次輸入一個(gè)學(xué)生成績,累加后再輸入下一個(gè)學(xué)生成績,如下:C語言有while、do-while、和for語句三種循環(huán)結(jié)構(gòu)語句。前兩個(gè)稱為條件循環(huán),即根據(jù)條件來決定是否繼續(xù)循環(huán);后一個(gè)稱為計(jì)數(shù)循環(huán),即根據(jù)設(shè)定的執(zhí)行次數(shù)來執(zhí)行循環(huán)。5.1while語句一般形式:while
3、(表達(dá)式)語句表達(dá)式語句真假表達(dá)式1.計(jì)算表達(dá)式語句2.如果表達(dá)式的值為非零,執(zhí)行語句表達(dá)式3.返回第一步,重新計(jì)算表達(dá)式4.如果表達(dá)式的值為零,則結(jié)束循環(huán)如果表達(dá)式的值一開始就為0,則語句一次也不會(huì)被執(zhí)行。執(zhí)行流程:while語句舉例問題:求學(xué)生的平均成績,以輸入負(fù)數(shù)成績?yōu)榻Y(jié)束算法分析:1.定義變量score存儲(chǔ)學(xué)生成績,定義s=0存儲(chǔ)累加的成績,定義n=0統(tǒng)計(jì)錄入的成績數(shù)目。2.輸入第一個(gè)學(xué)生的score3.若score>=0,執(zhí)行第4步,否則執(zhí)行第7步4.n++5.s=s+score6.錄入下一個(gè)score,并返回第3步7.如果n>0,
4、輸出s/n否則輸出沒有學(xué)生成績main(){intn=0;floats=0,score;scanf(“%f”,&score);while(score>=0){n++;s=s+score;scanf(“%f”,&score);}if(n>0)printf(“%f”,s/n);elseprintf(“nostudentscore!”);}程序:5.2do—while語句一般形式:do{語句}while(表達(dá)式);1.執(zhí)行語句3.表達(dá)式的值為非零,返回第1步4.表達(dá)式的值為零,結(jié)束循環(huán)語句至少被執(zhí)行一次。表達(dá)式語句2.計(jì)算表達(dá)式執(zhí)行流程:注
5、意:分號(hào)不能丟語句表達(dá)式真假main(){intn=0;floats=0,score;do{scanf(“%f”,&score);n++;s=s+score;}while(score>=0);if(n>1)printf(“%f”,(s-score)/(n-1));elseprintf(“nostudentscore!”);}用do-while語句編寫統(tǒng)計(jì)學(xué)生平均成績的程序:由于do-while語句至少要被執(zhí)行一次,特別要注意n和s的取值問題!想想這樣的一段循環(huán)語句的執(zhí)行結(jié)果:i=1;while(i<=100)putchar(‘*’);i+
6、+;這個(gè)循環(huán)永遠(yuǎn)不會(huì)結(jié)束,因?yàn)檠h(huán)控制變量i沒有在循環(huán)體內(nèi)被改變,i++;不屬于循環(huán)體。應(yīng)該改為:i=1;while(i<=100){putchar(‘*’);i++;}循環(huán)語句中一定要注意表達(dá)式的值是否能在循環(huán)執(zhí)行過程中被改變,以免造成死循環(huán)。5.3for循環(huán)語句for(表達(dá)式1;表達(dá)式2;表達(dá)式3)循環(huán)體語句一般形式:1.計(jì)算表達(dá)式1,通常用于循環(huán)開始前設(shè)置變量初值。2.計(jì)算表達(dá)式2,值為0則結(jié)束循環(huán),否則執(zhí)行第3步。3.執(zhí)行循環(huán)體語句。4.計(jì)算表達(dá)式3,返回第2步。執(zhí)行流程表達(dá)式1表達(dá)式2循環(huán)體表達(dá)式3假真例:求1+2+…+99#inc
7、ludemain(){inti,s=0;for(i=1;i<=99;i++)s=s+i;printf(“s=%d”,s);}分析:用變量i從1到99循環(huán),把i的值累加到變量s中,最后輸出s的值。程序如下:i=1i<=99s=s+ii++假真從上面的程序我們看到,for語句中:表達(dá)式1:通常是給循環(huán)變量賦初值表達(dá)式2:循環(huán)是否繼續(xù)執(zhí)行的判別表達(dá)式,這個(gè)表達(dá)式通常與某一個(gè)(或多個(gè))變量的值有關(guān),隨著這個(gè)(些)變量的值的改變,表達(dá)式的結(jié)果發(fā)生變化,這個(gè)(些)變量被稱為循環(huán)因變量。表達(dá)式3:通常用于改變循環(huán)因變量的值。在某些情況下,
8、for語句中的表達(dá)式1、2、3都可以省略,而改用其他的方式來實(shí)現(xiàn)這些功能。我們還用上面的例子說明for語句省略表達(dá)式的情形。1.省略表達(dá)式1:#include