C語言課件第5章_第1頁
C語言課件第5章_第2頁
C語言課件第5章_第3頁
C語言課件第5章_第4頁
C語言課件第5章_第5頁
已閱讀5頁,還剩27頁未讀 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、第5章 挑選結(jié)構(gòu)程序設(shè)計5.1 關(guān)系運算符和關(guān)系表達式5.2 邏輯運算符和邏輯表達式5.3 if語句5.4 switch語句5.5 程序舉例5.1 關(guān)系運算符和關(guān)系表達式 關(guān)系運算現(xiàn)實上是對比運算,兩個值履行對比,推斷對比的結(jié)論是否吻合給定的前提,似果吻合對比的結(jié)論為真,否那么結(jié)論為假. 用 將兩個表達式(能夠是算術(shù)表達式、關(guān)系表達式、邏輯表達式、賦值表達式、字符表達式)毗鄰起來的式子叫 . 關(guān)系運算符與其它運算符的 .關(guān)系運算符關(guān)系表達式優(yōu)先次序5.2 邏輯運算符和邏輯表達式 用 將關(guān)系表達式或邏輯量毗鄰起來便是 . 邏輯運算符與其它運算符的 . 在邏輯表達式的求解中,同時不是全部的邏輯運算

2、都被履行. 邏輯運算規(guī)律:優(yōu)先次序邏輯運算符邏輯表達式例似5.3 if 語句 if語句是用來推斷所給定的前提是否滿足,依照推斷的結(jié)論(真或假)決意履行給出的兩種操縱之一. if語句的三種形式: if (表達式) 語句 if (表達式) 語句1 else 語句2 if (表達式1) 語句1 else if (表達式2) 語句2 else if (表達式3) 語句3 else if (表達式n) 語句n else 語句n+1例似例似例似if語句的嵌套if ( ) if ( ) 語句1 else 語句2else if ( ) 語句3 else 語句4if ( ) if ( ) 語句1else if

3、( ) 語句2 else 語句3內(nèi)嵌if內(nèi)嵌if內(nèi)嵌ifif ( ) if ( ) 語句1 else if ( ) 語句2 else 語句3 -1 (x0)1. main ()int x, y; scanf(“%d” ,&x) ;if (x=0) if (x0) y=1; else y=0; else y= -1;x=0y= -1x0y=1y=0 x0) y=1;else y=0;真真假假x0y=1y= 0 x=0y=- 14. y=0; if (x=0) if (x0) y=1; else y= - 1;真真假假x0y=1y= -1X!=0y=0真真假假x0y=1y= -1x!=0y

4、=0y=- 1真假假x0y=1y= 0 x=0真5.3.3 前提運算符 ? : 表達式1 ? 表達式2 : 表達式3前提表達式 max= (ab)? a:b 相當于 if (ab) max=a; else max=b;講明:前提運算符的履行次序前提運算符的優(yōu)先級不,僅高于賦值運算前提運算符的聯(lián)合方向為右聯(lián)合性前提表達式不能取代if語句前提表達式中的表達式類型能夠差別 5.4 switch語句 switch語句是多分支挑選語句switch (grade)case A:printf(“85100n”); case B:printf(“7084n”); case C:printf(“6079n”);

5、 case D:printf(“60n”); default :printf(“errorn”);表達式常量表達式履行語句改為 switch (grade)case A:printf(“85100n”);break; case B:printf(“7084n”);break; case C:printf(“6079n”);break; case D:printf(“60n”);break; default :printf(“errorn”);5.5 程序舉例 例5.5main() int year, leap; scanf(“%d”, &year); if (year%4= =0) i

6、f (year%100= =0) if (year%400= =0) leap=1; else leap=0; else leap=1;else leap=0;if (leap) printf (“%d is ”,year);else printf (“%d is not ”,year);printf (“a leap year.n”); Year被4整除YNYear被100整除YNYNYear被400整除leap=1leap=0leap=1leap=0leapYN輸出閏年輸出非閏年例5.7 統(tǒng)計運費.S250km 沒有折扣250=s500 2%折扣500=s1000 5%折扣1000=s20

7、00 8%折扣2000=s3000 10%折扣3000=s 15%折扣p(price),w(weight),s(distance),d(discount)f=p*w*s*(1-d)250100020003000C=s250c1 無折扣1c2 2%2c4 5%4c8 8%8c12 15%例5.7main( )int c,s;float p,w,t,f;scanf(“%f,%f%d”,&p,&w,&s););if (s =3000) c = 12 ;else c = s 250 ;switch(c)csae 0 : d = 0 ;break;csae 1 : d = 2 ;

8、break;csae 2 : csae 3 : d = 5;break;csae 4 : csae 5 : csae 6 : csae 7 : d = 8 ;break;csae 8 : csae 9 : csae 10 : csae 11 : d = 10 ;break;csae 12 : d = 15 ;break;f = p*w*s*(1- d100.0););printf(“freight=%15.4f”,f););x1=x2=b2-4ac=0 a=0YN輸出“非二次方程輸出兩相等實根-b2a b2-4ac0YN實部 p=虛部q=輸出兩個實根輸出兩個復(fù)根p+qip-qiNYY例5.6

9、解一元二次方程#include main() float a,b,c,d,disc,x1,x2,realpart,imagpart;scanf(“%f,%f,%f”,&a,&b,&c);printf(“The equation”);if(fabs(a)=1e-6) printf (“is not a quadratic”);else disc=b*b-4*a*c; if (fabs(disc)1e -6) x1=(-b+sqrt(disc)(2*a); x2=(-b-sqrt(disc)(2*a); printf (“has distinct real roots: %

10、8.4f and %8.4fn”,x1,x2);elserealpart=-b(2*a); imagpart=sqrt(-disc)(2*a);printf (“has complex roots:n”);printf (%8.4f+%8.4fin”,realpart,imagpart);printf (%8.4f+%8.4fin”,realpart,imagpart); C語言提供六種關(guān)系運算符 小于 大于 = 大于等于 = 等于 != 不等于 雙目運算,左聯(lián)合性.似: ab,(a+b)(b+c),(a=3)(b=5),(ab)c abc,賦值表達式:x=aby=abc關(guān)系表達式的值是一個邏

11、輯值關(guān)系表達式的值是一個邏輯值,即真或假即真或假.運算時以運算時以1代表真代表真,以以0代表假代表假.的值為真,表達式的值為1的值為真,表達式的值為1,的值為假,表達式的值為0,例似:如果a=3,b=2,c=1,那么ab(ab)= =cb+ca+b 算術(shù)運算符 高 ab!=c a= =bc 賦值運算符 低 邏輯運算符: & 邏輯與 邏輯或 ! 邏輯非 &和 是雙目運算符,!是單目運算符. 似:(ab) & (xy) (ab) (xy) !(ab) 左聯(lián)合性.似: !a&b xy&c 等效(! a)&b) (xy)&c) (ab)&

12、(xy) 等效 ab&xy(a= =b) (x= =y) 等效a= =b x= =y (!a) (ab) 等效!a ab !(非) 高算術(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等于1 4&0 2,等于1 53&2 8b)&(n=cd) n的值不是

13、 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)例似:if (xy) printf (“%d”,x); 這種if語句的履行環(huán)節(jié)見圖: 假 真xyprint(“%d”,x);能夠是一個語句也能夠是復(fù)合語句一樣為邏輯表達式或關(guān)系表達式.理論上能夠是隨意率性數(shù)值類型If (a) printf(“H

14、ello, world”); 例似: if(x y) printf(“%d”,x); else printf(“%d”,y);xyprintf(“%d”,x);printf(“%d”,y)真假注重注重對比兩個數(shù), 輸出三個數(shù)中最大的先大后小的輸出例似:最先輸入兩個數(shù)abt=a;a=b;b=t輸出a,b結(jié)束真假最先輸入三個數(shù)abacbca=ba=c輸出a結(jié)束a=c假真真假真假表達式1前提表達式取表達式2的值前提表達式取表達式3的值真(非0)假 (0)高于賦值運算符.低于關(guān)系運算符和關(guān)系運算符 max=(ab)?a:b能夠?qū)懗蒻ax= ab ?a:b 有ab?a:b+1相當于 ab?a:(b+1)而不是(ab?a:b)+1 有自右到左 ab?a:cd?c:d相當于ab?a:(cd?c:d)而不是(ab?a:c)d?c:d如果a=1;b=2;c=3;d=4;求表達式的值不能替代似:if (a=b) max=a; else min=b;

溫馨提示

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

評論

0/150

提交評論