第4章-選擇結(jié)構(gòu)_第1頁
第4章-選擇結(jié)構(gòu)_第2頁
第4章-選擇結(jié)構(gòu)_第3頁
第4章-選擇結(jié)構(gòu)_第4頁
第4章-選擇結(jié)構(gòu)_第5頁
已閱讀5頁,還剩28頁未讀 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1第4章選擇結(jié)構(gòu)程序設(shè)計2第四章選擇結(jié)構(gòu)程序設(shè)計一、關(guān)系運算符和關(guān)系表達式二、邏輯運算符和邏輯表達式三、使用if語句實現(xiàn)的選擇結(jié)構(gòu)四、條件運算符和條件表達式五、switch語句六、選擇結(jié)構(gòu)程序舉例主要內(nèi)容3關(guān)系運算符<<=>>===!=(6種)第四章選擇結(jié)構(gòu)程序設(shè)計優(yōu)先級賦值<關(guān)系(后2<前4)<算術(shù)關(guān)系表達式用關(guān)系運算符將兩個表達式連接起來的式子.算術(shù)、關(guān)系、邏輯、賦值、字符。值真(1)假(0)5>3一、關(guān)系運算符和關(guān)系表達式4219舉例已知a=5,b=4,c=3,d=7求下列表達式的值a+b==c*da>b>ca!=b<ca+b==c*d0a>b>c10a!=b<c01算術(shù)運算符的優(yōu)先級高于關(guān)系運算符不能用于判斷b的值是否在a與c之間“<”運算符的優(yōu)先級高于“!=”5邏輯運算符!(邏輯非)&&(邏輯與)||(邏輯或)運算規(guī)則優(yōu)先次序賦值<||<&&<關(guān)系<算術(shù)<!第四章選擇結(jié)構(gòu)程序設(shè)計(1)!:取邏輯值的相反值。(2)&&:參加運算的兩個邏輯值都為真時,結(jié)果為真(1)。(3)||:參加運算的兩個邏輯值都為假時,結(jié)果為假(0)。邏輯表達式用邏輯運算符將關(guān)系表達式和邏輯量連接起來的式子。舉例已知:(a=1b=0)1a||b&&0!a&&(5>3)||b0雙目單目二、邏輯運算符和邏輯表達式6第四章選擇結(jié)構(gòu)程序設(shè)計二、邏輯運算符和邏輯表達式第五章選擇結(jié)構(gòu)程序設(shè)計舉例5>3&&8<4-!00(5>3)&&(8<(4-!0))4&&5>3||(a=6)1邏輯運算符兩側(cè)的運算對象不但可以是0和1,也可以是0或非0的整數(shù),也可是任何類型的數(shù)據(jù)。系統(tǒng)判定標(biāo)準(zhǔn):0為假;非0為真。當(dāng)“與運算”的左側(cè)為0,或者“或運算”的左側(cè)為1時,右側(cè)的表達式不再進行計算。短路現(xiàn)象#include<stdio.h>voidmain(){inta=1,b=1;if(a>1&&(b=5))a=4;printf(“%d,%d”,a,b);}1,17第四章選擇結(jié)構(gòu)程序設(shè)計三、使用if語句實現(xiàn)的選擇結(jié)構(gòu)88案例1y=0x≤01x>0不成立(假)x≤0成立(真)y=1輸入x輸出yy=0if(表達式){

語句組1}else{

語句組2}x

<=

0y=0;y=1;9案例2x=-xx<0xx≥0不成立(假、0)x<0x=-x成立(真、1)輸入x輸出xif(表達式){

語句組1}else{

語句組2}x

<

0x=-x;x=x;10案例3y=-1x<01x>00x=0不成立(假)x

<

0成立(真)輸入x輸出yy=-1x

=

0不成立(假)成立(真)y=0y=1if(表達式){

語句組1}else{

語句組2}x

<

0y=-1;if(x=0)y=0;elsey=1;if(x==0)y=0;elsey=1;11選擇結(jié)構(gòu)單分支雙分支if(表達式){語句組}多分支if(表達式){語句組1}

else{語句組2}if(表達式1){語句組1}elseif(表達式2){語句組2}……else{語句組n}if語句的嵌套switch語句第四章選擇結(jié)構(gòu)程序設(shè)計選擇結(jié)構(gòu)的分類12編程實現(xiàn)分段函數(shù)。練習(xí)輸入xx<=0是否y=0否0<x<10是y=1/xx==10是否y=2.0/3*x+1x>10是否y=sqrt(5*x-1)0<x&&x<10x<10y=sqrt(5*x-1)if(x<=0)y=0;else

if(x<10)y=1/x;else

if(x==10)y=2.0/3*x+1;else

y=sqrt(5*x-1);輸出yy=0x≤01/x0<x<10x>10x+1x=10

13#include<stdio.h>#include<math.h>intmain(){floatx,y;

scanf("%f",&x);

if(x<=0)y=0;

elseif(x<10)y=1/x;

elseif(x==10)y=2.0/3*x+1;

elsey=sqrt(5*x-1);printf("x=%.2f,y=%.2f\n",x,y);return0;}第一次運行:5

x=5.00,y=0.2010

x=10.00,y=7.67第二次運行:程序如下:y=0x≤01/x0<x<10x>10x+1x=10

14編程實現(xiàn)分段函數(shù)——換一種判斷順序舉例輸入xx<10是否y=1/x否x<=0是y=0x==10是否y=2.0/3*x+1y=sqrt(5*x-1)if(x<10)

if(x<=0)y=0;

elsey=1/x;else

if(x==10)y=2.0/3*x+1;

else

y=sqrt(5*x-1);輸出yif(x<10)if(x<=0)y=0;elsey=1/x;elseif(x==10)y=2.0/3*x+1;elsey=sqrt(5*x-1);y=0x≤01/x0<x<10x>10x+1x=10

15if語句的嵌套第四章選擇結(jié)構(gòu)程序設(shè)計if(表達式1)

if(表達式2)語句1

[else語句2][else

if(表達式3)語句3

[else語句4]]注意if與else的配對原則:從else入手,找它上面最近的未配對的if配對。if語句嵌套結(jié)構(gòu)16練習(xí)第四章選擇結(jié)構(gòu)程序設(shè)計已知a=3b=4c=5d=0,d=?if(a>b)

d=a;else

if(c>b)d=c;elsed=b;if(a>b)

if(c>b)d=c;elsed=b;if(a>b)

{if(c>b)d=c;}elsed=b;if(a>b)

if(c>b)d=c;elsed=b;elsed=a;d=5d=3d=0d=417使用if語句中應(yīng)注意的問題在if關(guān)鍵字之后的括弧內(nèi)為表達式,該表達式通常是邏輯表達式或關(guān)系表達式,但也可以是其它任何合法的C表達式

條件判斷表達式必須用括弧括起來,后面沒有分號。但在語句之后必須加分號。如果希望在滿足/不滿足條件時執(zhí)行一組(多個)語句,則必須把這一組語句用{}括起來組成一個復(fù)合語句#include<stdio.h>intmain(){floata,b,c,p,s;scanf(“%f%f%f”,&a,&b,&c);if(a+b>c&&a+c>b&&b+c>a)

{

p=(a+b+c)/2;s=sqrt(p*(p-a)*(p-b)*(p-c));printf(“s=%7.2f\n”,s);

}elseprintf(“Notatriangle!\n”);return0;}18條件運算符條件表達式舉例if(a>b)max=a;elsemax=b;第四章選擇結(jié)構(gòu)程序設(shè)計表達式1?表達式2:表達式3max=(a>b)?a:b;條件運算符的使用條件若if語句中,在表達式為“真”和“假”時,都只執(zhí)行一個賦值語句給同一個變量賦值,則可以用簡單的條件運算符來處理。取值表達式1為真,則取值為表達式2的值;表達式1為假,則取值為表達式3的值。四、條件運算符和條件表達式右結(jié)合方向19使用條件表達式求兩個數(shù)的較大值。(自己看)#include"stdio.h"intmain(){floatnum1,num2,max=0;scanf("%f,%f",&num1,&num2);max=(num1>num2)?num1:num2;printf("%5.2f\n",max);return0;}例4.14第一次運行:3.2,4

4.00第二次運行:4,3.2

4.0020開關(guān)語句第四章選擇結(jié)構(gòu)程序設(shè)計switch(表達式){case常量表達式1:語句組1case常量表達式2:語句組2case常量表達式3:語句組3……case常量表達式n:語句組n

default:語句組n+1}五、switch語句實現(xiàn)多分支break;執(zhí)行過程定位入口、依次執(zhí)行、遇break跳出只能是整型或字符型21例4.17#include<stdio.h>intmain(){chargrade;printf(“請輸入考試等級A~D:”);scanf(“%c”,&grade);switch(grade){case‘A’:printf(“80~100\n”);case‘B’:printf(“70~79\n”);case‘C’:printf(“60~69\n”);case‘D’:printf(“<60\n”);default:printf(“error\n”);}return0;}B

根據(jù)輸入的考試成績等級打印出百分制分?jǐn)?shù)段。A:80~100B:70~79C:60~69D:<60說明:應(yīng)在每一個printf后加break語句第四章選擇結(jié)構(gòu)程序設(shè)計70~7960~69<60Error22#include<stdio.h>intmain(){chargrade;printf(“請輸入考試等級A~D:”);scanf(“%c”,&grade)switch(grade){case‘A’:printf(“80~100\n”);break;case‘B’:printf(“70~79\n”);break;case‘C’:printf(“60~69\n”);break;case‘D’:printf(“<60\n”);break;default:printf(“error\n”);}return0;}B

70~79最后一行的break可以省略。第四章選擇結(jié)構(gòu)

溫馨提示

  • 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)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論