




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
第3章
選擇結(jié)構(gòu)目錄if語句嵌套的if語句關(guān)系運(yùn)算符與關(guān)系表達(dá)式邏輯運(yùn)算符與邏輯表達(dá)式條件運(yùn)算符與條件表達(dá)式switch語句216:121.if語句if語句通常用來實(shí)現(xiàn)雙分支選擇,它通過判斷條件表達(dá)式取值(true或false),選擇執(zhí)行相應(yīng)的語句序列。if語句的一般格式為:if(表達(dá)式)語句1[else語句2]if...else的功能是:當(dāng)表達(dá)式為真時(shí)(非0值為真,0值為假)執(zhí)行語句1,否則執(zhí)行語句2(else子句為可選項(xiàng),無該選項(xiàng)時(shí)與語句2為空語句等價(jià))。語句1和語句2可以是一個(gè)簡單語句,也可以是一個(gè)復(fù)合語句,甚至是一條空語句。表達(dá)式可以是關(guān)系表達(dá)式、邏輯表達(dá)式,甚至是數(shù)值表達(dá)式。其執(zhí)行流程圖如圖3.1所示。3返回16:12例3.1:輸入一個(gè)雙精度浮點(diǎn)數(shù),將其向0舍入到整數(shù)。向0舍入的含義是“正數(shù)向下舍入,負(fù)數(shù)向上舍入”輸入:輸入一個(gè)雙精度浮點(diǎn)數(shù)。輸出:該雙精度浮點(diǎn)數(shù)向0舍入的整數(shù)。樣例輸入:3.14樣例輸出:3#include<iostream>usingnamespacestd;intmain(){ doublea;cin>>a;if(a>0)cout<<int(a)<<endl;elsecout<<-int(-a)<<endl;return0;}416:12例3.2:輸入三個(gè)整數(shù),按從小到大的順序輸出這三個(gè)數(shù)?#include<iostream>usingnamespacestd;intmain(){ inta,b,c,temp; cin>>a>>b>>c; if(a>b){ temp=a; a=b; b=temp; }
if(b>c){ temp=b; b=c; c=temp; } if(a>b){ temp=a; a=b; b=temp; } cout<<a<<""<<b<<""<<c<<endl; return0;}516:122.嵌套的if語句if語句還可通過嵌套實(shí)現(xiàn)多分支選擇,其一般格式如下:if(條件1)語句1elseif(條件2)語句2elseif(條件3)語句3……注意:if語句可以缺少else選項(xiàng),但else不能脫離if關(guān)鍵字單獨(dú)使用。else必須與if關(guān)鍵字配套使用,且else總是與離它最近的還未配對的if匹配。6返回16:12例3.3:輸入一個(gè)整數(shù),判斷該數(shù)是正數(shù)、負(fù)數(shù)還是零。輸入:一個(gè)整數(shù)。輸出:該數(shù)為正數(shù)則輸出“positive”,負(fù)數(shù)則輸出“negative”,零則輸出“zero”。#include<iostream>usingnamespacestd;intmain(){ inta; cin>>a; if(a>0)cout<<"positive"<<endl; elseif(a<0)cout<<"negative"<<endl; elsecout<<"zero"<<endl; return0;}716:12例3.4:龜兔賽跑中,已知烏龜速度為a米每秒,兔子速度為b米每秒,龜兔賽跑的賽程總長度為s米,兔子在比賽中到達(dá)終點(diǎn)前的某一時(shí)刻睡著了(且僅睡著這一次),耽誤了t秒的時(shí)間,如果烏龜贏了輸出"Turtlewin",兔子贏了輸出"Rabbitwin",否則輸出"Tie"。#include<iostream>usingnamespacestd;intmain(){ inta,b,s,t; cin>>a>>b>>s>>t; doubletur=(double)s/a; doublerab=(double)s/b+t; if(tur<rab)cout<<"Turtlewin"; elseif(tur>rab)cout<<"Rabbitwin"; elsecout<<"Tie"; return0;}816:12例3.5:輸入a、b、c,求一元二次方程ax2+bx+c=0的解。
輸入:三個(gè)整數(shù)a、b、c。
輸出:方程ax2+bx+c=0的解(保留兩位精度),a=0則輸出“Thisisnotaquadraticequation”。若有多個(gè)解,則多個(gè)解以空格分隔輸出。#include<cstdio>#include<cmath>intmain(){ doublea,b,c,delta,x1,x2,realpart,imagpart; scanf("%lf%lf%lf",&a,&b,&c); if(fabs(a)<=1e-6)printf("Theequationisnotaquadraticequation\n"); else { delta=b*b-4*a*c; if(fabs(delta)<=1e-6)printf("%.2f\n",-b/(2*a)); elseif(delta>1e-6) { x1=(-b+sqrt(delta))/(2*a); x2=(-b-sqrt(delta))/(2*a); printf("%.2f%.2f\n",x1,x2); } else { realpart=-b/(2*a); //realpart是復(fù)根的實(shí)部 imagpart=sqrt(-delta)/(2*a); //imagpart是復(fù)根的虛部 printf("%.2f+%.2fi",realpart,imagpart); //輸出一個(gè)復(fù)根 printf("%.2f-%.2fi\n",realpart,imagpart); //輸出另一個(gè)復(fù)根 } } return0;}916:123.關(guān)系運(yùn)算符與關(guān)系表達(dá)式關(guān)系運(yùn)算符也稱比較運(yùn)算符,關(guān)系運(yùn)算符都是雙目運(yùn)算符,其結(jié)合性均為左結(jié)合。關(guān)系運(yùn)算符的優(yōu)先級低于算術(shù)運(yùn)算符,高于賦值運(yùn)算符。在六個(gè)關(guān)系運(yùn)算符中,“<、<=、>、>=”的優(yōu)先級相同,“==、!=”的優(yōu)先級相同,且前四個(gè)運(yùn)算符優(yōu)先級高于后兩個(gè)運(yùn)算符。10返回16:12例3.6:輸入一個(gè)整數(shù),判斷該數(shù)的奇偶性(“odd”或“even”)。
輸入:一個(gè)整數(shù)。
輸出:奇數(shù)則輸出“odd”,偶數(shù)則輸出“even”。#include<iostream>usingnamespacestd;intmain(){ inta; cin>>a; if(a%2==0)cout<<"even"<<endl; elsecout<<"odd"<<endl; return0;}1116:124.邏輯運(yùn)算符與邏輯表達(dá)式關(guān)系運(yùn)算符可以方便地構(gòu)成相對簡單的條件判斷,而邏輯運(yùn)算符則可以連接多個(gè)關(guān)系表達(dá)式構(gòu)成邏輯表達(dá)式,以表達(dá)相對復(fù)雜的條件組合判斷。邏輯運(yùn)算符包括與(&&)、或(||)、非(!)3種,C/C++中邏輯運(yùn)算符的含義和邏輯運(yùn)算的真值表分別見表3.1和表3.2。
“&&”和“||”是雙目運(yùn)算符,“!”是單目運(yùn)算符。“!”的優(yōu)先級別高于關(guān)系運(yùn)算符和所有的雙目運(yùn)算符,“&&”和“||”的優(yōu)先級則低于算術(shù)運(yùn)算符和關(guān)系運(yùn)算符,而“&&”的優(yōu)先級又高于“||”。邏輯運(yùn)算符和其它運(yùn)算符優(yōu)先級從低到高依次為:
非(!)>算術(shù)運(yùn)算符>關(guān)系運(yùn)算符>與(&&)>或(||)>賦值運(yùn)算符(=)在邏輯表達(dá)式的求值過程中,并非所有的邏輯運(yùn)算符都能夠得到執(zhí)行,只有當(dāng)必須要執(zhí)行下一個(gè)邏輯運(yùn)算符才能求解表達(dá)式的值時(shí),才執(zhí)行該運(yùn)算符。a&&b&&c。只有a為真時(shí)才需要計(jì)算b的值,只有當(dāng)a和b都為真時(shí)才需要判別c的值。a‖b‖c。只要a為真,就不再判斷b和c。只有a為假時(shí)才判別b,a和b都為假才判別c。12返回運(yùn)算符含義示例真值&&與p&&q若p和q均為真則判定為真,否則為假|(zhì)|或p||q若p和q均為假則判定為假,否則為真!非!p若p真則!p為假,若p假則!p為真pq!p!qp&&qp||q11001110010101100100110016:12例3.7:輸入年份year,判斷該年是否為閏年。
輸入:輸入一個(gè)整數(shù)代表年份。
輸出:若該年是閏年則輸出“yearisaleapyear”,否則輸出“yearisnotaleapyear”。#include<iostream>usingnamespacestd;intmain(){ intyear; cin>>year; if((year%4==0&&year%100!=0)||year%400==0)cout<<year<<"isaleapyear"<<endl; elsecout<<year<<"isnotaleapyear"<<endl; return0;}//地球繞太陽運(yùn)行周期為365天5小時(shí)48分46秒(合計(jì)365.24219天)1316:125.條件運(yùn)算符與條件表達(dá)式“?:”是條件運(yùn)算符,條件表達(dá)式需要3個(gè)操作對象,“?”和“:”一起出現(xiàn)在表達(dá)式中,條件運(yùn)算符是C/C++中唯一的一個(gè)三目運(yùn)算符。使用條件表達(dá)式的一般形式為:
<表達(dá)式1>?<表達(dá)式2>:<表達(dá)式3>條件表達(dá)式的計(jì)算過程為:
計(jì)算表達(dá)式1的值;
若表達(dá)式1的值為真(非0),則僅計(jì)算表達(dá)式2并將其結(jié)果作為整個(gè)表達(dá)式的值;
若表達(dá)式1的值為假(0)則僅計(jì)算表達(dá)式3并將其結(jié)果作為整個(gè)表達(dá)式的值。14返回16:12例3.8:輸入兩個(gè)整數(shù),輸出其中的較大數(shù)。
輸入:兩個(gè)整數(shù)。
輸出:兩個(gè)整數(shù)中的較大數(shù)。#include<iostream>usingnamespacestd;intmain(){ inta,b,max; cin>>a>>b; max=a>b?a:b; cout<<max<<endl; return0;}1516:126.switch語句if…else…語句可清晰便捷地實(shí)現(xiàn)雙分支選擇,當(dāng)需要處理的分支情況較多時(shí),使用switch語句可使程序結(jié)構(gòu)更清晰,執(zhí)行速度更快。switch常和關(guān)鍵詞case、break、default等一起配合使用。switch語句的一般格式如下:switch(表達(dá)式){ case常量表達(dá)式1:[語句1][break;]
…… case常量表達(dá)式n:[語句2][break;] default:[語句n+1]}16返回16:12說明switch語句中表達(dá)式的取值只能是整型、字符型、布爾型或枚舉型。花括號(hào)內(nèi)是一個(gè)復(fù)合語句,內(nèi)包含多個(gè)以關(guān)鍵字case開頭的語句行和最多一個(gè)以default開頭的行。case后面跟一個(gè)常量(或常量表達(dá)式,其取值類型與表達(dá)式類型一致),它們和default都是起標(biāo)號(hào)作用,用來標(biāo)志一個(gè)位置。執(zhí)行switch語句時(shí),先計(jì)算switch后面的“表達(dá)式”的值,然后將它與各case標(biāo)號(hào)比較,如果與某一個(gè)case標(biāo)號(hào)中的常量相同,流程就轉(zhuǎn)到此case標(biāo)號(hào)后面的語句。如果沒有與switch表達(dá)式相匹配的case常量,流程轉(zhuǎn)去執(zhí)行default標(biāo)號(hào)后面的語句??梢詻]有default標(biāo)號(hào),此時(shí)如果沒有與switch表達(dá)式相匹配的case常量,則不執(zhí)行任何語句。各個(gè)case標(biāo)號(hào)出現(xiàn)次序不影響執(zhí)行結(jié)果。任意兩個(gè)case后的常量表達(dá)式取值必須不同,否則將導(dǎo)致沖突。case標(biāo)號(hào)只起標(biāo)記的作用。在執(zhí)行switch語句時(shí),根據(jù)switch表達(dá)式的值找到匹配的入口標(biāo)號(hào),在執(zhí)行完一個(gè)case標(biāo)號(hào)后面的語句后,就從此標(biāo)號(hào)開始執(zhí)行下去,不再進(jìn)行判斷。因此,一般情況下,在執(zhí)行一個(gè)case子句后,應(yīng)當(dāng)用break語句使流程跳出switch結(jié)構(gòu)。最后一個(gè)case子句(今為default子句)中可不加break語句。在case子句中雖然包含了一個(gè)以上執(zhí)行語句,但可以不必用花括號(hào)括起來,會(huì)自動(dòng)順序執(zhí)行本case標(biāo)號(hào)后面所有的語句。當(dāng)然加上花括號(hào)也可以。break語句為可選項(xiàng),用于終止
switch
中的一個(gè)case,是否需要視具體情形而定。若某幾個(gè)case子句后無break語句,則這幾個(gè)case子句和隨后緊跟的第一個(gè)帶break語句的case子句共用一組執(zhí)行語句。1716:12例3.9:給定一個(gè)百分制成績,請根據(jù)百分制成績輸出其對應(yīng)的等級。轉(zhuǎn)換關(guān)系如下:90分及以上為'A',80~89為'B',70~79為'C',60~69為'D',60分以下為'E'。
輸入:一個(gè)百分制成績(0~100的整數(shù))。
輸出:成績對應(yīng)的等級。#include<iostream>usingnamespacestd;intmain(){ intscore; scanf("%d",&score); switch(score/10) { case10: case9:printf("A\n");break; case8:printf("B\n");break; case7:printf("C\n");break; case6:printf("D\n");break; default:printf("E\n"); } return0;}1816:12例3.10:輸入三個(gè)整數(shù),輸出最大數(shù)和最小數(shù)。
輸入:輸入三個(gè)整數(shù)a、b、c。
輸出:三個(gè)數(shù)中的最大數(shù)和最小數(shù)(以空格分隔)。#include<iostream>usingnamespacestd;intmain(){ inta,b,c,max,min;cin>>a>>b>>c; if(a>b){ max=a; min=b; } else{ max=b; min=a; }if(max<c)max=c;elseif(min>c)min=c;cout<<max<<""<<min;return0;}1916:12例3.11:輸入運(yùn)算數(shù)和四則運(yùn)算符,輸出計(jì)算結(jié)果。
輸入:輸入兩個(gè)浮點(diǎn)數(shù)和一個(gè)操作符。
輸出:輸出計(jì)算結(jié)果(精度為2)。#include<cstdio>intmain(){ doublea,b; charc; scanf("%lf%lf%c",&a,&b,&c);
switch(c)
{ case'+':printf("%.2lf\n",a+b);break;
case'-':printf("%.2lf\n",a-b);break;
cas
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 初級烹調(diào)考試題及答案
- 分級檢驗(yàn)考試題及答案
- 谷歌運(yùn)營面試題庫及答案
- 方城醫(yī)療面試題及答案
- T/CAEPI 62-2023顆?;钚蕴课?氮?dú)饷摳饺軇┗厥昭b置技術(shù)要求
- T/CAEPI 24-2019袋式除塵用超細(xì)面層濾料技術(shù)要求
- 《小學(xué)美術(shù)新課標(biāo)》心得體會(huì)模版
- T/CADBM 7-2018墻布
- 定制家具定貨合同范本
- 個(gè)人商鋪轉(zhuǎn)讓合同范本
- 污水處理廠排水管道施工流程
- 《斷魂槍》老舍課件
- 胖東來考察報(bào)告
- 中考數(shù)學(xué)總復(fù)習(xí)第四章第20課時(shí)解直角三角形課件
- 低空經(jīng)濟(jì)產(chǎn)業(yè)園商業(yè)計(jì)劃書
- 2025中國鐵路濟(jì)南局集團(tuán)招聘生60人高頻重點(diǎn)提升(共500題)附帶答案詳解
- 2024-2030年中國內(nèi)河碼頭產(chǎn)業(yè)前景預(yù)測規(guī)劃研究報(bào)告
- 2025年上海市各區(qū)高三語文一模試題匯編之文言文二閱讀(含答案)
- 【讀后續(xù)寫】高中英語讀后續(xù)寫講評:100 dollars 名師課件-周媚
- 《公共事業(yè)管理概論》課程教學(xué)大綱
- 2024版質(zhì)量管理培訓(xùn)
評論
0/150
提交評論