![第4章選擇結(jié)構(gòu)程序設(shè)計(修改)_第1頁](http://file4.renrendoc.com/view/6f0131b346bea7eafbae31ae92c422ab/6f0131b346bea7eafbae31ae92c422ab1.gif)
![第4章選擇結(jié)構(gòu)程序設(shè)計(修改)_第2頁](http://file4.renrendoc.com/view/6f0131b346bea7eafbae31ae92c422ab/6f0131b346bea7eafbae31ae92c422ab2.gif)
![第4章選擇結(jié)構(gòu)程序設(shè)計(修改)_第3頁](http://file4.renrendoc.com/view/6f0131b346bea7eafbae31ae92c422ab/6f0131b346bea7eafbae31ae92c422ab3.gif)
![第4章選擇結(jié)構(gòu)程序設(shè)計(修改)_第4頁](http://file4.renrendoc.com/view/6f0131b346bea7eafbae31ae92c422ab/6f0131b346bea7eafbae31ae92c422ab4.gif)
![第4章選擇結(jié)構(gòu)程序設(shè)計(修改)_第5頁](http://file4.renrendoc.com/view/6f0131b346bea7eafbae31ae92c422ab/6f0131b346bea7eafbae31ae92c422ab5.gif)
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
第四章選擇程序設(shè)計If語句switch語句邏輯運算符和邏輯表達式關(guān)系運算符和關(guān)系表達式條件運算符和條件表達式難點:If語句嵌套switch語句關(guān)系運算符和表達式關(guān)系運算符種類:<<===>=>!=關(guān)系表達式的值:是邏輯值“真”或“假”,用1和0表示<>5>3值為真15<=3值為假0‘5’==5值為假05!=3值為真1例應(yīng)避免對實數(shù)作相等或不等的判斷如1.0/3.0*3.0==1.0結(jié)果為可改寫為:fabs(1.0/3.0*3.0-1.0)<1e-60關(guān)系運算注意:關(guān)系運算注意:<>例5>2>7>8在C中是允許的,值為0例inti=1,j=7,a;a=i+(j%4!=0);
則a=2算術(shù)運算3,4級賦值運算符14逗號運算符15(最低)關(guān)系運算符的優(yōu)化級<<=>>===!=優(yōu)先級6(高)優(yōu)先級7(低)結(jié)合方向:自左向右優(yōu)先級別(見課本287頁附錄)5>2>7>8(從左向右結(jié)合)例:a+b>c/d//(a+b)>(c/d)‘a(chǎn)’+1<c//(‘a(chǎn)’+1)<c-i-5*j==k+1a>b==c//(a>b)==cx=a!=c==d//x=((a!=c)==d)左結(jié)合#include<stdio.h>main(){ charc='k'; inti=1,j=2,k=3; floatx=3e+5,y=0.85; printf("%d,%d\n",'a'+5<c,-i-2*j>=k+1); printf("%d,%d\n",1<j<5,x-5.25<=x+y); printf("%d,%d\n",i+j+k==-2*j,k==j==i+5);}1,01,10,0ab!a!ba&&ba||b真假真假假假真真邏輯運算符和表達式邏輯運算符種類:!&&||邏輯運算真值表C語言中,運算量:0表示“假”,非0表示“真”,
運算結(jié)果:0表示“假”,1表示“真”,<>真假假假假假真真假假真真真假真真優(yōu)先級和結(jié)合方向結(jié)合方向:&&||左結(jié)合!右結(jié)合!(非)算術(shù)運算符關(guān)系運算符&&和||賦值運算符高低優(yōu)先級和結(jié)合方向例a<=x&&x<=b
a>b&&x>ya==b||x==y!a||a>b//(a<=x)&&(x<=b)//(a>b)&&(x>y)//(a==b)||(x==y)//(!a)||(a>b)例a=4;b=5;!aa&&ba||b!a||b4&&0||25>3&&2||8<4-!0‘c’&&‘d’值為1值為0值為1值為1值為1值為1//(5>3)&&2||(8<(4-(!0)))值為1如何正確表示0.5<x<2.0x>0.5&&x<2.0短路特性:邏輯表達式求解時,并非所有的邏輯運算符都被執(zhí)行,只是在必須執(zhí)行下一個邏輯運算符才能求出表達式的解時,才執(zhí)行該運算符<>例a&&b&&c//只在a為真時,才判別b的值;只在a、b都為真時,才判別c的值例a||b||c//只在a為假時,才判別b的值;只在a、b都為假時,才判別c的值例a=1;b=2;c=3;d=4;m=1;n=1;(m=a>b)&&(n=c>d)//結(jié)果m=0,n=1
優(yōu)先級1級()[]->.2級!~++--+-**(類型名)sizeof3級*/%4級+-5級<<>>6級<><=>=7級==!=8級&按位與9級^按位異或|按位或11&&邏輯與12||邏輯或13?:條件運算符14=+=-=*=/=%=&=^=|=<<=>>=15,逗號運算符初等運算符單目運算符算術(shù)運算符先乘除后加減關(guān)系運算符位運算符邏輯運算符(不含?。┮莆晃贿\算符#include<stdio.h>main(){charc='k';inti=1,j=2,k=3;floatx=3e+5,y=0.85;printf("%d,%d\n",!x*!y,!!!x);printf("%d,%d,\n",x||(i=5)&&j-3,i<j&&x<y);printf("%d,%d,\n",i==5&&c&&(j=8),x+y||i+j+k);}0,01,00,1If語句switch語句if語句1.1if語句的三種形式形式一(單分支if語句)格式:if(expression)statement執(zhí)行過程:exprstatement非0=0例:if(x>y)printf(“%d”,x);exprstatement1statement2非0=0形式二:(雙分支)格式:if(expression)statement1elsestatement2執(zhí)行過程:例:if(x>0)y=sqrt(x);elsey=x;#include<stdio.h>#include<math.h>voidmain(){ floatx,y; printf("inputoneuumber:"); scanf("%f",&x); y=x;
if(x>0)y=sqrt(x); printf("y=%f",y);}形式三:格式:if(expr1)statement1elseif(expr2)statement2elseif(expr3)statement3…...[elsestatementn]expr1statemnt1非0=0expr2expr3statemntnstatemnt3statemnt2非0非0=0=0執(zhí)行過程:
例:if(salary>1000)index=0.4;elseif(salary>800)index=0.3;elseif(salary>600)index=0.2;elseif(salary>400)index=0.1;elseindex=0;如:if(a==b&&x==y)printf(“a=b,x=y”);if(3)printf(“OK”);if(‘a(chǎn)’)printf(“%d”,’a’);說明:if后面的表達式類型任意語句可以是復(fù)合語句
if(x)if(x!=0)
if(!x)
if(x==0)例考慮下面程序的輸出結(jié)果:#include<stdio.h>main(){intx,y;scanf(“%d,%d”,&x,&y);if(x>y)x=y;y++;elsex++;y++;printf(“%d,%d\n”,x,y);}CompileError!例4.4三個數(shù)由小到大順序輸出#include<stdio.h>main(){floata,b,c,t;scanf("%f%f%f",&a,&b,&c);if(a>b) {t=a;a=b;b=t;}/*對換a和b的值*/if(a>c) {t=a;a=c;c=t;}if(b>c) {t=b;b=c;c=t;}printf("%5.2f,%5.2f,%5.2f\n",a,b,c);}#include<stdio.h>main(){inta,b;printf("Enterintegera:");scanf("%d",&a);printf("Enterintegerb:");scanf("%d",&b);if(a==b)printf("a==b\n");
elseprintf("a!=b\n");}例輸入兩個數(shù)并判斷兩數(shù)相等否運行:Enterintegera:12
Enterintegerb:12a==b運行:Enterintegera:12
Enterintegerb:9a!=b#include<stdio.h>main(){charc;printf("Enteracharacter:");c=getchar();
if(c<0x20)printf("Thecharacterisacontrolcharacter\n");
elseif(c>='0'&&c<='9')printf("Thecharacterisadigit\n");
elseif(c>='A'&&c<='Z')printf("Thecharacterisacapitalletter\n");
elseif(c>='a'&&c<='z')printf("Thecharacterisalowerletter\n");
elseprintf("Thecharacterisothercharacter\n");}例4.5判斷輸入字符種類運行:Enteracharacter:
Thecharacterisacontrolcharacter運行:Enteracharacter:8Thecharacterisadigit運行:Enteracharacter:DThecharacterisacapitalletter運行:Enteracharacter:hThecharacterisalowerletter運行:Enteracharacter:F1Thecharacterisothercharacter1.2if語句嵌套:一般形式:if(expr1)if(expr2)statement1elsestatement2elseif(expr3)statement3elsestatement4內(nèi)嵌if內(nèi)嵌ifif(expr1)if(expr2)statement1elsestatement2內(nèi)嵌ifif(expr1)if(expr2)statement1elsestatement3
內(nèi)嵌ifif(expr1)statement1elseif(expr3)statement3elsestatement4內(nèi)嵌if例輸入兩數(shù)并判斷其大小關(guān)系#include<stdio.h>main(){intx,y;printf("Enterintegerx,y:");scanf("%d,%d",&x,&y);
if(x!=y)if(x>y)printf("X>Y\n");elseprintf("X<Y\n");
elseprintf("X==Y\n");}運行:Enterintegerx,y:12,23X<Y
Enterintegerx,y:12,6X>YEnterintegerx,y:12,12X==Yif~else配對原則:缺省{}時,else總是和它上面離它最近的未配對的if配對if(……)if(……)if(……)else…...else…...else…...if(expr1){if(expr2)statement1}elsestatement3
內(nèi)嵌if例:if(a==b)
if(b==c)printf(“a==b==c”);
elseprintf(“a!=b”);修改:if(a==b){if(b==c)printf(“a==b==c”);}elseprintf(“a!=b”);實現(xiàn)if~else正確配對方法:加{}例考慮下面程序輸出結(jié)果:main(){intx=100,a=10,b=20;intv1=5,v2=0;if(a<b)if(b!=15)if(!v1)x=1;elseif(v2)x=10;x=-1;printf(“%d”,x);}結(jié)果:-1條件運算符:max=(a>b)?a:b; if(a>b) max=a; else max=b;
結(jié)合方向:自右向左
如a>b?a:c>d?c:d
a>b?a:(c>d?c:d)expr1、expr2、expr3類型可不同,表達式值取較高的類型條件運算符可嵌套
如x>0?1:(x<0?-1:0)優(yōu)先級:13條件運算符與表達式一般形式:expr1?expr2:expr3執(zhí)行過程功能:相當于條件語句,但不能取代一般if語句例if(a>b)printf(“%d”,a);elseprintf(“%d”,b);printf(“%d”,a>b?a:b);例求a+|b|printf(“a+|b|=%d\n”,b>0?a+b:a-b);expr1取expr2值取expr3值非0=0<>例x?‘a(chǎn)’:‘b’//x=0,表達式值為‘b’;x?0,表達式值為‘a(chǎn)’x>y?1:1.5//x>y,值為1.0;x<y,值為1.52.switch語句(開關(guān)分支語句)一般形式:switch(表達式){caseE1:
語句組1;break;caseE2:
語句組2;break;…….caseEn:
語句組n;break;[default:
語句組;break;]}執(zhí)行過程:switch表達式語句組1語句組2語句組n語句組…...E1E2Endefaultcase說明:E1,E2,…En是常量表達式,且值必須互不相同語句標號作用,必須用break跳出case后可包含多個可執(zhí)行語句,且不必加{}switch可嵌套多個case可共用一組執(zhí)行語句如:……case‘A’:case‘B’:case‘C’:printf(“score>60\n”);break;……..例4.7
switch(a){case1:printf(“Monday\n”);case2:printf(“Tuesday\n”);case3:printf(“Wednesday\n”);case4:printf(“Thursday\n”); case5:printf(“Friday\n”); case6:printf(“Saturday\n”);case7:printf(“Sunday\n”);default:printf(“error\n”);}運行結(jié)果:a為5時,輸出:FridaySaturdaySundayerror例4.8
switch(a){case1:printf(“Monday\n”);break;case2:printf(“Tuesday\n”);break;case3:printf(“Wednesday\n”);break;case4:printf(“Thursday\n”);break; case5:printf(“Friday\n”);break; case6:printf(“Saturday\n”);break;case7:printf(“Sunday\n”);break;default:printf(“error\n”);}運行結(jié)果:a為5時,輸出:Friday例voidmain(){intx=1,y=0,a=0,b=0;switch(x){case1:switch(y){case0:a++;break;case1:b++;break;}case2:a++;b++;break;case3:a++;b++;}printf(“\na=%d,b=%d”,a,b);}運行結(jié)果:a=2,b=1例4.9閏年問題if(year%4==0&&year%100!=0||year%400==0)printf(“YES”);elseprintf(“NO”);
例4.10輸入一個不多于4位的正整數(shù),求出該數(shù)是幾位數(shù),并逆序打印出各位數(shù)字。#include<stdio.h>main(){intx,a,b,c,d;scanf(“%d”,&x);a1=x%10;//分解個位a2=x/10%10;//分解十位a3=x/100%10;//分解百位a4=x/1000%10;
//分解千位
if(a4!=0)printf(“4:%d%d%d%d\n”,a1,a2,a3,a4);elseif(a3!=0)printf(“3:%d%d%d\n”,a1,a2,a3);elseif(a2!=0)printf(“2:%d%d\n”,a1,a2);elseprintf(“1:%d\n”,a1);}輸入:562輸出:3:265profit<=1000,沒有提成;1000<profit<=2000,提成10%;2000<profit<=5000,提成15%;5000<profit<=10000,提成20%;
10000<profit,提成25%;0,11,22,3,4,55,6,7,8,
溫馨提示
- 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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 12富起來到強起來 第一課時(說課稿)-2023-2024學(xué)年道德與法治五年級下冊統(tǒng)編版
- 13《貓》說課稿-2023-2024學(xué)年四年級語文下冊統(tǒng)編版
- Unit 4 Customs and Traditions:Review of Passives 語法銜接活動案例說課稿-2024-2025學(xué)年高中英語滬外版必修第一冊
- 8 安全記心上《平安出行》(說課稿)-部編版道德與法治三年級上冊
- 西藏小區(qū)變壓器施工方案
- 27《巨人的花園》(說課稿)-2023-2024學(xué)年統(tǒng)編版語文四年級下冊
- 《3 我的本領(lǐng)大-循環(huán)模塊與執(zhí)行器模塊組合應(yīng)用》說課稿-2023-2024學(xué)年清華版(2012)信息技術(shù)六年級下冊001
- 9元日說課稿-2023-2024學(xué)年三年級下冊語文統(tǒng)編版
- Unit 3 Seasons Lesson 2(說課稿)-2023-2024學(xué)年人教新起點版英語二年級下冊
- 倒賣人口合同范例
- 邵陽市職工勞動能力鑒定表
- 稀土配合物和量子點共摻雜構(gòu)筑發(fā)光軟材料及其熒光性能研究
- 衛(wèi)生部手術(shù)分級目錄(2023年1月份修訂)
- JJG 921-2021環(huán)境振動分析儀
- 中藥炮制學(xué)-第五、六章
- 中國風(fēng)軍令狀誓師大會PPT模板
- 小兒高熱驚厥精品課件
- 2023機械工程師考試試題及答案
- 2022年電拖實驗報告伍宏淳
- 豐田汽車戰(zhàn)略規(guī)劃與戰(zhàn)略管理體系研究(2021)
- 即興口語(姜燕)-課件-即興口語第一章PPT-中國傳媒大學(xué)
評論
0/150
提交評論