版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
2022/12/291第五章循環(huán)結(jié)構(gòu)5.1while語句5.2do-while語句5.3for語句5.4break、continue和goto語句5.5循環(huán)的嵌套5.6復(fù)合結(jié)構(gòu)程序舉例C語言程序設(shè)計(jì)教程2022/12/261第五章循環(huán)結(jié)構(gòu)5.1whil2022/12/292本章重點(diǎn)、難點(diǎn)內(nèi)容一、重點(diǎn):1)3種循環(huán)語句的語法結(jié)構(gòu)及其使用時(shí)的區(qū)別;
2)循環(huán)結(jié)束條件表達(dá)式的構(gòu)造;
3)for語句的使用方法;二、難點(diǎn):1)循環(huán)控制變量的使用及循環(huán)結(jié)束條件的設(shè)定;
2)for語句的幾種不同使用方法;
3)break、continue語句的使用;
4)循環(huán)嵌套;2022/12/262本章重點(diǎn)、難點(diǎn)內(nèi)容一、重點(diǎn):1)3種循2022/12/293C語言有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)。2022/12/263C語言有whil2022/12/2945.1while語句while語句是通過判斷循環(huán)控制條件是否滿足來決定是否繼續(xù)循環(huán)的語句。一般形式:
while(條件表達(dá)式)
{循環(huán)體語句序列}
條件表達(dá)式為循環(huán)控制條件,當(dāng)表達(dá)式的值為非零(滿足循環(huán)條件),就執(zhí)行循環(huán)體語句,當(dāng)表達(dá)式的值為零,就退出循環(huán)。2022/12/2645.1while語句while語2022/12/295while語句執(zhí)行流程表達(dá)式語句真假表達(dá)式首先計(jì)算條件表達(dá)式語句如果表達(dá)式的值為非零,執(zhí)行語句表達(dá)式重新計(jì)算表達(dá)式如果表達(dá)式的值為0,則跳出循環(huán)如果表達(dá)式的值一開始就為0,則語句一次也會(huì)被不執(zhí)行。2022/12/265while語句執(zhí)行流程表達(dá)式語句真假表2022/12/296while語句舉例問題:求n個(gè)學(xué)生的平均成績(jī)(先考慮程序的輸入及輸出)算法:1輸入n;i=1,average=0;2輸入第i個(gè)學(xué)生的score;3average+=score;i++;4當(dāng)i<=n重復(fù)做2;5average/=n;2022/12/266while語句舉例問題:求n個(gè)學(xué)生的2022/12/297main(){intn,i=1;float
score,average=0;printf(“\nEntern:”);scanf(“%d”,&n);while(i<=n){printf(“\nEnterscore:”);scanf(“%f”,&score);average+=score;i++;}average/=n;printf(“\naverage=%f”,average);}2022/12/267main()2022/12/2985.2
do—while語句
do—while語句的一般形式是:
do{
循環(huán)體語句
}while(條件表達(dá)式)
特點(diǎn):首先執(zhí)行語句,再通過判斷循環(huán)控制條件是否滿足來決定是否繼續(xù)循環(huán)。2022/12/2685.2do—while語句do—w2022/12/299do—while語句執(zhí)行流程首先計(jì)算語句,再計(jì)算表達(dá)式。如果表達(dá)式的值為非零,繼續(xù)下一次循環(huán)如果表達(dá)式的值為0,則跳出循環(huán)如果表達(dá)式的值一開始就為0,也會(huì)執(zhí)行一次語句。循環(huán)體語句條件表達(dá)式真假2022/12/269do—while語句執(zhí)行流程首先計(jì)算語2022/12/2910main(){intscore,n,i=1;floataverage=0;printf(“Entern:”);scanf(“%d\n”,&n);do{printf(“\nEnterscore:”);scanf(“%d”,&score);average+=score;i++;}while(i<=n);average/=n;printf(“\naverage=%f”,average);}思考:與前面用While語句構(gòu)成的循環(huán)在程序運(yùn)行結(jié)果上有何區(qū)別?2022/12/2610main()2022/12/2911注意:循環(huán)控制變量值在循環(huán)體內(nèi)必須有所改變。例如:i=1;while(i<=100)
putchar(‘*’);i++;這個(gè)循環(huán)永遠(yuǎn)不會(huì)結(jié)束,因?yàn)檠h(huán)控制變量i沒有在循環(huán)體內(nèi)被改變,i++;不屬于循環(huán)語句。i++應(yīng)該在循環(huán)體內(nèi)改變:i=1;while(i<=100){putchar(‘*’);
i++;}2022/12/2611注意:循環(huán)控制變量值在循環(huán)體內(nèi)必須有2022/12/2912 5.3for循環(huán)語句for(表達(dá)式1;表達(dá)式2;表達(dá)式3)循環(huán)體語句這是C語言最有特點(diǎn)的循環(huán)語句。使用最為靈活方便。一般形式:2022/12/2612 5.3for循環(huán)語句for(表2022/12/2913先執(zhí)行表達(dá)式1(初值表達(dá)式),用于循環(huán)開始前設(shè)置變量初值。接著計(jì)算表達(dá)式2(循環(huán)條件控制表達(dá)式),根據(jù)其真假值決定是否繼續(xù)循環(huán)。執(zhí)行循環(huán)體語句。最后執(zhí)行表達(dá)式3(循環(huán)控制變量修改)。表達(dá)式1表達(dá)式2循環(huán)體表達(dá)式3執(zhí)行流程真假2022/12/2613先執(zhí)行表達(dá)式1(初值表達(dá)式),用于循2022/12/2914利用for語句重新設(shè)計(jì)求平均成績(jī)程序main(){intn,score,i;floataverage=0;printf(“\nEntern:”);scanf(“%d”,&n);for(i=1;i<=n;i++){printf(“\nEnterscore:”);scanf(“%d”,&score);average+=score;}average/=n;printf(“\naverage=%f”,average);}2022/12/2614利用for語句重新設(shè)計(jì)求平均成績(jī)程序2022/12/2915例:求1+2+…+99#include(stdio.h)
main()
{inti,s=0;/*s清0*/
for(i=1;i<100;i++)
s=s+i;
printf(“s=%d”,i);
}i=1i<100s=s+ii++2022/12/2615例:求1+2+…+99#inc2022/12/2916
循環(huán)語句的多種表示for(i=0;i<100;i++)s=s+i;main()
{inti=1,s=0;
do
{s=s+i;i++;}while(i<100);printf(“s=%d”,i);
}i=0i<100s=s+ii++main()
{inti,s=0;
i=0;
while(i<100)
{s=s+i;
i++;
}
printf(“s=%d”,i);
}2022/12/2616 循環(huán)語句的多種表示for(i=02022/12/2917for語句的表達(dá)式可以省略如已先給變量賦過值。則可以省略表達(dá)式1。for(;i<100;i++)如果想在循環(huán)內(nèi)部改變變量的值,則可以省略表達(dá)式3。for(i=0;i<100;)如果省略表達(dá)式1,3的話就相當(dāng)于while。for(;i<100;)while(i<100)全部省略就是死循環(huán)。for(;;)(需要用break跳出)2022/12/2617for語句的表達(dá)式可以省略如已先給變2022/12/2918逗號(hào)表達(dá)式
逗號(hào)運(yùn)算符的主要應(yīng)用就在for語句中。for語句中的表達(dá)式1和表達(dá)式3可以是逗號(hào)表達(dá)式,特別是有兩個(gè)循環(huán)變量參與對(duì)循環(huán)的控制時(shí)。表達(dá)式1和表達(dá)式3為逗號(hào)表達(dá)式,將使程序顯得非常清晰。例:for(i=1,j=10;i<=j;i++,j--)2022/12/2618逗號(hào)表達(dá)式逗號(hào)運(yùn)算符的主2022/12/2919for(i=a,j=b;i<=j;i++,j--)舉例問題:求1/100+2/99+…+1floats=0.0;inti,j;for(i=1,j=100;i<=j;i++,j--)s=s+1.0*i/j;2022/12/2619for(i=a,j=b;i<=j;2022/12/2920
循環(huán)語句流程圖表達(dá)式語句真假語句表達(dá)式表達(dá)式1表達(dá)式2循環(huán)體表達(dá)式3while循環(huán)do—while循環(huán)for循環(huán)2022/12/2620 循環(huán)語句流程圖表達(dá)式語句真假語句表2022/12/2921循環(huán)語句設(shè)計(jì)容易出錯(cuò)的幾個(gè)環(huán)節(jié)一、While,Do-While循環(huán):
1)循環(huán)條件判定表達(dá)式設(shè)計(jì)不當(dāng);
2)循環(huán)體內(nèi)無使循環(huán)條件趨于假的語句;
3)(循環(huán)條件表達(dá)式)后的分號(hào),while語句不能加,do-while則要加;4)用于界定循環(huán)體語句的花括號(hào)不使用或者使用不當(dāng);
5)循環(huán)控制變量未初始化;2022/12/2621循環(huán)語句設(shè)計(jì)容易出錯(cuò)的幾個(gè)環(huán)節(jié)一、W2022/12/2922二、for語句循環(huán):
1)循環(huán)條件判定表達(dá)式設(shè)計(jì)不當(dāng);
2)用于界定循環(huán)體語句的花括號(hào)不使用或者使用不當(dāng);
3)表達(dá)式3后面不能有分號(hào)。建議:在進(jìn)行循環(huán)設(shè)計(jì)時(shí)盡量使用for語句。2022/12/2622二、for語句循環(huán):2022/12/29235.4break、continue、goto語句
這一類語句的功能是改變程序的結(jié)構(gòu),使程序從其所在的位置轉(zhuǎn)向另一處。這類語句是非結(jié)構(gòu)化語句。一般而言,在這3個(gè)語句前面都應(yīng)該有一個(gè)條件判定2022/12/26235.4break、continu2022/12/2924非結(jié)構(gòu)化語句之break
它的作用是把流程轉(zhuǎn)向所在結(jié)構(gòu)之后。在switch分支結(jié)構(gòu)中,使用break語句可以使流程跳出switch分支結(jié)構(gòu)。同樣的,在循環(huán)結(jié)構(gòu)中,使用break語句使流程跳出當(dāng)前的循環(huán)層,轉(zhuǎn)向執(zhí)行該循環(huán)結(jié)構(gòu)后面的語句。
簡(jiǎn)單的說就是跳出當(dāng)前所在的結(jié)構(gòu)main()
{
ints=0,i=1:
for(;;)
{s=s+i;i++;
if(i>100)break;/*如果i>100,則退出循環(huán)*/
}
printf(“s=%d”,s);
}
本程序中,當(dāng)i>100時(shí),強(qiáng)行終止for循環(huán),繼續(xù)執(zhí)行for語句下一條語句2022/12/2624非結(jié)構(gòu)化語句之break它的作2022/12/2925
非結(jié)構(gòu)化語句之continuecontinue語句被稱為繼續(xù)語句。執(zhí)行continue語句,使本次循環(huán)提前結(jié)束,即跳過循環(huán)體中continrue語句下面的尚未執(zhí)行的循環(huán)體語句,但不結(jié)束整個(gè)循環(huán),繼續(xù)進(jìn)行下一次循環(huán)的條件判別,條件為真,繼續(xù)進(jìn)行執(zhí)行循環(huán)語句。該語句形式為:continue;2022/12/2625 非結(jié)構(gòu)化語句之continueco2022/12/2926例5.4統(tǒng)計(jì)某個(gè)班級(jí)一門課程學(xué)生及格的人數(shù)main(){intn,i=1,j=0;floatscore;printf(“n=:”);scanf(“%d\n”,&n);while(i<=n){printf(“enterscore:”);scanf(“%f\n”,&score);i++;/*請(qǐng)思考該語句能否放在j++語句處
if(score<60)
continue;
j++;}printf(“%d\n”,j);}2022/12/2626例5.4統(tǒng)計(jì)某個(gè)班級(jí)一門課程學(xué)生及格2022/12/2927非結(jié)構(gòu)化語句之gotogoto被稱為無條件轉(zhuǎn)移語句。由兩部分組成goto標(biāo)號(hào);和標(biāo)號(hào):語句它最大的好處就是可以一下子跳出多重循環(huán),而break卻不能做到這點(diǎn)。2022/12/2627非結(jié)構(gòu)化語句之gotogoto被稱為2022/12/2928#include“stdio.h”main(){floatscore,average=0;
intn=0;
scanf(“%f”,&score);/*輸入第一個(gè)學(xué)生的分?jǐn)?shù)*/if(score<0)gotoend;/*表達(dá)式為非0,轉(zhuǎn)移到end標(biāo)號(hào)處*/loop:average+=score;
n++;
scanf(“%f”,&score);
if(score>=0)/*表達(dá)式為非0,轉(zhuǎn)移到loop標(biāo)號(hào)處*/gotoloop;
average=average/n;/*求平均成績(jī)average*/end:printf(“%6.2f”,average);/*輸出平均成績(jī),保留兩位小數(shù)*/}2022/12/2628#include“stdio.h”2022/12/2929 5.5循環(huán)的嵌套
在循環(huán)體語句中又有另一個(gè)完整的循環(huán)結(jié)構(gòu)的形式,稱為循環(huán)的嵌套。嵌套在循環(huán)體內(nèi)的循環(huán)稱語句稱為內(nèi)循環(huán),外面的循環(huán)語句稱為外循環(huán)。如果內(nèi)循環(huán)體中又有嵌套的循環(huán)語句,稱為多層循環(huán)。While、do-while、for三種循環(huán)都可以互相嵌套。
循環(huán)嵌套的程序中,要求內(nèi)循環(huán)必須被包含在外層循環(huán)的循環(huán)體中,不允許出現(xiàn)內(nèi)外層循環(huán)體交叉的情況。2022/12/2629 5.5循環(huán)的嵌套2022/12/2930000102030405101112131415202122232425303132333435404142434445505152535455輸出結(jié)果:執(zhí)行語句段:for(i=0;i<6;i++)
{
for(j=0;j<6;j++)printf(“%3d%3d”,i,j);
putchar(‘\n’);
}2022/12/2630000102030405輸2022/12/2931循環(huán)嵌套舉例問題:輸出圖形*********************2022/12/2631循環(huán)嵌套舉例問題:輸出圖形2022/12/2932分析:一共6行,每行的‘*’數(shù)目與行號(hào)相同算法:行用i表示,
當(dāng)i<=6do{輸出i個(gè)‘*’換行
}inti,j;for(i=1;i<7;i++){printf("\n");for(j=1;j<=i;j++)
putchar('*');}2022/12/2632分析:一共6行,每行的‘*’2022/12/2933
循環(huán)嵌套舉例問題:輸出圖形****************
2022/12/2633
循環(huán)嵌套舉例問題:輸出圖形2022/12/2934循環(huán)嵌套分析:一共4行,第i行輸出的空格數(shù)為:(7-i+1)/2
第i行輸出i*2-1個(gè)‘*’,算法:
當(dāng)i<=7do{輸出(7-i+1)/2個(gè)空格;
輸出i個(gè)‘*’換行;i+=2;}2022/12/2634循環(huán)嵌套分析:一共4行,2022/12/2935main()
{
inti,j;
for(i=1;i<=7;i+=2)
{printf(“\n”);
for(j=1;j<=(7-i+1)/2;j++)
putchar(‘’);/*輸出(7-i+1)/2個(gè)空格*/
for(j=1;j<=i;j++)
putchar(’*’);/*輸出i個(gè)‘*’*/}
getch();
}2022/12/2635main()
{
inti,j2022/12/2936復(fù)合程序結(jié)構(gòu)C語言允許循環(huán)語句與分支結(jié)構(gòu)語句聯(lián)用,即在循環(huán)體包含一個(gè)完整的分支結(jié)構(gòu),這樣的程序結(jié)構(gòu)被稱為復(fù)合程序結(jié)構(gòu)。復(fù)合程序結(jié)構(gòu)同樣必須做到嵌套層次清楚,決不允許出現(xiàn)嵌套層次之間相互交叉的情況。2022/12/2636復(fù)合程序結(jié)構(gòu)C語言允許2022/12/2937
例:給多個(gè)學(xué)生的成績(jī)?cè)u(píng)級(jí)。#include<stdio.h>
#include<conio.h>
main()
{inti,score;
scanf("%d",&score);
while(score>=0)
{switch(score/10)
{case10:
case9:printf("%d:A\n",score);break;
case8:
case7:printf("%d:B\n",score);break;
case6:printf("%d:C\n",score);break;
default:printf("%d:D\n",score);
}
scanf(“%d”,&score);/*輸入下一個(gè)學(xué)生的成績(jī)*/
}
}
while結(jié)構(gòu)中嵌套了一個(gè)多分支選擇結(jié)構(gòu)。2022/12/2637例:給多個(gè)學(xué)生的成績(jī)?cè)u(píng)級(jí)。2022/12/29385.6復(fù)合程序結(jié)構(gòu)舉例例1目標(biāo):輸入一個(gè)年號(hào),判斷是否為閏年。算法:能被4整除且不是100的倍數(shù),或者能被400整除。2022/12/26385.6復(fù)合程序結(jié)構(gòu)舉例例12022/12/29392022/12/26392022/12/2940#include<stdio.h>
voidmain()
{intyear,leap;
printf(“Enteryear:”);
scanf(“%d”,&year);
if(year%400==0)
leap=1;/*是閏年leap置成1*/
else
{if(year%4==0&&year%100!=0)leap=1;
elseleap=0;/*不是閏年leap置成0*/
}
if(leap==1)printf(“%d:isaleapyear.”,year);
elseprintf(“%disnotaleapyear”,year);
}2022/12/2640#include<stdio.h>2022/12/2941例2目標(biāo):找出3至1000內(nèi)的全部的質(zhì)數(shù)。算法:從i=3開始做分別用2,3,4,…i-1除i,如果i被某個(gè)數(shù)整除,i不是素?cái)?shù)。i++;測(cè)試下一個(gè)i;2022/12/2641例22022/12/2942#include<math.h>
main()
{inti,j,count,flag;/*用flag作標(biāo)志*/
count=0;
for(i=3;i<=1000;i++)
{flag=0;/*設(shè)標(biāo)志為0*/
for(j=2;j<=sqrt(i);j++)
{if(i%j==0)/*用j測(cè)試i*/
flag=1;/*不是素?cái)?shù),設(shè)標(biāo)志為1*/
}/*i測(cè)試完畢*/
if(flag==0)/*i是素?cái)?shù)*/
{printf(“%4d,”,i);count++;
if(count%8==0)printf(“\n”);/*每輸出8個(gè)素?cái)?shù)就換行*/
}
}/*測(cè)試下一個(gè)i*/
}2022/12/2642#include<math.h>
2022/12/2943第五章循環(huán)結(jié)構(gòu)5.1while語句5.2do-while語句5.3for語句5.4break、continue和goto語句5.5循環(huán)的嵌套5.6復(fù)合結(jié)構(gòu)程序舉例C語言程序設(shè)計(jì)教程2022/12/261第五章循環(huán)結(jié)構(gòu)5.1whil2022/12/2944本章重點(diǎn)、難點(diǎn)內(nèi)容一、重點(diǎn):1)3種循環(huán)語句的語法結(jié)構(gòu)及其使用時(shí)的區(qū)別;
2)循環(huán)結(jié)束條件表達(dá)式的構(gòu)造;
3)for語句的使用方法;二、難點(diǎn):1)循環(huán)控制變量的使用及循環(huán)結(jié)束條件的設(shè)定;
2)for語句的幾種不同使用方法;
3)break、continue語句的使用;
4)循環(huán)嵌套;2022/12/262本章重點(diǎn)、難點(diǎn)內(nèi)容一、重點(diǎn):1)3種循2022/12/2945C語言有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)。2022/12/263C語言有whil2022/12/29465.1while語句while語句是通過判斷循環(huán)控制條件是否滿足來決定是否繼續(xù)循環(huán)的語句。一般形式:
while(條件表達(dá)式)
{循環(huán)體語句序列}
條件表達(dá)式為循環(huán)控制條件,當(dāng)表達(dá)式的值為非零(滿足循環(huán)條件),就執(zhí)行循環(huán)體語句,當(dāng)表達(dá)式的值為零,就退出循環(huán)。2022/12/2645.1while語句while語2022/12/2947while語句執(zhí)行流程表達(dá)式語句真假表達(dá)式首先計(jì)算條件表達(dá)式語句如果表達(dá)式的值為非零,執(zhí)行語句表達(dá)式重新計(jì)算表達(dá)式如果表達(dá)式的值為0,則跳出循環(huán)如果表達(dá)式的值一開始就為0,則語句一次也會(huì)被不執(zhí)行。2022/12/265while語句執(zhí)行流程表達(dá)式語句真假表2022/12/2948while語句舉例問題:求n個(gè)學(xué)生的平均成績(jī)(先考慮程序的輸入及輸出)算法:1輸入n;i=1,average=0;2輸入第i個(gè)學(xué)生的score;3average+=score;i++;4當(dāng)i<=n重復(fù)做2;5average/=n;2022/12/266while語句舉例問題:求n個(gè)學(xué)生的2022/12/2949main(){intn,i=1;float
score,average=0;printf(“\nEntern:”);scanf(“%d”,&n);while(i<=n){printf(“\nEnterscore:”);scanf(“%f”,&score);average+=score;i++;}average/=n;printf(“\naverage=%f”,average);}2022/12/267main()2022/12/29505.2
do—while語句
do—while語句的一般形式是:
do{
循環(huán)體語句
}while(條件表達(dá)式)
特點(diǎn):首先執(zhí)行語句,再通過判斷循環(huán)控制條件是否滿足來決定是否繼續(xù)循環(huán)。2022/12/2685.2do—while語句do—w2022/12/2951do—while語句執(zhí)行流程首先計(jì)算語句,再計(jì)算表達(dá)式。如果表達(dá)式的值為非零,繼續(xù)下一次循環(huán)如果表達(dá)式的值為0,則跳出循環(huán)如果表達(dá)式的值一開始就為0,也會(huì)執(zhí)行一次語句。循環(huán)體語句條件表達(dá)式真假2022/12/269do—while語句執(zhí)行流程首先計(jì)算語2022/12/2952main(){intscore,n,i=1;floataverage=0;printf(“Entern:”);scanf(“%d\n”,&n);do{printf(“\nEnterscore:”);scanf(“%d”,&score);average+=score;i++;}while(i<=n);average/=n;printf(“\naverage=%f”,average);}思考:與前面用While語句構(gòu)成的循環(huán)在程序運(yùn)行結(jié)果上有何區(qū)別?2022/12/2610main()2022/12/2953注意:循環(huán)控制變量值在循環(huán)體內(nèi)必須有所改變。例如:i=1;while(i<=100)
putchar(‘*’);i++;這個(gè)循環(huán)永遠(yuǎn)不會(huì)結(jié)束,因?yàn)檠h(huán)控制變量i沒有在循環(huán)體內(nèi)被改變,i++;不屬于循環(huán)語句。i++應(yīng)該在循環(huán)體內(nèi)改變:i=1;while(i<=100){putchar(‘*’);
i++;}2022/12/2611注意:循環(huán)控制變量值在循環(huán)體內(nèi)必須有2022/12/2954 5.3for循環(huán)語句for(表達(dá)式1;表達(dá)式2;表達(dá)式3)循環(huán)體語句這是C語言最有特點(diǎn)的循環(huán)語句。使用最為靈活方便。一般形式:2022/12/2612 5.3for循環(huán)語句for(表2022/12/2955先執(zhí)行表達(dá)式1(初值表達(dá)式),用于循環(huán)開始前設(shè)置變量初值。接著計(jì)算表達(dá)式2(循環(huán)條件控制表達(dá)式),根據(jù)其真假值決定是否繼續(xù)循環(huán)。執(zhí)行循環(huán)體語句。最后執(zhí)行表達(dá)式3(循環(huán)控制變量修改)。表達(dá)式1表達(dá)式2循環(huán)體表達(dá)式3執(zhí)行流程真假2022/12/2613先執(zhí)行表達(dá)式1(初值表達(dá)式),用于循2022/12/2956利用for語句重新設(shè)計(jì)求平均成績(jī)程序main(){intn,score,i;floataverage=0;printf(“\nEntern:”);scanf(“%d”,&n);for(i=1;i<=n;i++){printf(“\nEnterscore:”);scanf(“%d”,&score);average+=score;}average/=n;printf(“\naverage=%f”,average);}2022/12/2614利用for語句重新設(shè)計(jì)求平均成績(jī)程序2022/12/2957例:求1+2+…+99#include(stdio.h)
main()
{inti,s=0;/*s清0*/
for(i=1;i<100;i++)
s=s+i;
printf(“s=%d”,i);
}i=1i<100s=s+ii++2022/12/2615例:求1+2+…+99#inc2022/12/2958
循環(huán)語句的多種表示for(i=0;i<100;i++)s=s+i;main()
{inti=1,s=0;
do
{s=s+i;i++;}while(i<100);printf(“s=%d”,i);
}i=0i<100s=s+ii++main()
{inti,s=0;
i=0;
while(i<100)
{s=s+i;
i++;
}
printf(“s=%d”,i);
}2022/12/2616 循環(huán)語句的多種表示for(i=02022/12/2959for語句的表達(dá)式可以省略如已先給變量賦過值。則可以省略表達(dá)式1。for(;i<100;i++)如果想在循環(huán)內(nèi)部改變變量的值,則可以省略表達(dá)式3。for(i=0;i<100;)如果省略表達(dá)式1,3的話就相當(dāng)于while。for(;i<100;)while(i<100)全部省略就是死循環(huán)。for(;;)(需要用break跳出)2022/12/2617for語句的表達(dá)式可以省略如已先給變2022/12/2960逗號(hào)表達(dá)式
逗號(hào)運(yùn)算符的主要應(yīng)用就在for語句中。for語句中的表達(dá)式1和表達(dá)式3可以是逗號(hào)表達(dá)式,特別是有兩個(gè)循環(huán)變量參與對(duì)循環(huán)的控制時(shí)。表達(dá)式1和表達(dá)式3為逗號(hào)表達(dá)式,將使程序顯得非常清晰。例:for(i=1,j=10;i<=j;i++,j--)2022/12/2618逗號(hào)表達(dá)式逗號(hào)運(yùn)算符的主2022/12/2961for(i=a,j=b;i<=j;i++,j--)舉例問題:求1/100+2/99+…+1floats=0.0;inti,j;for(i=1,j=100;i<=j;i++,j--)s=s+1.0*i/j;2022/12/2619for(i=a,j=b;i<=j;2022/12/2962
循環(huán)語句流程圖表達(dá)式語句真假語句表達(dá)式表達(dá)式1表達(dá)式2循環(huán)體表達(dá)式3while循環(huán)do—while循環(huán)for循環(huán)2022/12/2620 循環(huán)語句流程圖表達(dá)式語句真假語句表2022/12/2963循環(huán)語句設(shè)計(jì)容易出錯(cuò)的幾個(gè)環(huán)節(jié)一、While,Do-While循環(huán):
1)循環(huán)條件判定表達(dá)式設(shè)計(jì)不當(dāng);
2)循環(huán)體內(nèi)無使循環(huán)條件趨于假的語句;
3)(循環(huán)條件表達(dá)式)后的分號(hào),while語句不能加,do-while則要加;4)用于界定循環(huán)體語句的花括號(hào)不使用或者使用不當(dāng);
5)循環(huán)控制變量未初始化;2022/12/2621循環(huán)語句設(shè)計(jì)容易出錯(cuò)的幾個(gè)環(huán)節(jié)一、W2022/12/2964二、for語句循環(huán):
1)循環(huán)條件判定表達(dá)式設(shè)計(jì)不當(dāng);
2)用于界定循環(huán)體語句的花括號(hào)不使用或者使用不當(dāng);
3)表達(dá)式3后面不能有分號(hào)。建議:在進(jìn)行循環(huán)設(shè)計(jì)時(shí)盡量使用for語句。2022/12/2622二、for語句循環(huán):2022/12/29655.4break、continue、goto語句
這一類語句的功能是改變程序的結(jié)構(gòu),使程序從其所在的位置轉(zhuǎn)向另一處。這類語句是非結(jié)構(gòu)化語句。一般而言,在這3個(gè)語句前面都應(yīng)該有一個(gè)條件判定2022/12/26235.4break、continu2022/12/2966非結(jié)構(gòu)化語句之break
它的作用是把流程轉(zhuǎn)向所在結(jié)構(gòu)之后。在switch分支結(jié)構(gòu)中,使用break語句可以使流程跳出switch分支結(jié)構(gòu)。同樣的,在循環(huán)結(jié)構(gòu)中,使用break語句使流程跳出當(dāng)前的循環(huán)層,轉(zhuǎn)向執(zhí)行該循環(huán)結(jié)構(gòu)后面的語句。
簡(jiǎn)單的說就是跳出當(dāng)前所在的結(jié)構(gòu)main()
{
ints=0,i=1:
for(;;)
{s=s+i;i++;
if(i>100)break;/*如果i>100,則退出循環(huán)*/
}
printf(“s=%d”,s);
}
本程序中,當(dāng)i>100時(shí),強(qiáng)行終止for循環(huán),繼續(xù)執(zhí)行for語句下一條語句2022/12/2624非結(jié)構(gòu)化語句之break它的作2022/12/2967
非結(jié)構(gòu)化語句之continuecontinue語句被稱為繼續(xù)語句。執(zhí)行continue語句,使本次循環(huán)提前結(jié)束,即跳過循環(huán)體中continrue語句下面的尚未執(zhí)行的循環(huán)體語句,但不結(jié)束整個(gè)循環(huán),繼續(xù)進(jìn)行下一次循環(huán)的條件判別,條件為真,繼續(xù)進(jìn)行執(zhí)行循環(huán)語句。該語句形式為:continue;2022/12/2625 非結(jié)構(gòu)化語句之continueco2022/12/2968例5.4統(tǒng)計(jì)某個(gè)班級(jí)一門課程學(xué)生及格的人數(shù)main(){intn,i=1,j=0;floatscore;printf(“n=:”);scanf(“%d\n”,&n);while(i<=n){printf(“enterscore:”);scanf(“%f\n”,&score);i++;/*請(qǐng)思考該語句能否放在j++語句處
if(score<60)
continue;
j++;}printf(“%d\n”,j);}2022/12/2626例5.4統(tǒng)計(jì)某個(gè)班級(jí)一門課程學(xué)生及格2022/12/2969非結(jié)構(gòu)化語句之gotogoto被稱為無條件轉(zhuǎn)移語句。由兩部分組成goto標(biāo)號(hào);和標(biāo)號(hào):語句它最大的好處就是可以一下子跳出多重循環(huán),而break卻不能做到這點(diǎn)。2022/12/2627非結(jié)構(gòu)化語句之gotogoto被稱為2022/12/2970#include“stdio.h”main(){floatscore,average=0;
intn=0;
scanf(“%f”,&score);/*輸入第一個(gè)學(xué)生的分?jǐn)?shù)*/if(score<0)gotoend;/*表達(dá)式為非0,轉(zhuǎn)移到end標(biāo)號(hào)處*/loop:average+=score;
n++;
scanf(“%f”,&score);
if(score>=0)/*表達(dá)式為非0,轉(zhuǎn)移到loop標(biāo)號(hào)處*/gotoloop;
average=average/n;/*求平均成績(jī)average*/end:printf(“%6.2f”,average);/*輸出平均成績(jī),保留兩位小數(shù)*/}2022/12/2628#include“stdio.h”2022/12/2971 5.5循環(huán)的嵌套
在循環(huán)體語句中又有另一個(gè)完整的循環(huán)結(jié)構(gòu)的形式,稱為循環(huán)的嵌套。嵌套在循環(huán)體內(nèi)的循環(huán)稱語句稱為內(nèi)循環(huán),外面的循環(huán)語句稱為外循環(huán)。如果內(nèi)循環(huán)體中又有嵌套的循環(huán)語句,稱為多層循環(huán)。While、do-while、for三種循環(huán)都可以互相嵌套。
循環(huán)嵌套的程序中,要求內(nèi)循環(huán)必須被包含在外層循環(huán)的循環(huán)體中,不允許出現(xiàn)內(nèi)外層循環(huán)體交叉的情況。2022/12/2629 5.5循環(huán)的嵌套2022/12/2972000102030405101112131415202122232425303132333435404142434445505152535455輸出結(jié)果:執(zhí)行語句段:for(i=0;i<6;i++)
{
for(j=0;j<6;j++)printf(“%3d%3d”,i,j);
putchar(‘\n’);
}2022/12/2630000102030405輸2022/12/2973循環(huán)嵌套舉例問題:輸出圖形*********************2022/12/2631循環(huán)嵌套舉例問題:輸出圖形2022/12/2974分析:一共6行,每行的‘*’數(shù)目與行號(hào)相同算法:行用i表示,
當(dāng)i<=6do{輸出i個(gè)‘*’換行
}inti,j;for(i=1;i<7;i++){printf("\n");for(j=1;j<=i;j++)
putchar('*');}2022/12/2632分析:一共6行,每行的‘*’2022/12/2975
循環(huán)嵌套舉例問題:輸出圖形****************
2022/12/2633
循環(huán)嵌套舉例問題:輸出圖形2022/12/2976循環(huán)嵌套分析:一共4行,第i行輸出的空格數(shù)為:(7-i+1)/2
第i行輸出i*2-1個(gè)‘*’,算法:
當(dāng)i<=7do{輸出(7-i+1)/2個(gè)空格;
輸出i個(gè)‘*’換行;i+=2;}2022/12/2634循環(huán)嵌套分析:一共4行,2022/12/2977main()
{
inti,j;
for(i=1;i<=7;i+=2)
{printf(“\n”);
for(j=1;j<=(7-i+1)/2;j++)
putchar(‘’);/*輸出(7-i+1)/2個(gè)空格*/
for(j=1;j<=i;j++)
p
溫馨提示
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年度智能硬件合伙創(chuàng)業(yè)合同4篇
- 2025年外研版三年級(jí)起點(diǎn)第二冊(cè)地理下冊(cè)階段測(cè)試試卷
- 二零二五版智能門禁系統(tǒng)安全性能檢測(cè)合同4篇
- 2025年度智能車展位租賃合同模板4篇
- 6 地球的形狀(說課稿)-2023-2024學(xué)年三年級(jí)科學(xué)下冊(cè) 教科版
- 2025年度裝配式建筑構(gòu)件生產(chǎn)與施工承包合同4篇
- 二零二五版企業(yè)并購(gòu)股權(quán)交易補(bǔ)充協(xié)議書3篇
- 2025年度廚房設(shè)備研發(fā)與制造合作協(xié)議范本4篇
- 2025年度新能源汽車零部件研發(fā)與制造廠房承包合同4篇
- 二零二五版美發(fā)店安全教育與應(yīng)急預(yù)案制定合同4篇
- 春節(jié)行車安全常識(shí)普及
- 電機(jī)維護(hù)保養(yǎng)專題培訓(xùn)課件
- 汽車租賃行業(yè)利潤(rùn)分析
- 春節(jié)拜年的由來習(xí)俗來歷故事
- 2021火災(zāi)高危單位消防安全評(píng)估導(dǎo)則
- 佛山市服務(wù)業(yè)發(fā)展五年規(guī)劃(2021-2025年)
- 房屋拆除工程監(jiān)理規(guī)劃
- 醫(yī)院保安服務(wù)方案(技術(shù)方案)
- 高效能人士的七個(gè)習(xí)慣:實(shí)踐應(yīng)用課程:高級(jí)版
- 小數(shù)加減法計(jì)算題100道
- 通信電子線路(哈爾濱工程大學(xué))智慧樹知到課后章節(jié)答案2023年下哈爾濱工程大學(xué)
評(píng)論
0/150
提交評(píng)論