(37-310)程序設(shè)計初步講解材料_第1頁
(37-310)程序設(shè)計初步講解材料_第2頁
(37-310)程序設(shè)計初步講解材料_第3頁
(37-310)程序設(shè)計初步講解材料_第4頁
(37-310)程序設(shè)計初步講解材料_第5頁
已閱讀5頁,還剩107頁未讀 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

第3章程序初步設(shè)計3.7 選擇結(jié)構(gòu)和if語句3.8 條件運算符和條件表達(dá)式3.9 多分支選擇結(jié)構(gòu)和switch語句3.10 編寫選擇結(jié)構(gòu)的程序……第3章程序初步設(shè)計程序的流程控制。所有程序都只能包含三種控制結(jié)構(gòu):

1.順序結(jié)構(gòu)

2.選擇結(jié)構(gòu)

3.循環(huán)結(jié)構(gòu)例:(m=a>b)&&(n=c>d)求a=1,b=2,c=3,d=4,m和n的原值為1時,m,n的值為多少?當(dāng)a=1,b=2,c=3,d=4,m和n的原值為1時,由于“a>b”的值為0,因此m=0,而“n=c>d”不被執(zhí)行,因此n的值不是0而仍保持原值1。3.7選擇結(jié)構(gòu)和if語句

對給定的條件進(jìn)行判斷,并根據(jù)判斷的結(jié)果選擇不同的操作。構(gòu)成選擇結(jié)構(gòu)的語句,稱為條件語句。if語句switch語句3.7.1if語句的3種形式false(0)

true(非0)

表達(dá)式

語句1.if語句的形式和執(zhí)行流程if(表達(dá)式)語句;語句形式(1)執(zhí)行流程

表達(dá)式

語句3.7.1if語句的3種形式false(0)true(非0)

表達(dá)式

語句1.if語句的形式和執(zhí)行流程if(表達(dá)式)語句;語句形式(1)執(zhí)行流程

表達(dá)式

3.7.1if語句的3種形式35abmax例:inta=3,b=5,max;max=a;if(b>a)max=b;cout<<"max="<<max<<endl;:2.1.1if語句3.7.1if語句的3種形式35abmax3例:inta=3,b=5,max;max=a;if(b>a)max=b;cout<<"max="<<max<<endl;:2.1.1if語句3.7.1if語句的3種形式35abmax3例:inta=3,b=5,max;max=a;if(b>a)max=b;cout<<"max="<<max<<endl;:2.1.1if語句3.7.1if語句的3種形式35abmax3例:inta=3,b=5,max;max=a;if(b>a)

max=b;cout<<"max="<<max<<endl;:2.1.1if語句3.7.1if語句的3種形式35abmax5例:inta=3,b=5,max;max=a;if(b>a)max=b;cout<<"max="<<max<<endl;:2.1.1if語句3.7.1if語句的3種形式35abmax5

max=5輸出例:inta=3,b=5,max;max=a;if(b>a)max=b;cout<<"max="<<max<<endl;:2.1.1if語句3.7.1if語句的3種形式73abmax例:inta=7,b=3,max;max=a;if(b>a)max=b;cout<<"max="<<max<<endl;:2.1.1if語句3.7.1if語句的3種形式73abmax7例:inta=7,b=3,max;max=a;if(b>a)max=b;cout<<"max="<<max<<endl;:2.1.1if語句3.7.1if語句的3種形式73abmax7例:inta=7,b=3,max;max=a;if(b>a)max=b;cout<<"max="<<max<<endl;:2.1.1if語句3.7.1if語句的3種形式73abmax7

max=7輸出例:inta=7,b=3,max;max=a;if(b>a)max=b;cout<<"max="<<max<<endl;:2.1.1if語句3.7.1if語句的3種形式if語句后面,可以只含一個操作語句(如上例),也可以有多個操作語句,此時用花括號“{}”將幾個語句括起來稱為一個復(fù)合語句。例:求三角形面積(海倫公式)if((a+b>c)&&(b+c>a)&&(c+a>b)){s=(a+b+c)/2.0;area=sqrt(s*(s-a)*(s-b)*(s-c));cout<<“area=“<<area<<endl;}3.7.1if語句的3種形式1.if語句的形式和執(zhí)行流程語句形式(2)if(表達(dá)式)語句1;else語句2;執(zhí)行流程false(0)true(非0)表達(dá)式

語句1語句23.7.1if語句的3種形式1.if語句的形式和執(zhí)行流程語句形式(2)if(表達(dá)式)語句1;else語句2;執(zhí)行流程false(0)true(非0)表達(dá)式

語句1語句2true(非0)

表達(dá)式

語句13.7.1if語句的3種形式1.if語句的形式和執(zhí)行流程語句形式(2)if(表達(dá)式)語句1;else語句2;執(zhí)行流程false(0)true(非0)表達(dá)式

語句1語句2false(0)

表達(dá)式

語句23.7.1if語句的3種形式例:inta=3,b=5;if(b>a)max=b;elsemax=a;cout<<"max="<<max<<endl;:35abmax3.7.1if語句的3種形式35abmax例:inta=3,b=5;if(b>a)

max=b;elsemax=a;cout<<"max="<<max<<endl;:3.7.1if語句的3種形式例:inta=3,b=5;if(b>a)

max=b;

elsemax=a;cout<<"max="<<max<<endl;:35abmax53.7.1if語句的3種形式例:inta=3,b=5;if(b>a)max=b;elsemax=a;cout<<"max="<<max<<endl;:35abmax5

max=5輸出3.7.1if語句的3種形式例:inta=7,b=3;if(b>a)

max=b;elsemax=a;cout<<"max="<<max<<endl;:73abmax3.7.1if語句的3種形式例:inta=7,b=3;if(b>a)max=b;elsemax=a;cout<<"max="<<max<<endl;:73abmax73.7.1if語句的3種形式例:inta=7,b=3;if(b>a)max=b;elsemax=a;cout<<"max="<<max<<endl;:73abmax7

max=7輸出3.7.1if語句的3種形式例:inta=7,b=3;if(b>a)max=b;elsemax=a;cout<<"max="<<max<<endl;:73abmax7

max=7輸出3.7.1if語句的3種形式1.if語句的形式和執(zhí)行流程語句形式(3)if(表達(dá)式1)語句1;elseif(表達(dá)式2)語句2;elseif(表達(dá)式3)語句3;……elseif(表達(dá)式n-1)語句n-1;else語句n;truefalsetruetruetruefalsefalsefalse表達(dá)式1表達(dá)式2表達(dá)式3表達(dá)式4語句1語句5語句4語句3語句2……3.7.1if語句的3種形式1.if語句的形式和執(zhí)行流程語句形式(3)if(表達(dá)式1)語句1;elseif(表達(dá)式2)語句2;elseif(表達(dá)式3)語句3;……elseif(表達(dá)式n-1)語句n-1;else語句n;3.7.1if語句的3種形式例如:if(num>500)cost=0.15;elseif(num>300)cost=0.10;elseif(num>100)cost=0.075;elseif(num>50)cost=0.05;elsecost=0;3.7.1if語句的三種形式3.if語句的第三種形式truefalsetruetruetruefalsefalsefalsenum>500?num>300?num>100?num>50?cost=0.15cost=0cost=0.05cost=0.075cost=0.10例3-1

編寫程序計算貨物運費。設(shè)貨物運費單價為每噸每公里p(元),p與運輸距離s(公里)之間有如下關(guān)系:p=輸入要托運的貨物重量為w噸,托運距離s公里,計算總運費t: t=p*w*s2.1.1if語句3.7.1if語句的3種形式控制流圖truefalsetruetruetruefalsefalsefalseS<100?S<200?S<300?S<400?p=30p=20p=22.5p=25p=27.5t=p*w*s2.1.1if語句3.7.1if語句的3種形式truefalsetruetruetruefalsefalsefalseS<100?S<200?S<300?S<400?P=30P=20P=22.5P=25P=27.5t=p*w*s//例3-1計算貨物運費#include<iostream>#include<iomanip>usingnamespacestd;intmain(){doublet,p,w,s;cout<<"Pleaseinputweight(ton):";cin>>w;cout<<"Pleaseinputdistsnce(kilometre):";cin>>s;

if(s<100)p=30;elseif(s<200)p=27.5;elseif(s<300)p=25;elseif(s<400)p=22.5;elsep=20;t=p*w*s;cout<<"Thecostis:"<<setprecision(2)<<t<<'$'<<endl;return0;}2.1.1if語句3.7.1if語句的3種形式小結(jié):if語句3種形式if(表達(dá)式)語句;1.2.3.if(表達(dá)式)語句1;else語句2;If(表達(dá)式1)語句1elseif(表達(dá)式2)語句2elseif(表達(dá)式3)語句3…elseif(表達(dá)式m)語句melse語句n例如:if(x>y)cout<<x<<endl;if(x>y)cout<<x;elsecout<<y;if(number>500)cost=0.15;elseif(number>300)cost=0.10;elseif(number>100)cost=0.075;elseif(number>50)cost=0.05;elsecost=0;條件3.7.1if語句的三種形式說明:(1)3種形式的if語句都是由一個入口進(jìn)來,經(jīng)過對“表達(dá)式”的判斷,分別執(zhí)行相應(yīng)的語句,最后歸到一個共同的出口。這種形式的程序結(jié)構(gòu)稱為選擇結(jié)構(gòu)。(2)3種形式的if語句中在if后面都有一個用括號括起來的表達(dá)式,它是程序編寫者要求程序判斷的“條件”,一般是邏輯表達(dá)式或關(guān)系表達(dá)式。(3)第2、第3種形式的if語句中,在每個else前面有一分號,整個語句結(jié)束處有一分號。(4)在if和else后面可以只含一個內(nèi)嵌的操作語句(如上例),也可以有多個操作語句,此時用花括號“{}”將幾個語句括起來成為一個復(fù)合語句。練習(xí):已知三角形的三條邊,求三角形的面積。數(shù)據(jù)描述: 三角形三邊,面積均用實型數(shù)表示數(shù)據(jù)處理: 輸入三角形三邊a,b,c; 計算周長s=a+b+c; 利用公式計算面積area=sqrt(s*(s-a)*(s-b)*(s-c)); 輸出面積;例3.6求三角形的面積。#include<iostream>#include<cmath>//使用數(shù)學(xué)函數(shù)時要包含頭文件cmath#include<iomanip>//使用I/O流控制符要包含頭文件iomanipusingnamespacestd;intmain(){doublea,b,c;cout<<″pleaseentera,b,c:″;//輸入提示cin>>a>>b>>c;

if(a+b>c&&b+c>a&&c+a>b)

{

//復(fù)合語句開始doubles,area;//在復(fù)合語句內(nèi)定義變量s=(a+b+c)/2;area=sqrt(s*(s-a)*(s-b)*(s-c));cout<<setiosflags(ios∷fixed)<<setprecision(4);//指定輸出的數(shù)包含4位小數(shù)cout<<″area=″<<area<<endl;//在復(fù)合語句內(nèi)輸出局部變量的值

}

//復(fù)合語句結(jié)束elsecout<<″itisnotatrilateral!″<<endl;return0;}運行情況如下:pleaseentera,b,c:2.453.674.89↙area=4.3565變量s和area只在復(fù)合語句內(nèi)用得到,因此在復(fù)合語句內(nèi)定義,它的作用范圍為從定義變量開始到復(fù)合語句結(jié)束。如果在復(fù)合語句外使用s和area,則會在編譯時出錯,系統(tǒng)認(rèn)為這兩個變量未經(jīng)定義。將某些變量局限在某一范圍內(nèi),與外界隔離,可以避免在其他地方被誤調(diào)用。3.7.1if語句的三種形式在if語句中又包含一個或多個if語句稱為if語句的嵌套。一般形式如下:if()if()語句1else語句2 內(nèi)嵌ifelseif()語句3else語句4 內(nèi)嵌if應(yīng)當(dāng)注意if與else的配對關(guān)系。else總是與它上面最近的、未配對的if相配對。3.7.2if語句嵌套在if語句中又包含一個或多個if語句稱為if語句的嵌套。一般形式如下:if()if()語句1else語句2 內(nèi)嵌ifelseif()語句3else語句4 內(nèi)嵌if應(yīng)當(dāng)注意if與else的配對關(guān)系。else總是與它上面最近的、未配對的if相配對。3.7.2if語句嵌套假如寫成下列形式呢?else與哪一個if相配對?if()if()語句1elseif()語句2else語句3 內(nèi)嵌if

3.7.2if語句嵌套假如寫成下列形式呢?else與哪一個if相配對?if()if()語句1elseif()語句2else語句3 內(nèi)嵌if

3.7.2if語句嵌套假如寫成下列形式呢?else與哪一個if相配對?if()if()語句1elseif()語句2else語句3 內(nèi)嵌if

如果希望else與第一個if配對,應(yīng)該怎樣修改?3.7.2if語句嵌套如果if與else的數(shù)目不一樣,為實現(xiàn)程序設(shè)計者的企圖,可以加花括號來確定配對關(guān)系。例如:if(){if()語句1}

//這個語句是上一行if語句的內(nèi)嵌ifelse語句2//本行與第一個if配對這時{}限定了內(nèi)嵌if語句的范圍,{}外的else不會與{}內(nèi)的if配對。3.7.2if語句嵌套 if(E1) if(E2)S1

elseS2if(E1)

{if(E2)S1

}elseS2分析S1和S2的執(zhí)行條件:E1&&E2 執(zhí)行S1E1&&!E2執(zhí)行S2E1&&E2 執(zhí)行S1

!E1 執(zhí)行S2注意括號的作用2.1.1if語句3.7.2if語句嵌套例3-2輸入三個整數(shù),按從小到大順序輸出。解法一

數(shù)據(jù)排序。先找出最小值,放在a中,然后找次小值,放在b中。步驟:1.對a、b進(jìn)行比較,把小值放于a;

ifa>bab

//a<b2.對a、c進(jìn)行比較,把小值放于a;

ifa>cac

//a<c,a<b3.對b、c進(jìn)行比較,把小值放于b;

ifb>cbc

//a<b&&b<c4.輸出a,b,c的值。2.1.1if語句3.7.2if語句的嵌套例3-2輸入三個整數(shù),按從小到大順序輸出。a

7

5

2

bca>b:ab

a

5

7

2

bca

2

7

5

bc

2

7

a>c:ac

2

b>c:bc

a

2

5

7

bca<ba<b,a<ca<b&&b<c2.1.1if語句3.7.2if語句的嵌套例3-2輸入三個整數(shù),按從小到大順序輸出。#include<iostream>usingnamespacestd;intmain(){inta,b,c,t;cout<<"Pleaseinputthreeintegernumbers:";cin>>a>>b>>c;if(a>b){t=a;a=b;b=t;}if(a>c){t=a;a=c;c=t;}if(b>c){t=b;b=c;c=t;}cout<<a<<""<<b<<""<<c<<endl;return0;}注意語句塊結(jié)構(gòu)2.1.1if語句3.7.2if語句的嵌套例3-2輸入三個整數(shù),按從小到大順序輸出。#include<iostream>usingnamespacestd;intmain(){inta,b,c,t;cout<<"Pleaseinputthreeintegernumbers:";cin>>a>>b>>c;if(a>b)

{t=a;a=b;b=t;}if(a>c)

{t=a;a=c;c=t;}if(b>c)

{t=b;b=c;c=t;}cout<<a<<""<<b<<""<<c<<endl;return0;}注意語句塊結(jié)構(gòu)2.1.1if語句3.7.2if語句的嵌套例3-2輸入三個整數(shù),按從小到大順序輸出。解法二改變輸出順序:3個數(shù)的6種可能排列方式:

a<b<c a<b&&b<ca<c<b a<c&&c<bb<a<c b<a&&a<cb<c<a b<c&&c<ac<a<b c<a&&a<bc<b<a c<b&&b<a可以直接用1個判斷6次的if語句寫出程序2.1.1if語句if(a<b&&b<c)cout<<a<<‘‘<<b<<‘‘<<c;elseif(a<c&&c<b)cout<<a<<‘‘<<c<<‘‘<<b;elseif(b<a&&a<c)cout<<b<<‘‘<<a<<‘‘<<c;elseif(b<c&&c<a)cout<<b<<‘‘<<c<<‘‘<<a;elseif(c<a&&a<b)cout<<c<<‘‘<<a<<‘‘<<b;else//elseif(c<b&&b<a)

cout<<c<<‘‘<<b<<‘‘<<a;3.7.2if語句的嵌套例3-2輸入三個整數(shù),按從小到大順序輸出。解法二改變輸出順序:3個數(shù)的6種可能排列方式:

a<b<c a<b&&b<ca<c<b a<c&&c<bb<a<c b<a&&a<cb<c<a b<c&&c<ac<a<b c<a&&a<bc<b<a c<b&&b<a最壞情況要做7個關(guān)系運算和2個邏輯運算2.1.1if語句if(a<b&&b<c)cout<<a<<‘‘<<b<<‘‘<<c;elseif(a<c&&c<b)cout<<a<<‘‘<<c<<‘‘<<b;elseif(b<a&&a<c)cout<<b<<‘‘<<a<<‘‘<<c;elseif(b<c&&c<a)cout<<b<<‘‘<<c<<‘‘<<a;elseif(c<a&&a<b)cout<<c<<‘‘<<a<<‘‘<<b;else//elseif(c<b&&b<a)

cout<<c<<‘‘<<b<<‘‘<<a;3.7.2if語句的嵌套例3-2輸入三個整數(shù),按從小到大順序輸出。解法二改變輸出順序:3個數(shù)的6種可能排列方式:

a<b<c a<b&&b<ca<c<b a<c&&c<bb<a<c b<a&&a<cb<c<a b<c&&c<ac<a<b c<a&&a<b

c<b<a

c<b&&b<a2.1.1if語句if(a<b&&b<c)cout<<a<<‘‘<<b<<‘‘<<c;elseif(a<c&&c<b)cout<<a<<‘‘<<c<<‘‘<<b;elseif(b<a

&&

a<c)cout<<b<<‘‘<<a<<‘‘<<c;elseif(b<c&&c<a)cout<<b<<‘‘<<c<<‘‘<<a;elseif(c<a

&&a<b)cout<<c<<‘‘<<a<<‘‘<<b;else//elseif(c<b&&b<a)

cout<<c<<‘‘<<b<<‘‘<<a;最壞情況要做7個關(guān)系運算和2個邏輯運算3.7.2if語句的嵌套例3-2輸入三個整數(shù),按從小到大順序輸出。解法二改變輸出順序:3個數(shù)的6種可能排列方式:

a<b<c

a<b&&b<ca<c<b a<c&&c<bb<a<c b<a&&a<cb<c<a b<c&&c<ac<a<b c<a&&a<bc<b<a c<b&&b<a2.1.1if語句最好情況要做2個關(guān)系運算和1個邏輯運算if(a<b&&b<c)cout<<a<<‘‘<<b<<‘‘<<c;elseif(a<c&&c<b)cout<<a<<‘‘<<c<<‘‘<<b;elseif(b<a&&a<c)cout<<b<<‘‘<<a<<‘‘<<c;elseif(b<c&&c<a)cout<<b<<‘‘<<c<<‘‘<<a;elseif(c<a&&a<b)cout<<c<<‘‘<<a<<‘‘<<b;else//elseif(c<b&&b<a)

cout<<c<<‘‘<<b<<‘‘<<a;3.7.2if語句的嵌套例3-2輸入三個整數(shù),按從小到大順序輸出。解法二改變輸出順序:3個數(shù)的6種可能排列方式:

a<b<c

a<b&&b<ca<c<b a<c&&c<bb<a<c b<a&&a<cb<c<a b<c&&c<ac<a<b c<a&&a<bc<b<a c<b&&b<a2.1.1if語句最好情況要做2個關(guān)系運算和1個邏輯運算if(a<b&&b<c)

cout<<a<<‘‘<<b<<‘‘<<c;elseif(a<c&&c<b)cout<<a<<‘‘<<c<<‘‘<<b;elseif(b<a&&a<c)cout<<b<<‘‘<<a<<‘‘<<c;elseif(b<c&&c<a)cout<<b<<‘‘<<c<<‘‘<<a;elseif(c<a&&a<b)cout<<c<<‘‘<<a<<‘‘<<b;else//elseif(c<b&&b<a)

cout<<c<<‘‘<<b<<‘‘<<a;3.7.2if語句的嵌套例3-2輸入三個整數(shù),按從小到大順序輸出。解法二改變輸出順序:3個數(shù)的6種可能排列方式:

a<b<c a<b&&b<ca<c<b a<c&&c<bb<a<c b<a&&a<cb<c<a b<c&&c<ac<a<b c<a&&a<bc<b<a c<b&&b<a優(yōu)化算法首先分析a,b的順序2.1.1if語句3.7.2if語句的嵌套例3-2輸入三個整數(shù),按從小到大順序輸出。解法二改變輸出順序:3個數(shù)的6種可能排列方式:

a

<b<c a

<b&&b<c

a<c<b

a<c&&c<bb<a<c b<a&&a<cb<c<a b<c&&c<ac<a<b

c<a&&a<bc<b<a c<b&&b<a優(yōu)化算法首先分析a,b的順序然后分析c的位置a<b2.1.1if語句3.7.2if語句的嵌套例3-2輸入三個整數(shù),按從小到大順序輸出。解法二改變輸出順序:3個數(shù)的6種可能排列方式:

a<b<c

a<b&&b<c

a<c<b

a<c&&c<bb<a<c b<a&&a<cb<c<a b<c&&c<ac<a<b

c<a&&a<bc<b<a c<b&&b<a優(yōu)化算法首先分析a,b的順序然后分析c的位置a<b<c2.1.1if語句3.7.2if語句的嵌套例3-2輸入三個整數(shù),按從小到大順序輸出。解法二改變輸出順序:3個數(shù)的6種可能排列方式:

a<b<c

a<b&&b<c

a<c<b

a<c&&c<bb<a<c b<a&&a<cb<c<a b<c&&c<a

c

<a<b

c<a&&a<bc<b<a c<b&&b<a優(yōu)化算法首先分析a,b的順序然后分析c的位置c<

a<b2.1.1if語句3.7.2if語句的嵌套例3-2輸入三個整數(shù),按從小到大順序輸出。解法二改變輸出順序:3個數(shù)的6種可能排列方式:

a<b<c

a<b&&b<c

a<c<b

a<c&&c<bb<a<c b<a&&a<cb<c<a b<c&&c<a

c

<a<b

c<a&&a<bc<b<a c<b&&b<a優(yōu)化算法首先分析a,b的順序然后分析c的位置a<c<

b2.1.1if語句3.7.2if語句的嵌套例3-2輸入三個整數(shù),按從小到大順序輸出。解法二改變輸出順序:最壞情況做3次關(guān)系運算truefalsetruetruetruefalsefalsefalsefalsetruea<b?b<c?a<c?c,a,ba,c,ba,b,ca<c?b<c?b,a,cb,c,ac,b,abaab2.1.1if語句3.7.2if語句的嵌套例3-2輸入三個整數(shù),按從小到大順序輸出。解法二改變輸出順序:truefalsetruetruetruefalsefalsefalsefalsetruea<b?b<c?a<c?c,a,ba,c,ba,b,ca<c?b<c?b,a,cb,c,ac,b,abaab最壞情況做3次關(guān)系運算2.1.1if語句3.7.2if語句的嵌套例3-2輸入三個整數(shù),按從小到大順序輸出。解法二改變輸出順序:truefalsetruetruetruefalsefalsefalsefalsetruea<b?b<c?a<c?c,a,ba,c,ba,b,ca<c?b<c?b,a,cb,c,ac,b,abaab最好情況做2次關(guān)系運算2.1.1if語句3.7.2if語句的嵌套例3-2輸入三個整數(shù),按從小到大順序輸出。解法二改變輸出順序:truefalsetruetruetruefalsefalsefalsefalsetruea<b?b<c?a<c?c,a,ba,c,ba,b,ca<c?b<c?b,a,cb,c,ac,b,abaab最好情況做2次關(guān)系運算2.1.1if語句3.7.2if語句的嵌套例3-2輸入三個整數(shù),按從小到大順序輸出。解法二改變輸出順序:truefalsetruetruetruefalsefalsefalsefalsetruea<b?b<c?a<c?c,a,ba,c,ba,b,ca<c?b<c?b,a,cb,c,ac,b,abaab#include<iostream>usingnamespacestd;intmain(){inta,b,c;cout<<"Pleaseinputthreeintegernumbers:";cin>>a>>b>>c;if(a<b){if(b<c)cout<<a<<b<<c<<endl;else{if(a<c)cout<<a<<c<<b<<endl;elsecout<<c<<a<<b<<endl;}}else{if(a<c)cout<<b<<a<<c<<endl;else{if(b<c)cout<<b<<c<<a<<endl;elsecout<<c<<b<<a<<endl;}}return0;}注意if–else的匹配2.1.1if語句3.7.2if語句的嵌套例3-2輸入三個整數(shù),按從小到大順序輸出。解法二改變輸出順序:2.1.1if語句truefalsetruetruetruefalsefalsefalsefalsetruea<b?b<c?a<c?c,a,ba,c,ba,b,ca<c?b<c?b,a,cb,c,ac,b,abaab3.7.2if語句的嵌套#include<iostream>usingnamespacestd;intmain(){inta,b,c;cout<<"Pleaseinputthreeintegernumbers:";cin>>a>>b>>c;if(a<b){if(b<c)cout<<a<<b<<c<<endl;else{if(a<c)cout<<a<<c<<b<<endl;elsecout<<c<<a<<b<<endl;}}else

{if(a<c)cout<<b<<a<<c<<endl;else{if(b<c)cout<<b<<c<<a<<endl;elsecout<<c<<b<<a<<endl;}}return0;}例3-2輸入三個整數(shù),按從小到大順序輸出。解法二改變輸出順序:2.1.1if語句truefalsetruetruetruefalsefalsefalsefalsetruea<b?b<c?a<c?c,a,ba,c,ba,b,ca<c?b<c?b,a,cb,c,ac,b,abaab3.7.2if語句的嵌套#include<iostream>usingnamespacestd;intmain(){inta,b,c;cout<<"Pleaseinputthreeintegernumbers:";cin>>a>>b>>c;if(a<b){if(b<c)cout<<a<<b<<c<<endl;

else{if(a<c)cout<<a<<c<<b<<endl;elsecout<<c<<a<<b<<endl;}}else

{if(a<c)cout<<b<<a<<c<<endl;else{if(b<c)cout<<b<<c<<a<<endl;elsecout<<c<<b<<a<<endl;}}return0;}例3-2輸入三個整數(shù),按從小到大順序輸出。解法二改變輸出順序:2.1.1if語句truefalsetruetruetruefalsefalsefalsefalsetruea<b?b<c?a<c?c,a,ba,c,ba,b,ca<c?b<c?b,a,cb,c,abaabc,b,a3.7.2if語句的嵌套#include<iostream>usingnamespacestd;intmain(){inta,b,c;cout<<"Pleaseinputthreeintegernumbers:";cin>>a>>b>>c;if(a<b){if(b<c)cout<<a<<b<<c<<endl;

else{if(a<c)cout<<a<<c<<b<<endl;

elsecout<<c<<a<<b<<endl;}}else

{if(a<c)cout<<b<<a<<c<<endl;else{if(b<c)cout<<b<<c<<a<<endl;

elsecout<<c<<b<<a<<endl;}}return0;}2.if語句的嵌套注意:if與else的配對關(guān)系:else總是與它上面最近的、且未配對的if配對。例:if()

if()語句1

else()語句2else()

if()語句3

else()語句4}內(nèi)嵌if語句}內(nèi)嵌if語句3.7.2if語句的嵌套2.if語句的嵌套注意:if與else的配對關(guān)系:else總是與它上面最近的、且未配對的if配對。例:if()if()語句1else()if()語句2else()語句3}內(nèi)嵌if語句這個else與哪個if配對?3.7.2if語句的嵌套2.if語句的嵌套注意:if與else的配對關(guān)系:else總是與它上面最近的、且未配對的if配對。例:if()

if()語句1else()if()語句2else()語句3}內(nèi)嵌if語句與第2個if配對3.7.2if語句的嵌套2.if語句的嵌套建議:為了避免誤用,最好使每一層內(nèi)嵌的if語句都包含else子句。如果if的數(shù)目與else的數(shù)目不同,建議加花括號確定配對關(guān)系。例:

if(){if()語句1}else(){if()語句2else()語句3

}3.7.2if語句的嵌套(1)把輸入字符轉(zhuǎn)換為小寫字母。對輸入字符進(jìn)行判斷,如果是大寫字母,則轉(zhuǎn)換為小寫字母;否則,不轉(zhuǎn)換。//例3-3#include<iostream>usingnamespacestd;intmain(){charch;cout<<"ch=";cin>>ch;if(ch>='A'&&ch<='Z')ch+=32;cout<<ch<<endl;return0;}3.7.2if語句的嵌套3.應(yīng)用舉例如果輸入的是大寫字母(1)把輸入字符轉(zhuǎn)換為小寫字母。對輸入字符進(jìn)行判斷,如果是大寫字母,則轉(zhuǎn)換為小寫字母;否則,不轉(zhuǎn)換。3.7.2if語句的嵌套//例3-3#include<iostream>usingnamespacestd;intmain(){charch;cout<<"ch=";cin>>ch;if(ch>='A'&&ch<='Z')ch+=32;cout<<ch<<endl;return0;}//例3-3#include<iostream>usingnamespacestd;intmain(){charch;cout<<"ch=";cin>>ch;if(ch>='A'&&ch<='Z')

ch+=32;cout<<ch<<endl;return0;}3.應(yīng)用舉例計算ASCII碼偏移值(1)把輸入字符轉(zhuǎn)換為小寫字母。對輸入字符進(jìn)行判斷,如果是大寫字母,則轉(zhuǎn)換為小寫字母;否則,不轉(zhuǎn)換。3.7.2if語句的嵌套3.應(yīng)用舉例(1)把輸入字符轉(zhuǎn)換為小寫字母。對輸入字符進(jìn)行判斷,如果是大寫字母,則轉(zhuǎn)換為小寫字母;否則,不轉(zhuǎn)換。3.7.2if語句的嵌套//例3-3#include<iostream>usingnamespacestd;intmain(){charch;cout<<"ch=";cin>>ch;if(ch>='A'&&ch<='Z')ch+=32;cout<<ch<<endl;return0;}3.應(yīng)用舉例也可改寫為條件表達(dá)式ch=(ch>='A'&&ch<='Z')?ch+32:ch;(1)把輸入字符轉(zhuǎn)換為小寫字母。對輸入字符進(jìn)行判斷,如果是大寫字母,則轉(zhuǎn)換為小寫字母;否則,不轉(zhuǎn)換。3.7.2if語句的嵌套//例3-3#include<iostream>usingnamespacestd;intmain(){charch;cout<<"ch=";cin>>ch;if(ch>='A'&&ch<='Z')ch+=32;cout<<ch<<endl;return0;}條件運算表達(dá)式格式:

E1?E2:E3其中 ?:稱為條件運算符,是C++中唯一的三目運算符;

E1、E2、E3為表達(dá)式。功能根據(jù)E1的值,決定計算E2或E3。 若E1的值為true(非0),條件表達(dá)式的值為E2的值; 若E1的值為false(0),條件表達(dá)式的值為E3的值。3.8條件運算符和條件表達(dá)式示例//例計算a+|b|的值#include<iostream.h>voidmain(){floata,b;cout<<"Input2realsplease:\n";cin>>a>>b;cout<<a<<"+|"<<b<<"|="<<(b>=0?a+b:a-b)<<endl;}注意添加括號條件運算級別低于插入3.8條件運算符和條件表達(dá)式示例計算a、b之中的大值: max=a>b?a:b求a的符號: sig=a>0?1:(a<0?-1:0)想一想,以下的輸出是什么? intnumber=3;cout<<(number==1?”onefile”:”severalfiles”);

條件表達(dá)式的值與測試值無直接關(guān)系。3.8條件運算符和條件表達(dá)式根據(jù)一個整型表達(dá)式的值決定程序分支一般形式:

switch(表達(dá)式){case常量表達(dá)式1:語句1case常量表達(dá)式2:語句2 …case常量表達(dá)式n:語句ndefault:語句n+1}注:

表達(dá)式類型為非浮點型

各常量表達(dá)式類型要與之匹配各常量表達(dá)式要求各不相等default子句可選。缺省時,沒有匹配值switch語句為空語句標(biāo)號3.9多分支選擇結(jié)構(gòu)和switch語句根據(jù)一個整型表達(dá)式的值決定程序分支表達(dá)式語句1語句2語句3語句n語句n+1=常量1=常量2=常量3=常量n=常量n+1執(zhí)行流程3.9多分支選擇結(jié)構(gòu)和switch語句例3-5根據(jù)考試成績的等級打印出百分制分?jǐn)?shù)段。#include<iostream>usingnamespacestd;intmain(){chargrade;cout<<"Inputgradeofscore(a_d):"<<endl;cin>>grade;switch(grade){case'a':cout<<"85__100\n";case'b':cout<<"70__84\n";case'c':cout<<"60__69\n";case'd':cout<<"<60\n";default:cout<<"error\n";}return0;}觀察不同輸入時的輸出結(jié)果3.9多分支選擇結(jié)構(gòu)和switch語句例3-5根據(jù)考試成績的等級打印出百分制分?jǐn)?shù)段。輸入a3.9多分支選擇結(jié)構(gòu)和switch語句#include<iostream>usingnamespacestd;intmain(){chargrade;cout<<"Inputgradeofscore(a_d):"<<endl;cin>>grade;switch(grade){case'a':cout<<"85__100\n";case'b':cout<<"70__84\n";case'c':cout<<"60__69\n";case'd':cout<<"<60\n";default:cout<<"error\n";}return0;}例3-5根據(jù)考試成績的等級打印出百分制分?jǐn)?shù)段。輸入a3.9多分支選擇結(jié)構(gòu)和switch語句#include<iostream>usingnamespacestd;intmain(){chargrade;cout<<"Inputgradeofscore(a_d):"<<endl;cin>>grade;switch(grade){case'a':cout<<"85__100\n";case'b':cout<<"70__84\n";case'c':cout<<"60__69\n";case'd':cout<<"<60\n";default:cout<<"error\n";}return0;}例3-5根據(jù)考試成績的等級打印出百分制分?jǐn)?shù)段。輸入a輸出85__10070__8460__6960error3.9多分支選擇結(jié)構(gòu)和switch語句#include<iostream>usingnamespacestd;intmain(){chargrade;cout<<"Inputgradeofscore(a_d):"<<endl;cin>>grade;switch(grade){case'a':cout<<"85__100\n";case'b':cout<<"70__84\n";case'c':cout<<"60__69\n";case'd':cout<<"<60\n";default:cout<<"error\n";}return0;}例3-5根據(jù)考試成績的等級打印出百分制分?jǐn)?shù)段。輸入a輸出85__10070__8460__6960error3.9多分支選擇結(jié)構(gòu)和switch語句#include<iostream>usingnamespacestd;intmain(){chargrade;cout<<"Inputgradeofscore(a_d):"<<endl;cin>>grade;switch(grade){case'a':cout<<"85__100\n";case'b':cout<<"70__84\n";case'c':cout<<"60__69\n";case'd':cout<<"<60\n";default:cout<<"error\n";}return0;}例3-5根據(jù)考試成績的等級打印出百分制分?jǐn)?shù)段。輸入a輸出85__10070__8460__6960error3.9多分支選擇結(jié)構(gòu)和switch語句#include<iostream>usingnamespacestd;intmain(){chargrade;cout<<"Inputgradeofscore(a_d):"<<endl;cin>>grade;switch(grade){case'a':cout<<"85__100\n";case'b':cout<<"70__84\n";case'c':cout<<"60__69\n";case'd':cout<<"<60\n";default:cout<<"error\n";}return0;}例3-5根據(jù)考試成績的等級打印出百分制分?jǐn)?shù)段。輸入a輸出85__10070__8460__6960error3.9多分支選擇結(jié)構(gòu)和switch語句#include<iostream>usingnamespacestd;intmain(){chargrade;cout<<"Inputgradeofscore(a_d):"<<endl;cin>>grade;switch(grade){case'a':cout<<"85__100\n";case'b':cout<<"70__84\n";case'c':cout<<"60__69\n";case'd':cout<<"<60\n";default:cout<<"error\n";}return0;}例3-5根據(jù)考試成績的等級打印出百分制分?jǐn)?shù)段。輸入a輸出85__10070__8460__6960error3.9多分支選擇結(jié)構(gòu)和switch語句#include<iostream>usingnamespacestd;intmain(){chargrade;cout<<"Inputgradeofscore(a_d):"<<endl;cin>>grade;switch(grade){case'a':cout<<"85__100\n";case'b':cout<<"70__84\n";case'c':cout<<"60__69\n";case'd':cout<<"<60\n";default:cout<<"error\n";}return0;}例3-5根據(jù)考試成績的等級打印出百分制分?jǐn)?shù)段。輸入a輸出85__10070__8460__6960error3.9多分支選擇結(jié)構(gòu)和switch語句#include<iostream>usingnamespacestd;intmain(){chargrade;cout<<"Inputgradeofscore(a_d):"<<endl;

溫馨提示

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

最新文檔

評論

0/150

提交評論