選擇結(jié)構(gòu)程序設(shè)計(C語句)_第1頁
選擇結(jié)構(gòu)程序設(shè)計(C語句)_第2頁
選擇結(jié)構(gòu)程序設(shè)計(C語句)_第3頁
選擇結(jié)構(gòu)程序設(shè)計(C語句)_第4頁
選擇結(jié)構(gòu)程序設(shè)計(C語句)_第5頁
已閱讀5頁,還剩30頁未讀 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

第5章選擇結(jié)構(gòu)程序設(shè)計§5.1關(guān)系運算符和關(guān)系表達式§5.2邏輯運算符和邏輯表達式§5.3if語句§5.4switch語句§5.5

程序舉例§5.1關(guān)系運算符和關(guān)系表達式關(guān)系運算實際上是比較運算,兩個值進行比較,判斷比較的結(jié)果是否符合給定的條件,如果符合比較的結(jié)果為真,否則結(jié)果為假。用將兩個表達式(可以是算術(shù)表達式、關(guān)系表達式、邏輯表達式、賦值表達式、字符表達式)連接起來的式子叫。關(guān)系運算符與其它運算符的。關(guān)系運算符關(guān)系表達式優(yōu)先次序§5.2邏輯運算符和邏輯表達式用將關(guān)系表達式或邏輯量連接起來就是。邏輯運算符與其它運算符的。在邏輯表達式的求解中,并不是所有的邏輯運算都被執(zhí)行.優(yōu)先次序邏輯運算符邏輯表達式§5.3if語句①

if(表達式)語句if語句是用來判定所給定的條件是否滿足,根據(jù)判定的結(jié)果(真或假)決定執(zhí)行給出的兩種操作之一.if語句的三種形式:>③if(表達式1)語句1

elseif(表達式2)語句2

elseif(表達式3)語句3

......

elseif(表達式n)語句n

else

語句n+1②

if(表達式)語句1else

語句2>>if語句的嵌套if()

if()語句1

else語句2

else

if()語句3

else語句4if()

if()語句1

else

if()語句2

else語句3

內(nèi)嵌if內(nèi)嵌if內(nèi)嵌ifif()

{if()語句1}

else

{if()語句2

else語句3

}

-1(x<0)

例如y=0(x=0)

1(x>0)1.main(

)

{intx,y;scanf("%d",&x);

if(x<0)y=-1;

elseif(x==0)y=0;

elsey=1;

printf("x=%d,y=%d\n",x,y);}2.

if(x>=0)

if(x>0)y=1;

elsey=0;

elsey=-1;x>=0y=-1x>0y=1y=0

x<0Y=-1

X==0Y=0Y=1真假真假真真假假{3.y=-1;if(x!=0)

if(x>0)y=1;elsey=0;真真假假x>0y=1y=0x>=0y=-14.y=0;

if(x>=0)

if(x>0)y=1;

elsey=-1;真真假假x>0y=1y=-1X!=0y=0真真假假x>0y=1y=-1x!=0y=0y=-1真假假x>0y=1y=0x>=0真5.3.3條件運算符?:表達式1?

表達式2:表達式3

條件表達式max=(a>b)?a:b相當于

if(a>b)max=a;elsemax=b;說明:條件運算符的執(zhí)行順序條件運算符的優(yōu)先級別,僅高于賦值運算條件運算符的結(jié)合方向為右結(jié)合性條件表達式不能取代一般if語句條件表達式中的表達式類型可以不同

§5.4switch語句switch語句是多分支選擇語句

switch

(grade)

{case

'A':printf("85~100\n");

case

'B':printf("70~84\n");

case

'C':printf("60~79\n");

case

'D':printf("<60\n");

default

:printf("error\n");

}表達式常量表達式執(zhí)行語句改為switch(grade)

{case'A':printf("85~100\n");break;

case'B':printf("70~84\n");break;

case'C':printf("60~79\n");break;

case'D':printf("<60\n");break;

default:printf("error\n");

}§5.5程序舉例例5.5main(){intyear,leap;scanf("%d",&year);if(year%4==0){if(year%100==0){if(year%400==0)leap=1;elseleap=0;}elseleap=1;}elseleap=0;if(leap)

printf("%dis",year);else

printf("%disnot",year);printf("aleapyear.\n");}Year被4整除YNYear被100整除YNYNYear被400整除leap=1leap=0leap=1leap=0leapYN輸出閏年輸出非閏年例5.7計算運費s<250km沒有折扣250<=s<5002%折扣500<=s<10005%折扣1000<=s<20008%折扣2000<=s<300010%折扣3000<=s15%折扣p(price),w(weight),s(distance),d(discount)f=p*w*s*(1-d)c=s/250c<1無折扣1<=c<22%2<=c<45%4<=c<88%8<=c<1210%c>1215%2501000200030002%5%8%10%15%0例5.7main(){intc,s,d;floatp,w,t,f;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",f);}x1=x2=b2-4ac=0a=0YN輸出"非二次方程輸出兩相等實根-b/2ab2-4ac>0YN實部p=虛部q=輸出兩個實根輸出兩個復根p+qip-qiNYY例5.6解一元二次方程#include<math.h>main(){floata,b,c,d,disc,x1,x2,realpart,imagpart;

scanf("%f,%f,%f",&a,&b,&c);

printf("Theequation");if(fabs(a)<=1e-6)printf("isnotaquadratic");else{disc=b*b-4*a*c;

if(fabs(disc)<=1e-6)

printf("hastwoequalroots:%8.4\n",-b/(2*a));

elseif(disc>1e-6){x1=(-b+sqrt(disc))/(2*a);x2=(-b-sqrt(disc))/(2*a);

printf("hasdistinctrealroots:%8.4fand%8.4f\n",x1,x2);}

else{realpart=-b/(2*a);

imagpart=sqrt(-disc)/(2*a);

printf("hascomplexroots:\n");

printf(%8.4f+%8.4fi\n",realpart,imagpart);

printf(%8.4f+%8.4fi\n",realpart,imagpart);}}}第5章結(jié)束C語言提供六種關(guān)系運算符①<小于②<=小于等于③>大于④>=大于等于⑤==等于⑥!=不等于雙目運算,左結(jié)合性.如:a>b,(a+b)>(b+c),(a=3)>(b=5),(a>b)>ca>b>c,賦值表達式:x=a>by=a>b>c關(guān)系表達式的值是一個邏輯值,即真或假。運算時以1代表真,以0代表假。的值為真,表達式的值為1的值為真,表達式的值為1,的值為假,表達式的值為0,例如:若a=3,b=2,c=1,則a>b(a>b)==cb+c<a優(yōu)先次序:1.前四種的優(yōu)先級相同,后兩種的優(yōu)先級相同,且前高后低.2.關(guān)系運算符低于算術(shù)運算符.3.關(guān)系運算符高于賦值運算符.如:c>a+b算術(shù)運算符高

a>b!=ca==b<c關(guān)系運算符

a=b>c

賦值運算符低①&&和||是雙目運算符,!是單目運算符.如:(a>b)&&(x>y)

(a>b)

||(x>y)

!(a>b)②左結(jié)合性.邏輯運算符:&&

邏輯與

||

邏輯或

!邏輯非如:!a&&b||x>y&&c等效((!a)&&b)||((x>y)&&c)

(a>b)&&(x>y)等效

a>b&&x>y(a==b)||(x==y)等效a==b||x==y(!a)||(a>b)等效!a||a>b

!(非)

高算術(shù)運算符關(guān)系運算符&&||

賦值運算符

低優(yōu)先次序如圖所示:邏輯表達式邏輯表達式的值應(yīng)該是一個邏輯量"真"或"假",以數(shù)值"1"或"0"表示.而在判斷一個量是否為"真"時,以"0"代表假,以非"0"代表真.如:若a=4,則!a等于0

若a=4,b=5,則a&&b等于1

若a=0,b=5,則a||

b等于1

若a=4,b=5,則!a||

b等于14&&0||

2,等于15>3&&2||

8<4-!0,值等于1a&&b&&c只有前一個量非0時,才需要判斷

下一個量.a||b||c只要前一個量為真,就不必判斷下一個量.a=1,b=2,c=3,d=4m=1,n=1;(m=a>b)&&(n=c>d)n的值不是0,仍為1滿足下列一個條件即為閏年:①能被4整除,不能被100整除②能被4整除,又能被400整除.(year%4==0&&year%100!=0)||year%400==0!((year%4==0&&year%100!=0)||year%400==0)(year%4!=0)||(year%100==0&&year%400!=0)打印萬年歷

內(nèi)容:

地球繞太陽一周的時間是365天5小時46秒,為了使一年的天數(shù)為整數(shù),將一年的天數(shù)定為365天,余下的時間積累起來,四年就是23小時15分4秒,將近一天,把這一天加在某年的二月而成29天,該年稱為閏年,其它年稱為平年。但四年加一天又多用了44分56秒,這個數(shù)積滿400年為三天。因此400年中只能有97個閏年,所以凡能被400整除,或不能被100整除但能被4整除的年份為閏年。已知2000年1月1日為星期六,請輸入任一年的年份后,打印該年的年歷.

要求:

1、年份標題用字母組合成大字;

2、每行輸出二或三個月,月份可輸出在月歷之上,或之左;

示例如下:

$$$$$$$$$$$$$$$$$$$$$$$$

$$$$$$$$

$$$$$$$$

$$$$$$$$$$$$$$$$$$$$$$$$$

12

------------------------------------------------------

sunmon

tuewedthu

frisatsunmon

tuewedthu

frisat

------------------------------------------------------

112345

23456786789101112

910111213141513141516171819

1617181920212220212223242526

23242526272829272829

3031

例如:if(x>y)printf("%d",x);

這種if語句的執(zhí)行過程見圖:可以是一個語句也可以是復合語句一般為邏輯表達式或關(guān)系表達式.理論上可以是任意數(shù)值類型if(a)printf("Hello,world");x>yprint("%d",x);假真例如:if(x>y)printf("%d",x);elseprintf("%d",y);x>yprintf("%d",x);printf("%d",y)真假注意注意比較兩個數(shù),先大后小的輸出例如:開始輸入兩個數(shù)a>bt=a;a=b;b=t輸出a,b結(jié)束真假開始輸入三個數(shù)a>ba>cb>ca=ba=c輸出a結(jié)束a=c假真真假真假輸出三個數(shù)中最大的:表達式1條件表達式取表達式2的值條件表達式取表達式3的值真(非0)假(0)高于賦值運算符。低于關(guān)系運算符和邏輯運算符max=(a>b)?a:b可以寫成

max=a>b?a:b

有a>b?a:b+1相當于

a>b?a:(b+1)而不是(a>b?a:b)+1有自右至左a>b?a:c>d?c:d

相當于

a>b?a:(c>d?c:d)

而不是

(a>b?a:c)>d?c:d

若a=1;b=2;c=3;d=4;

求表達式的值不能替代如:if(a>=b)max=a;elsemin=b;if(a>=b)max=a;else

printf("變量a不是最大");可替代如:if(a>b)printf("%d",a);

elseprintf("%d",b);替代為:

p

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論