第三章基本程序設(shè)計(jì)_第1頁
第三章基本程序設(shè)計(jì)_第2頁
第三章基本程序設(shè)計(jì)_第3頁
第三章基本程序設(shè)計(jì)_第4頁
第三章基本程序設(shè)計(jì)_第5頁
已閱讀5頁,還剩171頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

1、2021-10-231第三章第三章 基本程序設(shè)計(jì)基本程序設(shè)計(jì) 3.1 3.1 順序結(jié)構(gòu)程序設(shè)計(jì)順序結(jié)構(gòu)程序設(shè)計(jì) 例例3.13.1、“雞兔同籠問題雞兔同籠問題”:在一個(gè)籠子里養(yǎng):在一個(gè)籠子里養(yǎng)著雞與兔,但不知其中雞有多少只,兔有多少只。著雞與兔,但不知其中雞有多少只,兔有多少只。只知道雞和兔的總數(shù)是只知道雞和兔的總數(shù)是a a,雞與兔的總腳數(shù)是,雞與兔的總腳數(shù)是b b,求雞與兔各有多少只。求雞與兔各有多少只。2021-10-232 思路分析:思路分析:首先從題目本身開始,找出解決問題的基本思路。首先從題目本身開始,找出解決問題的基本思路。每只雞有兩只腳,每只兔有四只腳。假設(shè)有每只雞有兩只腳,每只兔

2、有四只腳。假設(shè)有x x只只雞和雞和y y只兔,則根據(jù)已知條件可列出如下方程組:只兔,則根據(jù)已知條件可列出如下方程組: x+y=ax+y=a 2x+4y=b 2x+4y=b 對(duì)該方程組做進(jìn)一步的轉(zhuǎn)換可得:對(duì)該方程組做進(jìn)一步的轉(zhuǎn)換可得: 2422/ )ba(x/ )ab(y2422/ )ba(x/ )ab(y2021-10-233#include#includeusing namespace std;using namespace std;void main( )void main( ) int a,b,x,y;int a,b,x,y;coutcouta;cina;coutcoutb;cinb;x

3、=(4x=(4* *a-b)/2;a-b)/2;y=(b-2y=(b-2* *a)/2;a)/2;coutcout雞的數(shù)量為雞的數(shù)量為:xendl;:xendl;coutcout兔的數(shù)量為兔的數(shù)量為:yendl;:yendl; 2021-10-234一、內(nèi)置數(shù)學(xué)函數(shù)一、內(nèi)置數(shù)學(xué)函數(shù)函數(shù)是執(zhí)行一項(xiàng)任務(wù)的代碼塊。函數(shù)是執(zhí)行一項(xiàng)任務(wù)的代碼塊。getline()getline()函數(shù)函數(shù): : getline(i,v)getline(i,v)實(shí)際調(diào)用時(shí)形式:實(shí)際調(diào)用時(shí)形式:getline(cin,a);getline(cin,a);擴(kuò)號(hào)內(nèi)有兩個(gè)參數(shù);擴(kuò)號(hào)內(nèi)有兩個(gè)參數(shù);實(shí)際調(diào)用時(shí)實(shí)際調(diào)用時(shí)擴(kuò)號(hào)內(nèi)的參擴(kuò)號(hào)

4、內(nèi)的參數(shù)稱為數(shù)稱為實(shí)際參數(shù)實(shí)際參數(shù)或或?qū)崊?shí)參。自定義函數(shù)自定義函數(shù):自己決定其任務(wù)的函數(shù)。:自己決定其任務(wù)的函數(shù)。2021-10-235內(nèi)置函數(shù)內(nèi)置函數(shù):庫文件中已定義好功能的函數(shù);:庫文件中已定義好功能的函數(shù);只要知道該函數(shù)包含在哪個(gè)庫中,可直接調(diào)用。只要知道該函數(shù)包含在哪個(gè)庫中,可直接調(diào)用。c+c+內(nèi)置數(shù)學(xué)函數(shù)的定義都在內(nèi)置數(shù)學(xué)函數(shù)的定義都在cmathcmath庫文件中庫文件中, ,使用內(nèi)置數(shù)學(xué)函數(shù)時(shí),要加文件包含命令:使用內(nèi)置數(shù)學(xué)函數(shù)時(shí),要加文件包含命令:#include#include1 1、冪函數(shù)和平方根函數(shù)、冪函數(shù)和平方根函數(shù)冪函數(shù)冪函數(shù):pow(x,y)pow(x,y)y=po

5、w(3,4)y=pow(3,4);y=pow(1.7,2.3)y=pow(1.7,2.3);平方根函數(shù)平方根函數(shù): :sqrt(x)sqrt(x)y=sqrt(9)y=sqrt(9);y=sqrt(3.3)y=sqrt(3.3);2021-10-236例例3.23.2、編程計(jì)算、編程計(jì)算3x3x7 7y y3 3+7x+7x4 4y y5 5+x+x2 2y y6 6-7-7z=z=的值的值. .x x5 5y y3 3+5x+5x3 3y y4 4+2xy+2xy5 5+3+3程序:程序:#include #include #include #include using namespace

6、std;using namespace std;2021-10-237void main()void main() double x,y,z;double x,y,z;coutinput x,y:endl;coutinput x,y:xy;cinxy;z=(3z=(3* *pow(x,7)pow(x,7)* *pow(y,3)+7pow(y,3)+7* *pow(x,4)pow(x,4)* *pow(y,5)+xpow(y,5)+x* *x x* *pow(y,6)-7)/pow(y,6)-7)/(pow(x,5)(pow(x,5)* *pow(y,3)+2pow(y,3)+2* *x x*

7、*pow(y,5)pow(y,5)+5+5* *pow(x,3)pow(x,3)* *pow(y,4)+3);pow(y,4)+3);coutz=zendl;coutz=zendl; 2021-10-238例例3.33.3、根據(jù)三邊長求三角形面積、根據(jù)三邊長求三角形面積可根據(jù)海倫公式可求結(jié)果可根據(jù)海倫公式可求結(jié)果: :假設(shè)三角形三邊長分別為假設(shè)三角形三邊長分別為a a、b b、c c三角形面積為三角形面積為areaarea,則,則海倫公式海倫公式: :area=s(s-a)(s-b)(s-c)area=s(s-a)(s-b)(s-c)其中:其中:s=(a+b+c)/2s=(a+b+c)/220

8、21-10-239程序:程序:#include #include #include #include using namespace std;using namespace std;void main()void main() double a, b, c, s, area;double a, b, c, s, area;cout please input a, b, c =?endl;cout please input a, b, c =? a b c;cin a b c;s = (a+b+c)/2;s = (a+b+c)/2;area = sqrt(sarea = sqrt(s* *(s-

9、a)(s-a)* *(s-b)(s-b)* *(s-c);(s-c);cout area = area endl;cout area = area endl; 2021-10-23102 2、余弦、正弦和正切函數(shù)余弦、正弦和正切函數(shù)余弦函數(shù)余弦函數(shù):cos(x)cos(x)正弦函數(shù)正弦函數(shù):sin(x)sin(x)正切函數(shù)正切函數(shù):tan(x)tan(x)x x的單位為弧度的單位為弧度例例3.43.4、編程求、編程求z=3sinx-2cosyz=3sinx-2cosy的值。的值。程序:程序:2021-10-2311#include #include #include #include usin

10、g namespace std;using namespace std;void main()void main() double x,y,z;double x,y,z;const double pi=3.14159;const double pi=3.14159;coutcout輸入輸入x x和和y y的值的值( (度度) ):endl;xy;cinxy;x=xx=x* *pi/180;y=ypi/180;y=y* *pi/180;pi/180;z=3z=3* *sin(x)-2sin(x)-2* *cos(y);cos(y);coutz=zendl;coutz=zendl; 2021-10

11、-23123 3、其它常用數(shù)學(xué)函數(shù)其它常用數(shù)學(xué)函數(shù)求求絕對(duì)值絕對(duì)值:abs(x)abs(x)指數(shù)函數(shù)指數(shù)函數(shù)(e(ex x) ) :exp(x)exp(x)自然對(duì)數(shù)自然對(duì)數(shù)(lnx)(lnx):log(x)log(x)常用對(duì)數(shù)常用對(duì)數(shù)(log(log1010 x)x): log10(x)log10(x)2021-10-2313二、產(chǎn)生隨機(jī)數(shù)二、產(chǎn)生隨機(jī)數(shù)產(chǎn)生產(chǎn)生隨機(jī)數(shù)函數(shù)隨機(jī)數(shù)函數(shù)(隨機(jī)數(shù)產(chǎn)生器):(隨機(jī)數(shù)產(chǎn)生器):rand( )rand( )其作用為返回一個(gè)其作用為返回一個(gè)0 0到到3276732767之間的正整數(shù)。之間的正整數(shù)。隨機(jī)數(shù)產(chǎn)生器初始化函數(shù)隨機(jī)數(shù)產(chǎn)生器初始化函數(shù):srand(se

12、ed)srand(seed)其中其中seedseed為一數(shù)字,表示為一數(shù)字,表示rand()rand()的起始點(diǎn)。的起始點(diǎn)。對(duì)未初始化或用相同數(shù)字初始化的對(duì)未初始化或用相同數(shù)字初始化的rand()rand(),每次,每次執(zhí)行時(shí)產(chǎn)生同一系列數(shù)字。執(zhí)行時(shí)產(chǎn)生同一系列數(shù)字。使用上面兩函數(shù)時(shí),要加下面文件包含命令使用上面兩函數(shù)時(shí),要加下面文件包含命令#include#include2021-10-2314例例3.53.5、#include#include#include#includeusing namespace std;using namespace std;void main()void mai

13、n() srand(8);srand(8);coutrand(),rand(),rand()coutrand(),rand(),rand(),rand(),rand()endl;,rand(),rand()endl; 2021-10-2315常用內(nèi)置的常用內(nèi)置的time()time()函數(shù)作為函數(shù)作為srand()srand()函數(shù)中函數(shù)中seedseed的值。的值。time()time()函數(shù)函數(shù):根據(jù)計(jì)算機(jī)系統(tǒng)的時(shí)鐘返回自:根據(jù)計(jì)算機(jī)系統(tǒng)的時(shí)鐘返回自19701970年年1 1月月1 1日午夜開始到目前的秒數(shù)。日午夜開始到目前的秒數(shù)。使用使用time()time()函數(shù)要加下面文件包含命令函

14、數(shù)要加下面文件包含命令#include#include一般使用方法一般使用方法:srand(time(null);srand(time(null);nullnull是一個(gè)定義在是一個(gè)定義在cstdlibcstdlib和和ctimectime庫文件中庫文件中的常量(的常量(0 0值),值),time(null)time(null)僅返回其值而不存僅返回其值而不存儲(chǔ)該返回值。儲(chǔ)該返回值。2021-10-2316例例3.63.6、簡單加法出題系統(tǒng)、簡單加法出題系統(tǒng)#include#include#include#include#include#includeusing namespace std;u

15、sing namespace std;void main()void main() int i,j,k; int i,j,k; srand(time(null);srand(time(null);i=rand();j=rand();i=rand();j=rand();couti+j=;couti+jk;cink; 2021-10-2317產(chǎn)生特定范圍內(nèi)的產(chǎn)生特定范圍內(nèi)的隨機(jī)數(shù):隨機(jī)數(shù):公式:公式:下限下限+rand() % (+rand() % (上限上限- -下限下限+1)+1)如:如:產(chǎn)生產(chǎn)生1 1到到1010的隨機(jī)數(shù):的隨機(jī)數(shù):1+rand()%10 1+rand()%10 產(chǎn)生產(chǎn)生10

16、10到到100100的隨機(jī)數(shù):的隨機(jī)數(shù):10+rand()%9110+rand()%912021-10-2318三、格式化數(shù)字的輸出三、格式化數(shù)字的輸出普通情況下小數(shù)點(diǎn)前多于普通情況下小數(shù)點(diǎn)前多于6 6位時(shí)以位時(shí)以e e符號(hào)顯示,符號(hào)顯示,否則以定點(diǎn)符號(hào)顯示。否則以定點(diǎn)符號(hào)顯示。fixedfixed:控制以定點(diǎn)符號(hào)顯示數(shù)據(jù)輸出:控制以定點(diǎn)符號(hào)顯示數(shù)據(jù)輸出用法:用法:coutfixed;coutfixed; 取消控制:取消控制:cout.unsetf(ios:fixed); cout.precision(p)cout.precision(p):指明有效位數(shù):指明有效位數(shù)p p位位例如:例如:co

17、ut.precision(5)cout.precision(5):顯示:顯示5 5位有效數(shù)位有效數(shù)cout.precision(0)cout.precision(0):回到正常方式:回到正常方式兩個(gè)共用時(shí),兩個(gè)共用時(shí),cout.precision(p)cout.precision(p)表示小數(shù)點(diǎn)表示小數(shù)點(diǎn)后的位數(shù)。后的位數(shù)。2021-10-2319例例3.73.7、#include#includeusing namespace std;using namespace std;void main()void main() double a=12345678.87654321; double a=

18、12345678.87654321;double b=87654321.12345678;double b=87654321.12345678;cout.precision(7);cout.precision(7);coutfixed;coutfixed;couta=aendl;couta=aendl;coutb=bendl;coutb=bendl; 2021-10-2320cout.width(p)cout.width(p):設(shè)置字段寬度。設(shè)置字段寬度。例例3.83.8、#include#include#include#includeusing namespace std;using nam

19、espace std;void main()void main() string str1=12345,str2=abcdefgh; string str1=12345,str2=abcdefgh; cout.width (10); cout.width (10); coutstr1endl; coutstr1endl; coutstr2endl; coutstr2endl; 2021-10-2321setw(p)setw(p):設(shè)置字段寬度。設(shè)置字段寬度。例例3.93.9、#include#include#include /#include /用用setwsetw要包含此文件要包含此文件#i

20、nclude#includeusing namespace std;using namespace std;void main()void main() string str1=12345,str2=abcdefgh; string str1=12345,str2=abcdefgh; coutsetw(10)str1endl; coutsetw(10)str1endl; coutstr2endl; coutstr2endl; 2021-10-23223.2 3.2 選擇結(jié)構(gòu)程序設(shè)計(jì)選擇結(jié)構(gòu)程序設(shè)計(jì) 選擇結(jié)構(gòu)是根據(jù)給定條件的判斷結(jié)果決定程選擇結(jié)構(gòu)是根據(jù)給定條件的判斷結(jié)果決定程序執(zhí)行的走向,也稱判

21、斷結(jié)構(gòu)。序執(zhí)行的走向,也稱判斷結(jié)構(gòu)。如:如:x xx0 x0計(jì)算計(jì)算 絕對(duì)值絕對(duì)值y=y=-x-xx x0 02021-10-2323選擇結(jié)構(gòu)的框圖表示選擇結(jié)構(gòu)的框圖表示: :一、一路分支一、一路分支2021-10-2324復(fù)合語句復(fù)合語句 語句語句1;1;語句語句2;2; 。 。 。語句語句n;n; 如:如: x=y+7;x=y+7;y+=1.8;y+=1.8;coutxy;coutxy; 2021-10-2325例例3.103.10、求、求x x的絕對(duì)值的框圖:的絕對(duì)值的框圖:no yesx=-xx=-xx0?x0?開始開始結(jié)束結(jié)束輸入輸入x x輸出輸出x x2021-10-2326程序:

22、程序:#include#includeusing namespace std;using namespace std;void main()void main() double x;double x;coutinput x:;coutx;cinx;if (x0) if (x0) x=-x;x=-x;coutxendl;coutxx?yx?開始開始結(jié)束結(jié)束輸入輸入x,yx,y輸出輸出x,yx,y2021-10-2328正確框圖:正確框圖:t=xt=xx=yx=yy=ty=tyx?yx?開始開始結(jié)束結(jié)束輸入輸入x,yx,y輸出輸出x,yx,y2021-10-2329#include#include

23、using namespace std;using namespace std;void main() void main() double x,y,t;double x,y,t;coutintput x and y :;coutxy;cinxy;if(yx)if(yx)t=x;t=x;x=y;x=y;y=t;y=t;coutx,yendl;coutx,yendl; 2021-10-2330正確程序:正確程序:#include#includeusing namespace std;using namespace std;void main() void main() double x,y,t;

24、double x,y,t;coutintput x and y :;coutxy;cinxy;if(yx)if(yx)t=x;x=y;y=t;t=x;x=y;y=t;coutx,yendl;coutx,yendl; 2021-10-2331二、兩路分支2021-10-2332 例例3.123.12、求求y=y= 的值的值#include#includeusing namespace std;using namespace std;void main()void main() double x,y;double x,y;cinx;cinx;if (x8.0) if (x8.0) y=6.0y=6

25、.0* *x-5.0;x-5.0;else else y=10.0-3y=10.0-3* *x;x;coutx=xty=yendl;coutx=xty=yendl; /輸入輸入 8989結(jié)果:結(jié)果: x=89x=89y=-257y=-25710-310-3* *x x8x x8 6 6* *x-5 xx-5 x8 82021-10-2333三、三、邏輯運(yùn)算符與邏輯表達(dá)式邏輯運(yùn)算符與邏輯表達(dá)式選擇結(jié)構(gòu)中的選擇結(jié)構(gòu)中的“條件條件p”p”實(shí)際上是一個(gè)表達(dá)式,實(shí)際上是一個(gè)表達(dá)式,程序根據(jù)此表達(dá)式的值是程序根據(jù)此表達(dá)式的值是 “ “非非0”0”(條件成立)(條件成立)還是還是 “ “0”0”(條件不成立

26、(條件不成立) )來決定流向來決定流向.1 1、關(guān)系運(yùn)算符與關(guān)系表達(dá)式、關(guān)系運(yùn)算符與關(guān)系表達(dá)式關(guān)系運(yùn)算是比較簡單的一種邏輯運(yùn)算,優(yōu)先關(guān)系運(yùn)算是比較簡單的一種邏輯運(yùn)算,優(yōu)先次序?yàn)椋捍涡驗(yàn)椋?( (小于小于) ) = ( ( (大于大于) ) = (= (小于等于小于等于) )優(yōu)先級(jí)相同(高)優(yōu)先級(jí)相同(高) =(=(等于等于) ) != (!= (不等于不等于) ) 優(yōu)先級(jí)相同(低)優(yōu)先級(jí)相同(低)2021-10-2334算術(shù)運(yùn)算符的優(yōu)先級(jí)高于關(guān)系運(yùn)算符算術(shù)運(yùn)算符的優(yōu)先級(jí)高于關(guān)系運(yùn)算符( (比較運(yùn)比較運(yùn)算符算符).).關(guān)系表達(dá)式是一種最簡單的邏輯表達(dá)式,其關(guān)系表達(dá)式是一種最簡單的邏輯表達(dá)式,其形

27、式就是用關(guān)系運(yùn)算符將兩個(gè)表達(dá)式連接起來,形式就是用關(guān)系運(yùn)算符將兩個(gè)表達(dá)式連接起來,其結(jié)果類型為其結(jié)果類型為 boolbool,值只能為,值只能為 true true 或或 falsefalse。如果比較運(yùn)算的結(jié)果成立則表達(dá)式取值如果比較運(yùn)算的結(jié)果成立則表達(dá)式取值true(true(真真),),否則取值否則取值false(false(假假) )。例如:例如:ababc=a+bc=a+bx+y=3x+y=32021-10-2335例例3.133.13、求一元二次方程、求一元二次方程axax2 2+bx+c=0+bx+c=0的根,其中的根,其中系數(shù)系數(shù)a,b,ca,b,c為實(shí)數(shù),由鍵盤輸入。為實(shí)數(shù),

28、由鍵盤輸入。程序:程序:#include#include#include#includeusing namespace std;using namespace std;void main()void main() double a, b, c, delta, p, q;double a, b, c, delta, p, q;coutplease intput a, b, c = ?;coutabc;cinabc;delta = bdelta = b* *b-4b-4* *a a* *c;c;2021-10-2336p=-b/(2p=-b/(2* *a);a);q=sqrt(abs(delta)

29、/(2q=sqrt(abs(delta)/(2* *a);a);if(delta = 0)if(delta = 0) coutx1 = p+qendl;coutx1 = p+qendl;coutx2 = p-qendl;coutx2 = p-qendl; elseelse coutx1 = p + jqendl;coutx1 = p + jqendl;coutx2 = p - jqendl;coutx2 = p - jqb)&(xy)(ab)&(xy)!a&b+!a&b+a|b+4&aa|b+4&a* *b by=!a+a|by=!a+a|b2021-10-2340例例3.143.14、分析程

30、序運(yùn)行結(jié)果、分析程序運(yùn)行結(jié)果#include#includeusing namespace std;using namespace std;void main()void main() int n,m,a=8,b=5;int n,m,a=8,b=5;n=ab;n=ab;m=ab;coutn=ntm=mendl;coutn=ntm=mb)&(10090);n=(ab)&(10090); m=(a90);m=(a90);coutn=ntm=mendl;coutn=ntm=mendl; 2021-10-2341例例3.153.15、編寫一用戶登錄的判斷程序、編寫一用戶登錄的判斷程序程序:程序:#in

31、clude #include #include #include using namespace std;using namespace std;void main(void)void main(void) string username,password;string username,password;coutplease input your username: ;coutusername;cinusername;2021-10-2342coutplease input your password: ;coutpassword;cinpassword;if(username=studen

32、t005&if(username=student005&password=12345678)password=12345678)coutok!endl;coutok!endl;if(username=student005&if(username=student005&password!=12345678)password!=12345678)coutpassword error!endl;coutpassword error!endl;2021-10-2343if(username!=student005&if(username!=student005&password=12345678)pa

33、ssword=12345678)coutusername error!endl;coutusername error!endl;if(username!=student005&if(username!=student005&password!=12345678)password!=12345678)coutusername and password coutusername and password error!endl;error!endl; 2021-10-2344例例3.163.16、輸入一個(gè)年份,判斷是否閏年、輸入一個(gè)年份,判斷是否閏年閏年條件閏年條件 ( (1)1)能被能被4 4整除

34、整除, ,但不能被但不能被100100整除的年份整除的年份(2)(2)能被能被100100整除整除, ,又能被又能被400400整除的年份整除的年份分析:分析:條件條件(1)(1)中能被中能被4 4整除可表示為整除可表示為:x%4=0:x%4=0不能被不能被100100整除可表示為整除可表示為: :x%100!=0 x%100!=0同時(shí)滿足則條件同時(shí)滿足則條件(1)(1)表示為:表示為: (x%4=0)&(x%100!=0)(x%4=0)&(x%100!=0)2021-10-2345條件條件(2)(2)中能被中能被100100整除可表示為整除可表示為:x%100=0:x%100=0能被能被40

35、0400整除可表示為整除可表示為:x%400=0:x%400=0同時(shí)滿足則條件同時(shí)滿足則條件(2)(2)表示為:表示為: (x%100=0)&(x%400=0)(x%100=0)&(x%400=0)因能被因能被400400整除的數(shù)必能被整除的數(shù)必能被100100整除,所以條整除,所以條件件(2)(2)可改為:可改為:(x%400=0) (x%400=0) 而總表達(dá)式則為而總表達(dá)式則為(1)(1)、(2)(2)的邏輯或的邏輯或. .2021-10-2346#include #include using namespace std;using namespace std;void main(voi

36、d)void main(void) int year; int year;bool isleapyear;bool isleapyear;coutyear;coutyear;isleapyear=(year%4=0&year%100!=0)isleapyear=(year%4=0&year%100!=0)|(year%400=0);|(year%400=0);if(isleapyear)if(isleapyear)coutyear is a leap yearendl;coutyear is a leap yearendl;elseelsecoutyear is not a leap year

37、endl;coutyear is not a leap yearendl; 2021-10-2347原則上,邏輯運(yùn)算符的操作數(shù)應(yīng)為原則上,邏輯運(yùn)算符的操作數(shù)應(yīng)為boolbool型數(shù)型數(shù)據(jù),如果操作數(shù)是其它類型,編譯系統(tǒng)會(huì)自動(dòng)將據(jù),如果操作數(shù)是其它類型,編譯系統(tǒng)會(huì)自動(dòng)將非非0 0數(shù)據(jù)轉(zhuǎn)換為數(shù)據(jù)轉(zhuǎn)換為truetrue,0 0轉(zhuǎn)換為轉(zhuǎn)換為falsefalse。算術(shù)表達(dá)式的值可以作為數(shù)值,也可以作為算術(shù)表達(dá)式的值可以作為數(shù)值,也可以作為邏輯值,作為邏輯值使用時(shí),非邏輯值,作為邏輯值使用時(shí),非0 0代表邏輯真代表邏輯真(true)(true),而,而0 0代表邏輯假代表邏輯假(false).(false

38、).如:如: if (x)if (x)/x/x為數(shù)值為數(shù)值if(10&-5.6) cout“true”;if(10&-5.6) cout“true”;2021-10-2348例例3.173.17、編程計(jì)算函數(shù)、編程計(jì)算函數(shù) 1010其它其它y=y=的值的值 -5.7-5.7x=8x=82021-10-2349程序一:程序一:#include #include using namespace std;using namespace std;void main(void)void main(void) double x,y;double x,y;coutinput x= ;coutx;cinx;i

39、f(x=8)if(x=8)y=-5.7;y=-5.7;elseelsey=10.0;y=10.0;coutx=x,y=yendl;coutx=x,y=yendl; 2021-10-2350程序二:程序二:#include #include using namespace std;using namespace std;void main(void)void main(void) double x,y;double x,y;coutinput x= ;coutx;cinx;if(x-8)if(x-8)y=10.0;y=10.0;elseelsey=-5.7;y=-5.7;coutx=x,y=ye

40、ndl;coutx=x,y=yendl; 2021-10-2351有些數(shù)學(xué)上的數(shù)值區(qū)間,不能直接用在有些數(shù)學(xué)上的數(shù)值區(qū)間,不能直接用在c+c+的的條件表達(dá)式中,否則會(huì)得到錯(cuò)誤的結(jié)果。條件表達(dá)式中,否則會(huì)得到錯(cuò)誤的結(jié)果。例例3.183.18、編程計(jì)算函數(shù)、編程計(jì)算函數(shù) x x2 2+1.5+1.51 1x10 x10y=y=的值的值 8.58.5其它其它2021-10-2352#include#includeusing namespace std;using namespace std;void main()void main() double x,y;double x,y;coutinput

41、x=;coutx;cinx;if(1x=10)if(1x=10)y=xy=x* *x+1.5;x+1.5;elseelsey=8.5;y=8.5;coutx=x,y=yendl;coutx=x,y=yendl; 2021-10-2353x x在在 (1,10(1,10區(qū)間區(qū)間, ,在在c+c+中若直接寫成中若直接寫成“1x=10”,1x=10”,表面上看表達(dá)式?jīng)]有錯(cuò)誤,但按照表面上看表達(dá)式?jīng)]有錯(cuò)誤,但按照關(guān)系運(yùn)算符從左到右的運(yùn)算原則:關(guān)系運(yùn)算符從左到右的運(yùn)算原則:當(dāng)當(dāng)x x的值在的值在(1,10(1,10區(qū)間時(shí),先運(yùn)算區(qū)間時(shí),先運(yùn)算“1x”1x”的的值為值為1 1,再運(yùn)算,再運(yùn)算“1=10”1

42、=10”得整個(gè)表達(dá)式的值為得整個(gè)表達(dá)式的值為1(1(真真) ),此結(jié)果正確。,此結(jié)果正確。但當(dāng)?shù)?dāng)x x的值不在的值不在(1,10(1,10區(qū)間時(shí),同樣得整個(gè)表區(qū)間時(shí),同樣得整個(gè)表達(dá)式的值為達(dá)式的值為1(1(真真) ),結(jié)果不正確。,結(jié)果不正確。此表達(dá)式在此表達(dá)式在c+c+中的正確寫法應(yīng)該是:中的正確寫法應(yīng)該是:1x & x=101x & x=102021-10-2354正確程序:正確程序:#include#includeusing namespace std;using namespace std;void main()void main() double x,y;double x,y;co

43、utinput x=;coutx;cinx;if(1x&x=10)if(1x&x=10)y=xy=x* *x+1.5;x+1.5;elseelsey=8.5;y=8.5;coutx=x,y=yendl;coutx=x,y=yy) if(xy) t=x;x=y;y=t; t=x;x=y;y=t; 用逗號(hào)表達(dá)式可簡化為:用逗號(hào)表達(dá)式可簡化為:if(xy) if(xy) t=x,x=y,y=t;t=x,x=y,y=t;2021-10-2357五、五、? ?運(yùn)算符和運(yùn)算符和? ?表達(dá)式表達(dá)式? ?運(yùn)算符由運(yùn)算符由? ?和和: :兩個(gè)運(yùn)算符組成,也稱為條件兩個(gè)運(yùn)算符組成,也稱為條件運(yùn)算符運(yùn)算符. .是一

44、個(gè)三目運(yùn)算符,對(duì)三個(gè)運(yùn)算對(duì)象進(jìn)行操是一個(gè)三目運(yùn)算符,對(duì)三個(gè)運(yùn)算對(duì)象進(jìn)行操作。作。? ?表達(dá)式也稱為條件表達(dá)式,其格式為:表達(dá)式也稱為條件表達(dá)式,其格式為: 表達(dá)式表達(dá)式1 ? 1 ? 表達(dá)式表達(dá)式2 : 2 : 表達(dá)式表達(dá)式3 32021-10-2358 ? ?表達(dá)式框圖表達(dá)式框圖執(zhí)行過程:執(zhí)行過程:如果表達(dá)式如果表達(dá)式1 1 的值為的值為非零值,則非零值,則? ?表達(dá)式的表達(dá)式的值為表達(dá)式值為表達(dá)式2 2的值;的值;如果表達(dá)式如果表達(dá)式1 1 的值等的值等于零,則于零,則? ?表達(dá)式的值表達(dá)式的值為表達(dá)式為表達(dá)式3 3的值。的值。2021-10-2359 ? ?表達(dá)式的優(yōu)先級(jí)比賦值運(yùn)算符表達(dá)

45、式的優(yōu)先級(jí)比賦值運(yùn)算符“=”=”高,比高,比邏輯或邏輯或“|”|”低。低。 ? ?表達(dá)式經(jīng)常用來替換下面形式的表達(dá)式經(jīng)常用來替換下面形式的ifif語句:語句:if(xy)if(xy)z=x;z=x;elseelsez=y;z=y;可寫成:可寫成:z=xy ? x : y;z=xy ? x : y; ? ?表達(dá)式執(zhí)行比表達(dá)式執(zhí)行比if-elseif-else快很多??旌芏唷?021-10-2360例例3.193.19、求雙精度類型量的絕對(duì)值、求雙精度類型量的絕對(duì)值#include #include using namespace std;using namespace std;void main

46、()void main() double x,y;double x,y;cinx;cinx;y=x0?x:-x;y=x0?x:-x;coutyendl;couty() . -自左至右自左至右2 2 - + + - ! (t) - + + - ! (t) * * & sizeof & sizeof自右至左自右至左3 3 * * / % / %自左至右自左至右4 4 + +(加)加) - -(減)減)自左至右自左至右5 5 自左至右自左至右2021-10-2362優(yōu)先級(jí)優(yōu)先級(jí)運(yùn)算符運(yùn)算符結(jié)合方向結(jié)合方向8 8 & &(按位與)(按位與)自左至右自左至右9 9 自左至右自左至右1010 | |自左至

47、右自左至右1111 &自左至右自左至右1212 |自左至右自左至右1313 ? :? :自右至左自右至左2021-10-2363七、嵌套的選擇結(jié)構(gòu)七、嵌套的選擇結(jié)構(gòu)當(dāng)一個(gè)選擇結(jié)構(gòu)中包含有其它的選擇結(jié)構(gòu)時(shí),當(dāng)一個(gè)選擇結(jié)構(gòu)中包含有其它的選擇結(jié)構(gòu)時(shí),則稱為嵌套的選擇結(jié)構(gòu)。則稱為嵌套的選擇結(jié)構(gòu)。 例例3.203.20、編寫一用戶登錄的判斷程序、編寫一用戶登錄的判斷程序框圖如下頁:框圖如下頁:2021-10-2364endbegininput usernameand passwordusername?username error!username and username and password er

48、ror!password error!password?password?ok!password error!2021-10-2365程序:程序:#include #include #include #include using namespace std;using namespace std;void main(void)void main(void) string username,password;string username,password;coutplease input your username: ;coutusername;cinusername;coutplease i

49、nput your password: ;coutpassword;cinpassword;2021-10-2366if(username=student005)if(username=student005)if(password=12345678)if(password=12345678)coutok!endl;coutok!endl;elseelsecoutpassword error!endl;coutpassword error!endl;elseelseif(password=12345678)if(password=12345678)coutusername error!endl;

50、coutusername error!endl;elseelsecoutusername and password coutusername and password error!endl;error!endl; 2021-10-2367嵌套的嵌套的ifif語句一般形式:語句一般形式:if (if (表達(dá)式表達(dá)式1)1)語句序列語句序列1;1;else if (else if (表達(dá)式表達(dá)式2)2)語句序列語句序列2;2;。 。 else if (else if (表達(dá)式表達(dá)式n-1)n-1)語句序列語句序列n-1;n-1; else else 語句序列語句序列n;n;2021-10-2368

51、例例3.213.21、輸入兩個(gè)整數(shù),比較兩個(gè)數(shù)的大小輸入兩個(gè)整數(shù),比較兩個(gè)數(shù)的大小#include#includeusing namespace std;using namespace std;void main(void)void main(void) int x,y;int x,y; coutenter x and y:;coutxy;cinxy; if (x!=y)if (x!=y) if (xy)if (xy) coutyendl;coutyendl; elseelse coutxyendl;coutxyendl; elseelse coutx=yendl;coutx=yendl; 2

52、021-10-2369例例3.223.22、從鍵盤任意輸入三個(gè)數(shù)、從鍵盤任意輸入三個(gè)數(shù), ,求它們的最大求它們的最大數(shù)數(shù)#include#includeusing namespace std;using namespace std;void main()void main() double a,b,c,max;double a,b,c,max;coutabc;coutabc;if (ab&ac) max=a;if (ab&ac) max=a;else if (ba & bc) max=b;else if (ba & bc) max=b; else max=c; else max=c;coutm

53、ax=maxendl;coutmax=maxendl;/?2021-10-2370 正確程序一:正確程序一:#include#includeusing namespace std;using namespace std;void main()void main() double a,b,c,max;double a,b,c,max;coutinput a,b,c :; coutabc;cinabc;if (a=b&a=c) max=a;if (a=b&a=c) max=a;else if (b=a & b=c) max=b;else if (b=a & b=c) max=b; else max

54、=c; else max=c;coutmax=maxendl;coutmax=maxendl; 2021-10-2371 正確程序二:正確程序二:#include#includeusing namespace std;using namespace std;void main()void main() double a,b,c,max;double a,b,c,max;coutinput a,b,c :;coutabc;cinabc;if(a=b&a=c)if(a=b&a=c)max=a;max=a;if(b=a&b=c)if(b=a&b=c)max=b;max=b;if(c=a&c=b)if

55、(c=a&c=b)max=c;max=c;coutmax=maxendl;coutmax=maxendl; 2021-10-2372正確程序三:正確程序三:#include#includeusing namespace std;using namespace std;void main()void main() double a,b,c,max;double a,b,c,max;coutinput a,b,c :;coutabc;cinabc;max=(a=b)?a:b;max=(a=b)?a:b;max=(max=c)?max:c;max=(max=c)?max:c;coutmax=maxe

56、ndl;coutmax=maxendl; 2021-10-2373 八、用八、用ifif語句創(chuàng)建多路選擇結(jié)構(gòu)語句創(chuàng)建多路選擇結(jié)構(gòu)例例3.233.23、將等級(jí)成績按下表轉(zhuǎn)換成對(duì)應(yīng)消息輸出、將等級(jí)成績按下表轉(zhuǎn)換成對(duì)應(yīng)消息輸出等級(jí)成績等級(jí)成績消息消息a a或或a aexcellentexcellentb b或或b babove averageabove averagec c或或c caverageaveraged d或或d dbelow averagebelow averagef f或或f fbelow averagebelow average2021-10-2374程序:程序:#include#i

57、ncludeusing namespace std;using namespace std;void main()void main() char grade;char grade;coutinput grade: ;coutgrade;cingrade;if(grade=a|grade=a)if(grade=a|grade=a)coutexcellentendl;coutexcellentendl;else if(grade=b|grade=b)else if(grade=b|grade=b)2021-10-2375coutabove averageendl;coutabove averag

58、eendl;else if(grade=c|grade=c)else if(grade=c|grade=c)coutaverageendl;coutaverageendl;else if(grade=d|grade=delse if(grade=d|grade=d|grade=f|grade=f)|grade=f|grade=f)coutbelow averageendl;coutbelow averageendl; else elsecouterrorendl;couterror= 0)if(delta = 0) coutx1 = p+qendl;coutx1 = p+qendl;coutx

59、2 = p-qendl;coutx2 = p-qendl; elseelse coutx1 = p + jqendl;coutx1 = p + jqendl;coutx2 = p - jqendl;coutx2 = p - jq= 0)if(delta = 0)coutx1 = p+qendl;coutx1 = p+qendl;coutx2 = p-qendl;coutx2 = p-qendl;elseelsecoutx1 = p + jqendl;coutx1 = p + jqendl;coutx2 = p - jqendl;coutx2 = p - jqendl;結(jié)果會(huì)怎樣?結(jié)果會(huì)怎樣?2

60、021-10-2378例例3.223.22、中、中程序一:程序一:#include#includeusing namespace std;using namespace std;void main()void main() double a,b,c,max;double a,b,c,max;coutinput a,b,c :; coutabc;cinabc;if (a=b&a=c) max=a;if (a=b&a=c) max=a;else if (b=a & b=c) max=b;else if (b=a & b=c) max=b;else max=c;else max=c;/else/el

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(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ǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論