版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
C語(yǔ)言Part3forNOI選擇結(jié)構(gòu)循環(huán)結(jié)構(gòu)關(guān)系運(yùn)算符及其優(yōu)先次序<(小于)<=(小于或等于)>(大于)>=(大于或等于)==(等于)!=(不等于)優(yōu)先級(jí)相同(高)優(yōu)先級(jí)相同(低)算術(shù)運(yùn)算符(+-*/%)>關(guān)系運(yùn)算符>賦值運(yùn)算符(=及其擴(kuò)展賦值運(yùn)算符)
關(guān)系表達(dá)式用關(guān)系運(yùn)算符將兩個(gè)表達(dá)式(可以是算術(shù)表達(dá)式或關(guān)系表達(dá)式,邏輯表達(dá)式,賦值表達(dá)式,字符表達(dá)式)接起來(lái)的式子,稱關(guān)系表達(dá)式例:a>b,a+b>b+c,(a=3)>(b=5),’a’<‘b’,(a>b)>(b<c)關(guān)系表達(dá)式的值是一個(gè)邏輯值,即“真”或“假”。例:關(guān)系表達(dá)式”a>b”的值為“真”,表達(dá)式的值為1。C89語(yǔ)言中沒有專用的邏輯值,1代表真,0代表假例:c>a+bc>(a+b)a>b==c(a>b)==ca==b<ca==(b<c)a=b>ca=(b>c)邏輯運(yùn)算符和優(yōu)先次序&&(邏輯與)相當(dāng)于其他語(yǔ)言中的AND||(邏輯或)相當(dāng)于其他語(yǔ)言中的OR!(邏輯非)相當(dāng)于其他語(yǔ)言中的NOT例:a&&b若a,b為真,則a&&b為真。
a||b若a,b之一為真,則a||b為真。!a若a為真,則!a為假。優(yōu)先次序:!(非)>&&(與)>||(非)邏輯運(yùn)算符中的“&&”和“||”低于關(guān)系運(yùn)算符,“!”高于算術(shù)運(yùn)算符先,邏輯運(yùn)算符非再,算術(shù)運(yùn)算符再,關(guān)系運(yùn)算符后,邏輯運(yùn)算符與、或最后,賦值運(yùn)算符邏輯表達(dá)式1用邏輯運(yùn)算符將關(guān)系表達(dá)式或邏輯量連接起來(lái)的式子就邏輯表達(dá)式邏輯表達(dá)式的值應(yīng)該是一個(gè)邏輯量“真”或“假”。例:設(shè)a=4,b=5:!a的值為0a&&b的值為1a||b的值為1!a||b的值為14&&0||2的值為1任何非零的數(shù)值被認(rèn)作“真”邏輯表達(dá)式2例:5>3&&8<4-!0
自左向右運(yùn)算
1&&0邏輯值為08<3邏輯值為04-1值為3!0邏輯值為15>3邏輯值為1表達(dá)式值為0先,邏輯運(yùn)算符非再,算術(shù)運(yùn)算符再,關(guān)系運(yùn)算符后,邏輯運(yùn)算符與、或(5>3)&&(8<(4-(!0)))
例:!a&&b||x>y&&c((!a)&&b)||((x>y)&&c)邏輯表達(dá)式3在邏輯表達(dá)式的求解中,并不是所有的邏輯運(yùn)算符都要被執(zhí)行。(1)a&&b&&c只有a為真時(shí),才需要判斷b的值,只有a和b都為真時(shí),才需要判斷c的值。(2)a||b||c只要a為真,就不必判斷b和c的值,只有a為假,才判斷b。a和b都為假才判斷c例:(m=a>b)&&(n=c>d)當(dāng)a=1,b=2,c=3,d=4,m和n的原值為1時(shí),由于“a>b”的值為0,因此m=0,而“n=c>d”不被執(zhí)行,因此n的值不是0而仍保持原值1。邏輯表達(dá)式4
用邏輯表達(dá)式來(lái)表示閏年的條件能被4整除,但不能被100整除。能被4整除,又能被400整除?
(year%4==0&&year%100!=0)||year%400==0值為真(1)是閏年,否則為非閏年。非閏年:
(year%4!=0)||(year%100==0&&year%400!=0)if語(yǔ)句的三種基本形式1(1)if(表達(dá)式)語(yǔ)句
例5.1:charch;ch=getchar();if(ch>='a'&&ch<='z')ch=ch-'a'+'A';putchar(ch);表達(dá)式語(yǔ)句真(非0)假(0)charch;ch=getchar();if(ch>='a'&&ch<='z'){ch=ch-'a'+'A';putchar(ch);}if語(yǔ)句的三種基本形式2(2)if(表達(dá)式)語(yǔ)句1else語(yǔ)句2例:if(x>y)printf(“%d”,x);elseprintf(“%d”,y);
條件
語(yǔ)句1
語(yǔ)句2非00if語(yǔ)句的三種基本形式3(3)if(表達(dá)式1)語(yǔ)句1elseif(表達(dá)式2)語(yǔ)句2elseif(表達(dá)式3)語(yǔ)句3
……elseif(表達(dá)式m)語(yǔ)句melse語(yǔ)句nif語(yǔ)句的三種基本形式4intnumber;floatcost,price,total;printf("Pleaseenternumberandprice:\n");scanf("%d,%1f",&number,&price);if(number>500)cost=0.15;elseif(number>300)cost=0.10;elseif(number>100)cost=0.075;elseif(number>50)cost=0.05;elsecost=0;total=number*price*(1-cost);printf("Total=%10.2f\n",total);例5.2:為了促銷,對(duì)購(gòu)買貨物多的顧客有優(yōu)惠:凡是購(gòu)買50件及以上的,優(yōu)惠5%;凡是購(gòu)買100件及以上的,優(yōu)惠7.5%;凡是購(gòu)買300件及以上的,優(yōu)惠10%;凡是購(gòu)買500件及以上的,優(yōu)惠15%。要求編程序,用戶輸入購(gòu)買數(shù)量和單價(jià),程序輸入應(yīng)付貨款。switch(表達(dá)式){ case常量表達(dá)式1:語(yǔ)句1 case常量表達(dá)式2:語(yǔ)句2 …… case常量表達(dá)式n:語(yǔ)句n default:語(yǔ)句n+1}Switch語(yǔ)句intnumber;chartype;floatcost,price,total;printf("Pleaseenternumber,type(A,B,C,D)andprice:\n");scanf("%d,%c,%1f",&number,&type,&price);switch(type){case'A':cost=0.15;break;case'B':cost=0.10;break;case'C':cost=0.075;break;case'D':cost=0.05;break;default:cost=0;}total=number*price*(1-cost);printf("Total=%10.2f\n",total);字符型或者數(shù)值型每個(gè)常量表達(dá)式值必須互不相同C99允許1023個(gè)caseCase前允許執(zhí)行語(yǔ)句;如果沒有break,則按順序執(zhí)行,因此多個(gè)case可以共用一條執(zhí)行語(yǔ)句if語(yǔ)句的三種基本形式513種形式的if語(yǔ)句中在if后面都有表達(dá)式,一般為邏輯表達(dá)式或關(guān)系表達(dá)式。2第二,第三種形式的if語(yǔ)句中,在每個(gè)else前面有一個(gè)分號(hào),整個(gè)語(yǔ)句結(jié)束處有一個(gè)分號(hào)。3在if和else后面可以只含有一個(gè)內(nèi)嵌的操作語(yǔ)句,也可以有多個(gè)操作語(yǔ)句,此時(shí)用花括號(hào)將幾個(gè)語(yǔ)句括起來(lái)成為一個(gè)復(fù)合語(yǔ)句。if語(yǔ)句的三種基本形式5例5.3輸入兩個(gè)實(shí)數(shù),按代數(shù)值由小到大的順序輸出這兩個(gè)數(shù)。floata,b,t;scanf("%f,%f",&a,&b);if(a>b){t=a;a=b;b=t;}printf("%5.2f,%5.2f\n",a,b);yna>b交換兩個(gè)數(shù)if語(yǔ)句的三種基本形式5例5.4輸入三個(gè)數(shù),要求按由小到大的順序輸出。floatsort[3];inti;for(i=0;i<3;i++){if(i==2)scanf("%f",(sort+i));elsescanf("%f,",(sort+i));}floatswap;if(sort[0]>sort[1]){swap=sort[1];sort[1]=sort[0];sort[0]=swap;}if(sort[0]>sort[2]){swap=sort[2];sort[2]=sort[0];sort[0]=swap;}if(sort[1]>sort[2]){swap=sort[2];sort[2]=sort[1];sort[1]=swap;}for(i=0;i<3;i++){printf("sort[%d]=%f\n",i,sort[i]);}數(shù)1>數(shù)2交換數(shù)1和數(shù)2取兩個(gè)數(shù)if語(yǔ)句嵌套在if語(yǔ)句中又包含一個(gè)或多個(gè)if語(yǔ)句稱為if語(yǔ)句的嵌套。形式:If()
if()語(yǔ)句1 else語(yǔ)句2Else
if()語(yǔ)句3 else語(yǔ)句4內(nèi)嵌ifElse總是與它上面的,最近的,同一復(fù)合語(yǔ)句中的,未配對(duì)的if語(yǔ)句配對(duì)當(dāng)if和else數(shù)目不同時(shí),可以加花括號(hào)來(lái)確定配對(duì)關(guān)系條件語(yǔ)句的嵌套層數(shù):C99為63,C89為8if語(yǔ)句嵌套例5.5有一個(gè)函數(shù),編一程序,輸入一個(gè)x值,輸出y值。算法1:算法1:
輸入x輸入x
若x<0,則y=-1若x<0,則y=-1
若x=0,則y=0否則: 若x>0,則y=1若x=0,則y=0
輸出y若x>0,則y=1
輸出y
if語(yǔ)句嵌套上例中的程序段有四個(gè),請(qǐng)判斷哪個(gè)是正確的?程序1:程序2:
if(x<0)if(x>=0)Y=-1;if(x>0)y=1;elseelsey=0;if(x==0)y=0;elsey=-1;elsey=1;程序3:程序4:y=-1;y=0;if(x!=0)if(x>=0)If(x>0)y=1;if(x>0)y=1;elsey=0;elsey=-1;正確正確條件運(yùn)算符格式表達(dá)式1?表達(dá)式2∶表達(dá)式3功能判斷表達(dá)式1的值,如果成立就執(zhí)行表達(dá)式2,否則就執(zhí)行表達(dá)式3使用場(chǎng)合若在if語(yǔ)句中,當(dāng)被判別的表達(dá)式的值為“真”或“假”時(shí),都執(zhí)行一個(gè)賦值語(yǔ)句且向同一個(gè)變量賦值時(shí),可以用一個(gè)條件運(yùn)算符來(lái)處理。max=(a>b)?a∶b;條件運(yùn)算符優(yōu)先級(jí)高于賦值運(yùn)算符,低于關(guān)系運(yùn)算符和算術(shù)運(yùn)算符。
條件運(yùn)算符的結(jié)合方向?yàn)椤白杂抑磷蟆薄?/p>
表達(dá)式2”和“表達(dá)式3”不僅可以是數(shù)值表達(dá)式,還可以是賦值表達(dá)式或函數(shù)表達(dá)式。條件表達(dá)式中,表達(dá)式1的類型可以與表達(dá)式2和表達(dá)式3的類型不同。
條件運(yùn)算符例5.6輸入一個(gè)字符,判別它是否大寫字母,如果是,將它轉(zhuǎn)換成小寫字母;如果不是,不轉(zhuǎn)換。然后輸出最后得到的字符。
charch;scanf("%c",&ch);ch=(ch>='A'&&ch<='Z')?(ch+32):ch;printf("%c\n",ch);
如果字符變量ch的值為大寫字母,則條件表達(dá)式的值為(ch+32),即相應(yīng)的小寫字母。如果ch的值不是大寫字母,則條件表達(dá)式的值為ch,即不進(jìn)行轉(zhuǎn)換。
例5.7運(yùn)輸公司對(duì)用戶計(jì)算運(yùn)費(fèi)路程(s)越遠(yuǎn),每公里運(yùn)費(fèi)越低。標(biāo)準(zhǔn)如下:s<250km沒有折扣250≤s<5002%折扣500≤s<10005%折扣1000≤s<20008%折扣2000≤s<300010%折扣3000≤s15%折扣設(shè)每公里每噸貨物的基本運(yùn)費(fèi)為p,貨物重為w,距離為s,折扣為d,則總運(yùn)費(fèi)f的計(jì)算公式為:f=p*w*s*(1-d)
例5.7源代碼intc,s;floatp,w,d,f;printf("Pleaseinputbasicfee,weight,distance:\n");scanf("%f,%f,%d",&p,&w,&s);if(s>=3000)c=12;elsec=s/250;switch(c){case0:d=0;break;case1:d=2;break;case2:case3:d=5;break;case4:case5:case6:case7:d=8;break;case8:case9:case10:case11:d=10;break;case12:d=15;break;}f=p*w*s*(1-d/100.0);printf("freight=%15.4f\n",f);選擇結(jié)構(gòu)循環(huán)結(jié)構(gòu)什么是循環(huán)為什么要使用循環(huán)?問(wèn)題1:?jiǎn)栴}2:求學(xué)生平均成績(jī)
分?jǐn)?shù)相加后除以課數(shù)
在許多問(wèn)題中需要用到循環(huán)控制。循環(huán)結(jié)構(gòu)是結(jié)構(gòu)化程序設(shè)計(jì)的基本結(jié)構(gòu)之一,它和順序結(jié)構(gòu)、選擇結(jié)構(gòu)共同作為各種復(fù)雜程序的基本構(gòu)造單元。goto語(yǔ)句goto語(yǔ)句為無(wú)條件轉(zhuǎn)向語(yǔ)句,它的一般形式為
goto語(yǔ)句標(biāo)號(hào);語(yǔ)句標(biāo)號(hào)用標(biāo)識(shí)符表示,它的定名規(guī)則與變量名相同,即由字母、數(shù)字和下劃線組成,其第一個(gè)字符必須為字母或下劃線。
例如:gotolabel_1;合法;goto123;不合法.goto語(yǔ)句
結(jié)構(gòu)化程序設(shè)計(jì)方法主張限制使用goto語(yǔ)句,因?yàn)闉E用goto語(yǔ)句將使程序流程無(wú)規(guī)律、可讀性差.一般來(lái)說(shuō),可以有兩種用途:(1)與if語(yǔ)句一起構(gòu)成循環(huán)結(jié)構(gòu);(2)從循環(huán)體中跳轉(zhuǎn)到循環(huán)體外。
但是這種用法不符合結(jié)構(gòu)化原則,一般不宜采用,只有在不得已時(shí)(例如能大大提高效率)才使用.例6.1用if語(yǔ)句和goto語(yǔ)句構(gòu)成循環(huán),求1到100的和
inti=1,sum=0;
loop:
if(i<=100)
{
sum=sum+i;
i++;
gotoloop;
}
printf("sum:%d\n",sum);說(shuō)明:這里用的是“當(dāng)型”循環(huán)結(jié)構(gòu),當(dāng)滿足“i<=100”時(shí)執(zhí)行花括弧內(nèi)的循環(huán)體。運(yùn)行結(jié)果:5050goto語(yǔ)句while語(yǔ)句while語(yǔ)句用來(lái)實(shí)現(xiàn)“當(dāng)型”循環(huán)結(jié)構(gòu)。一般形式:
while(表達(dá)式)語(yǔ)句當(dāng)表達(dá)式為非0值時(shí),執(zhí)行while語(yǔ)句中的內(nèi)嵌語(yǔ)句。其特點(diǎn)是:先判斷表達(dá)式,后執(zhí)行語(yǔ)句。例6.1-1求1到100的和
inti=1,sum=0;
while(i<=100)
{
sum=sum+i;
i++;
}
printf("sum:%d\n",sum);說(shuō)明:(1)循環(huán)體如果包含一個(gè)以上的語(yǔ)句,應(yīng)該用花括弧括起來(lái),以復(fù)合語(yǔ)句形式出現(xiàn).(2)在循環(huán)體中應(yīng)有使循環(huán)趨向于結(jié)束的語(yǔ)句。
while語(yǔ)句do-while語(yǔ)句do-while語(yǔ)句的特點(diǎn):先執(zhí)行循環(huán)體,然后判斷循環(huán)條件是否成立一般形式:
do
循環(huán)體語(yǔ)句
while
(表達(dá)式);執(zhí)行過(guò)程:先執(zhí)行一次指定的循環(huán)體語(yǔ)句,然后判別表達(dá)式,當(dāng)表達(dá)式的值為非零(“真”)時(shí),返回重新執(zhí)行循環(huán)體語(yǔ)句,如此反復(fù),直到表達(dá)式的值等于0為止,此時(shí)循環(huán)結(jié)束。例6.1-2求和Do-while語(yǔ)句inti=1,sum=0;do{sum=sum+i;i++;}while(i<=100);printf("sum:%d\n",sum);在一般情況下,用while語(yǔ)句和用do-while語(yǔ)句處理同一問(wèn)題時(shí),若二者的循環(huán)體部分是一樣的,它們的結(jié)果也一樣。但是,如果while后面的表達(dá)式一開始就為假(0值)時(shí),兩種循環(huán)的結(jié)果是不同的。do-while和while語(yǔ)句比較例6.1-3求和運(yùn)行結(jié)果:1↙sum:5050再運(yùn)行一次:101↙sum:101Do-while和while語(yǔ)句的比較inti,sum=0;scanf("%d",&i);do{sum=sum+i;i++;}while(i<=100);printf("sum:%d\n",sum);inti,sum=0;scanf("%d",&i);while(i<=100){sum=sum+i;i++;};printf("sum:%d\n",sum);運(yùn)行結(jié)果:1↙sum:5050再運(yùn)行一次:101↙sum:0C語(yǔ)言中的for語(yǔ)句使用最為靈活,不僅可以用于循環(huán)次數(shù)已經(jīng)確定的情況,而且可以用于循環(huán)次數(shù)不確定而只給出循環(huán)結(jié)束條件的情況,它完全可以代替while語(yǔ)句。一般形式:
for(表達(dá)式1;表達(dá)式2;表達(dá)式3)語(yǔ)句for語(yǔ)句先求解表達(dá)式1。求解表達(dá)式2,若其值為真(值為非0),則執(zhí)行for語(yǔ)句中指定的內(nèi)嵌語(yǔ)句,然后執(zhí)行面第(3)步。若為假(值為0),則結(jié)束循環(huán),轉(zhuǎn)到第(5)步。求解表達(dá)式3。轉(zhuǎn)回上面第(2)步驟繼續(xù)執(zhí)行。循環(huán)結(jié)束,執(zhí)行for語(yǔ)句下面的一個(gè)語(yǔ)句for語(yǔ)句的執(zhí)行過(guò)程for語(yǔ)句等價(jià)于下列語(yǔ)句:表達(dá)式1;while(表達(dá)式2){語(yǔ)句;表達(dá)式3;}
表達(dá)式2?執(zhí)行語(yǔ)句成立不成立執(zhí)行for循環(huán)之后的語(yǔ)句執(zhí)行表達(dá)式3執(zhí)行表達(dá)式1for語(yǔ)句的一般形式中的“表達(dá)式1”可以省略,此時(shí)應(yīng)在for語(yǔ)句之前給循環(huán)變量賦初值。注意省略表達(dá)式1時(shí),其后的分號(hào)不能省略。如
for(;i<=100;i++)sum=sum+i;
執(zhí)行時(shí),跳過(guò)“求解表達(dá)式1”這一步,其他不變。for語(yǔ)句如果表達(dá)式2省略,即不判斷循環(huán)條件,循環(huán)無(wú)終止地進(jìn)行下去。也就是認(rèn)為表達(dá)式2始終為真。例如:for(i=1;;i++)sum=sum+i;
表達(dá)式1是一個(gè)賦值表達(dá)式,表達(dá)式2空缺。它相當(dāng)于:
i=1;while(1){sum=sum+1;i++;}for語(yǔ)句表達(dá)式3也可以省略,但此時(shí)程序設(shè)計(jì)者應(yīng)另外設(shè)法保證循環(huán)能正常結(jié)束。如:
for(i=1;i<=100;){sum=sum+i;i++;}
在上面的for語(yǔ)句中只有表達(dá)式1和表達(dá)式2,而沒有表達(dá)式3。i++的操作不放在for語(yǔ)句的表達(dá)式3的位置處,而作為循環(huán)體的一部分,效果是一樣的,都能使循環(huán)正常結(jié)束。for語(yǔ)句可以省略表達(dá)式1和表達(dá)式3,只有表達(dá)式2,即只給循環(huán)條件。如:
for(;i<=100;)在這種情況下,完全等同于while語(yǔ)句??梢奻or語(yǔ)句比while語(yǔ)句功能強(qiáng),除了可以給出循環(huán)條件外,還可以賦初值,使循環(huán)變量自動(dòng)增值等。for語(yǔ)句3個(gè)表達(dá)式都可省略,如:
for(;;)語(yǔ)句相當(dāng)于
while(1)語(yǔ)句即不設(shè)初值,不判斷條件(認(rèn)為表達(dá)式2為真值),循環(huán)變量不增值。無(wú)終止地執(zhí)行循環(huán)體。for語(yǔ)句表達(dá)式1可以是設(shè)置循環(huán)變量初值的賦值表達(dá)式,也可以是與循環(huán)變量無(wú)關(guān)的其他表達(dá)式。如:
for(sum=0;i<=100;i++)sum=sum+i;表達(dá)式3也可以是與循環(huán)控制無(wú)關(guān)的任意表達(dá)式。for語(yǔ)句表達(dá)式1和表達(dá)式3也可以是逗號(hào)表達(dá)式,即包含一個(gè)以上的簡(jiǎn)單表達(dá)式,中間用逗號(hào)間隔。如:
for(sum=0,i=1;i<=100;i++)sum=sum+i;或for(i=0,j=100;i<=j;i++,j--)k=i+j;表達(dá)式1和表達(dá)式3都是逗號(hào)表達(dá)式,各包含兩個(gè)賦值表達(dá)式,即同時(shí)設(shè)兩個(gè)初值,使兩個(gè)變量增值在逗號(hào)表達(dá)式內(nèi)按自左至右順序求解,整個(gè)逗號(hào)表達(dá)式的值為最右邊的表達(dá)式的值for語(yǔ)句表達(dá)式2一般是關(guān)系表達(dá)式(如i<=100)或邏輯表達(dá)式(如a<b&&x<y),但也可以是數(shù)值表達(dá)式或字符表達(dá)式,只要其值為非零,就執(zhí)行循環(huán)體for語(yǔ)句for(i=0;(c=getchar())!=′\n′;i+=c);
在表達(dá)式2中先從終端接收一個(gè)字符賦給c,然后判斷此賦值表達(dá)式的值是否不等于′\n′(換行符),如果不等于′\n′,就執(zhí)行循環(huán)體。循環(huán)體為空語(yǔ)句,把本來(lái)要在循環(huán)體內(nèi)處理的內(nèi)容放在表達(dá)式3中,作用是一樣的??梢奻or語(yǔ)句功能強(qiáng),可以在表達(dá)式中完成本來(lái)應(yīng)在循環(huán)體內(nèi)完成的操作。for語(yǔ)句例6.2輸入單詞并打印for語(yǔ)句運(yùn)行情況:Computer↙(輸入)Computer(輸出)而不是Ccoommppuutteerrfor(intc;(c=getchar())!='\n';)printf("%c",c);for語(yǔ)句中只有表達(dá)式2,而無(wú)表達(dá)式1和表達(dá)式3。其作用是每讀入一個(gè)字符后立即輸出該字符,直到輸入一個(gè)“換行”為止。請(qǐng)注意,從終端鍵盤向計(jì)算機(jī)輸入時(shí),是在按Enter鍵以后才將一批數(shù)據(jù)一起送到內(nèi)存緩沖區(qū)中去的。C語(yǔ)言中的for語(yǔ)句比其他語(yǔ)言(如BASIC,PASCAL)中的FOR語(yǔ)句功能強(qiáng)得多??梢园蜒h(huán)體和一些與循環(huán)控制無(wú)關(guān)的操作也作為表達(dá)式1或表達(dá)式3出現(xiàn),這樣程序可以短小簡(jiǎn)潔。但過(guò)分地利用這一特點(diǎn)會(huì)使for語(yǔ)句顯得雜亂,可讀性降低,最好不要把與循環(huán)控制無(wú)關(guān)的內(nèi)容放到for語(yǔ)句中。for語(yǔ)句一個(gè)循環(huán)體內(nèi)又包含另一個(gè)完整的循環(huán)結(jié)構(gòu)稱為循環(huán)的嵌套。內(nèi)嵌的循環(huán)中還可以嵌套循環(huán),這就是多層循環(huán)。三種循環(huán)(while循環(huán)、do-while循環(huán)和for循環(huán))可以互相嵌套。循環(huán)嵌套(1)
while()(2)do(3)for(;;){…{…{while()dofor(;;){…}{…}{…}}while();}}while();(4)
while()(5)for(;;)(6)do{…{…{…do{…}while()for(;;){}while(){}…{…}…}}}while()四種循環(huán)都可以用來(lái)處理同一問(wèn)題,一般情況下它們可以互相代替。但一般不提倡用goto型循環(huán)。在while循環(huán)和do-while循環(huán)中,只在while后面的括號(hào)內(nèi)指定循環(huán)條件,因此為了使循環(huán)能正常結(jié)束,應(yīng)在循環(huán)體中包含使循環(huán)趨于結(jié)束的語(yǔ)句(如i++,或i=i+1等)。for循環(huán)可以在表達(dá)式3中包含使循環(huán)趨于結(jié)束的操作,甚至可以將循環(huán)體中的操作全部放到表達(dá)式3中。因此for語(yǔ)句的功能更強(qiáng),凡用while循環(huán)能完成的,用for循環(huán)都能實(shí)現(xiàn)。用while和do-while循環(huán)時(shí),循環(huán)變量初始化的操作應(yīng)在while和do-while語(yǔ)句之前完成。而for語(yǔ)句可以在表達(dá)式1中實(shí)現(xiàn)循環(huán)變量的初始化。while循環(huán)、do-while循環(huán)和for循環(huán),可以用break語(yǔ)句跳出循環(huán),用continue語(yǔ)句結(jié)束本次循環(huán)(break語(yǔ)句和continue語(yǔ)句見下節(jié))。而對(duì)用goto語(yǔ)句和if語(yǔ)句構(gòu)成的循環(huán),不能用break語(yǔ)句和continue語(yǔ)句進(jìn)行控制.幾種循環(huán)的比較break語(yǔ)句可以用來(lái)從循環(huán)體內(nèi)跳出循環(huán)體,即提前結(jié)束循環(huán),接著執(zhí)行循環(huán)下面的語(yǔ)句一般形式:
break;注意:break語(yǔ)句不能用于循環(huán)語(yǔ)句和switch語(yǔ)句之外的任何其他語(yǔ)句中。
break語(yǔ)句例6.3:計(jì)算r=1到r=10時(shí)的圓面積,直到面積area大于100為止break語(yǔ)句當(dāng)area>100時(shí),執(zhí)行break語(yǔ)句,提前結(jié)束循環(huán),即不再繼續(xù)執(zhí)行其余的幾次循環(huán)。floatpi=3.14159;for(intr=1;r<=10;r++){floatarea=pi*r*r;if(area>100)break;printf("r=%d,area=%3.5f\n",r,area);}作用為結(jié)束本次循環(huán),即跳過(guò)循環(huán)體中下面尚未執(zhí)行的語(yǔ)句,接著進(jìn)行下一次是否執(zhí)行循環(huán)的判定.一般形式:
continue;continue語(yǔ)句
例6.5把100~200之間的不能被3整除的數(shù)輸出。說(shuō)明:當(dāng)n能被3整除時(shí),執(zhí)行continue語(yǔ)句,結(jié)束本次循環(huán)(即跳過(guò)printf函數(shù)語(yǔ)句),只有n不能被3整除時(shí)才執(zhí)行printf函數(shù)。continue語(yǔ)句
for(intn=100;n<=200;n++){if(n%3==0)continue;printf("%d",n);}continue語(yǔ)句只結(jié)束本次循環(huán),而不是終止整個(gè)循環(huán)的執(zhí)行。break語(yǔ)句則是結(jié)束整個(gè)循環(huán)過(guò)程,不再判斷執(zhí)行循環(huán)的條件是否成立。break語(yǔ)句和continue語(yǔ)句的區(qū)別
例6.6
用π/4≈1-1/3
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 借款合同范本-天津市私產(chǎn)房屋交易資金代收代付協(xié)議
- 房產(chǎn)融資協(xié)議模板
- 2024年技術(shù)開發(fā)合作協(xié)議
- 文言文虛詞“之、而、其、已”的用法及專項(xiàng)練習(xí)(講義)-人教部編版(一起)語(yǔ)文九年級(jí)(上冊(cè))
- 統(tǒng)編版語(yǔ)文三年級(jí)上冊(cè)第四單元習(xí)作 續(xù)編故事(講義)
- 熱銷產(chǎn)品代理協(xié)議樣本
- 2024年捐贈(zèng)協(xié)議書范文-
- 養(yǎng)殖業(yè)合伙協(xié)議書示例
- 廣東省簡(jiǎn)化版勞動(dòng)合同樣本
- 中餐技術(shù)轉(zhuǎn)讓合同書
- 2024年全國(guó)職業(yè)院校技能大賽高職組(藥學(xué)技能賽項(xiàng))考試題庫(kù)(含答案)
- 2024年人教版小學(xué)四年級(jí)科學(xué)(上冊(cè))期中試卷附答案
- DB11T 489-2024 建筑基坑支護(hù)技術(shù)規(guī)程
- JTGT F20-2015 公路路面基層施工技術(shù)細(xì)則
- 第五章 中國(guó)特色社會(huì)主義理論體系的形成發(fā)展(一)
- 近三年任教學(xué)科學(xué)生學(xué)業(yè)水平和綜合素質(zhì)情況-回復(fù)
- 2023屆高考語(yǔ)文備考之整句與散句變換(10道真題含答案)
- 施工組織設(shè)計(jì)(橫道圖+平面圖)
- 抗菌藥物使用強(qiáng)度整改的PDCA案例
- 自來(lái)水廠操作規(guī)程手冊(cè)
- 企業(yè)檔案分類方案及編號(hào)辦法(范例)
評(píng)論
0/150
提交評(píng)論