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

下載本文檔

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

文檔簡介

第章選擇結(jié)構(gòu)5.1關(guān)系運算符和關(guān)系表達式5.2邏輯運算符和邏輯表達式5.3if語句5.4條件運算符5.5switch語句a>3,a+b<=0,‘a(chǎn)'>'b'

5.1關(guān)系運算符和關(guān)系表達式關(guān)系運算就是比較運算。關(guān)系表達式:一個比較運算符連接兩個表達式(算術(shù)、關(guān)系、邏輯、賦值、字符等表達式)。例如:若a=5,b=2,c=1

a>3成立結(jié)果為1

3+a<7不成立結(jié)果為0

f=a>b>ca>b為1,a>b>c為0,所以f=0。

關(guān)系表達式的結(jié)果值為邏輯值。規(guī)定:條件成立為1(邏輯真)否則為0(邏輯假)例如:有六個關(guān)系運算符

<<=>>=級別高

==;!=;

低算術(shù)運算關(guān)系運算賦值運算高

低c>a+b

c>(a+b)a>b!=c

(a>b)!=c關(guān)系運算符及其優(yōu)先次序:例如:

低!(表達式)對其后表達式值取反,單目符邏輯運算符:若a=3!a==0a=3,b=4!(a>b)==1!&&||邏輯非功能:格式:例如:

(表達式)&&(表達式)當(dāng)兩個表達式值均為真時,結(jié)果為1,否則為0,雙目符。邏輯與格式:功能:k1k2k1&&k20&&0==01&&0==00&&1==0

1&&1==1若a=10;b=3.5;x=a&&b;則x==1a>b&&b<00a>’c’&&!’d’0

例如:例如:(表達式)||(表達式)當(dāng)兩個表達式值,只要有一個為真時,結(jié)果為1,否則為0。雙目符k1||k20||0==01||0==10||1==11||1==1邏輯或格式:功能:K1K2例如:若a=1,b=-3,c=‘c’x=a>b||b<c則x==1!(a>b)||c==991a<0||b>00說明:||和&&運算具有短路效應(yīng)。

1、a&&b&&c

當(dāng)a為1時,才判斷b,否則整個值為0。當(dāng)a、b均為1時,才判斷c,否則值為0。例如:例如:a=1&&!‘e’&&b=30例如:a=1||!‘e’||a=31若a=3,!2||a<0||(a!=0)12、a||b||c

當(dāng)a為0時,才判斷b,否則整個值為1。當(dāng)a、b均為0時,才判斷c,否則值為1。數(shù)學(xué)式C表達式

-10≤x≤10x>=-10&&x<=10

x≤-10,x≥10x<=-10||x>=10注意5.3if語句當(dāng)表達式值為真(非0)時,執(zhí)行語句,否則不執(zhí)行。if(x>y)printf("%d",x);printf(“%d”,y);if(表達式)1條語句或復(fù)合句共有三種格式。格式1:功能1:例如:流程圖:一般當(dāng)作單分支用,否則易造成邏輯錯誤!表達式n條語句=0=1如:輸出兩個數(shù)中的大數(shù)。if(x>y)printf("%d",x);printf(“%d”,y);//y>x輸出x,y1x>0y(x)=0x=0-1x<0voidmain(){intx,y;printf(“inputx:”);scanf(“%d”,&x);if(x>0)y=1;

if(x==0)y=0;

if(x<0)y=-1;

printf(“x=%d,y=%d\n”,x,y);}例程5-1:當(dāng)表達式值為真(非0)時,執(zhí)行if后內(nèi)容,否則執(zhí)行else后內(nèi)容。if

(表達式)

1條語句或復(fù)合句else

1條語句或復(fù)合句

語句A

語句B=0=1表達式流程圖:格式2:功能2:if(x>y)printf("%d",x);elseprintf("%d",y);注意:1、若語句不止一條,則必須用{}括起來。2、分支中的語句以分號結(jié)束。3、else總是與最近且在其前的if配對。例如:例如:If(x>=0)if(x>0)y=1;elsey=0;elsey=-1;if

(表達式1)

語句1或復(fù)合句1else

if(表達式2)

語句2或復(fù)合句2elseif(表達式3)語句3或復(fù)合句3……else語句nif(x>0)y=1;elseif(x==0)y=0;elsey=-1;格式3:例如:

實現(xiàn)產(chǎn)品保修額的計算。若是本公司的產(chǎn)品,則使用期year≤1,免費維修;1<year≤8保修費50元;year>8保修費100元;若不是本公司的產(chǎn)品,一律收費200元。1、說明變量year,fee,company;2、鍵盤給company,year賦值;3、根據(jù)company,year的值,來確定fee;4、輸出fee的值。例程5-2:算法:#include<stdio.h>voidmain(){intyear,fee;charcompany;printf(“mycompany(y/n)?”);company=getchar();printf(“Howlongusethisproduct:”);scanf(“%d”,&year);if(company==‘n’||company==‘N’)fee=200;elseif(year<=1)fee=0;elseif(year>1&&year<=8)fee=50;elsefee=100;printf(“money:sum=%d\n”,fee);}例程5-3:實現(xiàn)ATM機功能。根據(jù)用戶取款的金額,按人民幣從大到小的面值先算出最多可以出多少張100元、50元、20元、10元,每次最多取1000元。1、定義變量p100,p50,p20,p10,total;2、輸入total;3、若total<=1000或total%10==0則p100=total/100;total=total%100;p50=total/50;total=total%50;……否則顯示數(shù)據(jù)出錯算法:#include<stdio.h>voidmain(){intp100,p50,p20,p10,total;printf("請輸入取款數(shù)(最多1000元且最小面值10元):");scanf("%d",&total);if(total>1000||total%10!=0) printf("輸入的數(shù)據(jù)錯!");else{ p100=total/100;total=total%100; p50=total/50;total=total%50;p20=total/20;total=total%20;p10=total/10;total=total%10;if(p100!=0)printf("100元有%d張\n",p100);if(p50!=0)printf("50元有%d張\n",p50);if(p20!=0)printf("20元有%d張\n",p20);if(p10!=0)printf("10元有%d張\n",p10);}}C語言提供了一個三目運算符,用于簡單的條件賦值語句或條件表達式。例如:max=a>b?a:b;5.4條件運算符格式:表達式1

?

表達式2

:

表達式3功能:先判表達式1,若非0,則值為表達式2的值,否則為表達式3的值。輸入一個字符,判別它是否大寫字母,如果是,將它轉(zhuǎn)換成小寫字母;如果不是,不轉(zhuǎn)換。然后輸出最后得到的字符。#include<stdio.h>

voidmain()

{charch;

scanf("%c",&ch);

ch=(ch>='A'&&ch<='Z')?(ch+32):ch;

printf("%c",ch)

}運行結(jié)果如下:A

a例程5-4switch(表達式){case常量表達式1:n條語句

break;….…case常量表達式n:n條語句;

break;default:語句n+1}格式:5.5switch語句根據(jù)成績等級打印百分?jǐn)?shù)段。switch(grade){case'A':printf("85~100\n");break;case'B':printf("70~84\n");break;case'C':printf("60~69\n");break;case'D':printf("<60\n");break;default:printf("error\n");}例程5-5:1.常量表達式的值必須互不相等,否則會有二異性。4.有時幾種情況合并執(zhí)行一組語句。3.分支后若有break,則執(zhí)行完本分支后跳出switch語句;若無break,則順序執(zhí)行下一條分支。注意:2.case的順序任意。switch(grade){case'A':case'B‘:case'C':printf(">60\n");break;case'D':printf("<60\n");}例如:switch(grade){case’A’:case’B’:case’C’:printf(“>60\n”);break;case’D’:printf(“<60\n”);}可寫成:switch(grade){case‘A’,’B’,’C’:

printf(">60\n");break;case:'D':printf("<60\n");}例如:編制一個數(shù)值轉(zhuǎn)換程序,要求能進行如下的數(shù)制轉(zhuǎn)換:10進制轉(zhuǎn)換為16進制16進制轉(zhuǎn)換為10進制10進制轉(zhuǎn)換為8進制8進制轉(zhuǎn)換為16進值例程5-6:#include<stdio.h>voidmain(){intselect,a;charch;L:printf("\n1:DectoHex2:HextoDec\n");printf("\n3:DectoOct4:OcttoHex\n");printf("\n5:exit\n");printf("\nEnteryourchoice:");scanf("%d",&select);switch(select){case1:printf("\ninputaninteger(Dec):"); scanf("%d",&a); printf("Dec=%dHex=%x\n",a,a);break; case2:printf("\nEnteraninteger(Hex):");scanf("%x",&a), printf("Hex=%xDec=%d\n",a,a); break;case3:printf("\nEnteraninteger(Dec):"); scanf("%d",&a); printf("Dec=%dOct=%o\n",a,a); break;case4:printf("\nEnteraninteger(Oct):"); scanf("%o",&a); printf("Oct=%oHex=%x\n",a,a); break; /*ch=getchar();*/printf("continue,y/n?");ch=getchar();/*scanf("%*c%c",&ch);*/if(ch=='y')gotoL;end:;}case5:gotoend;default:printf("inputerror!");}編制一個完成兩個數(shù)的四則運算程序(輸入數(shù)值保留兩位小數(shù))。

voidmain(){floatx,y;charop;printf("\nEnteracalculation(x?y):");scanf("%f%c%f",&x,&op,&y);

switch(op)

{case'+':printf("%f%c%f=%f\n",x,op,y,x+y);break;

例程5-7:

case'-':printf("%f%c%f=%.4f\n",x,op,y,x-y);break;

case'*':printf("%f%c%f=%f\n",x,op,y,x*y);break;case'/':if(y==0.0)printf("Dataerror!!!\n");elseprintf("%f%c%f=%f\n",x,op,y,x/y);break;

default:printf("%f%c%f\n",x,op,y);}用戶輸入日期,計算該日期是這一年的第幾天。1、輸入日期2、判斷閏年否?設(shè)立閏年標(biāo)志。閏年的條件是:

年號能被400整除;或年號能被4整除但不能被100整除。例5-8:算法:3、利用switch語句在各分支后不加break則順序執(zhí)行各分支的特點,按輸入的月、日,將該日之前的所有天數(shù)累加。4、輸出年月日及天數(shù)。if((y%4==0&&y%100!=0)||(y%400==0))leap=1;elseleap=0;#include<stdio.h>v

溫馨提示

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

最新文檔

評論

0/150

提交評論