2010年自考醫(yī)學(xué)類工程心理學(xué)復(fù)習(xí)筆記(第4章)_第1頁(yè)
2010年自考醫(yī)學(xué)類工程心理學(xué)復(fù)習(xí)筆記(第4章)_第2頁(yè)
2010年自考醫(yī)學(xué)類工程心理學(xué)復(fù)習(xí)筆記(第4章)_第3頁(yè)
2010年自考醫(yī)學(xué)類工程心理學(xué)復(fù)習(xí)筆記(第4章)_第4頁(yè)
2010年自考醫(yī)學(xué)類工程心理學(xué)復(fù)習(xí)筆記(第4章)_第5頁(yè)
已閱讀5頁(yè),還剩62頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、第四章 選擇結(jié)構(gòu)程序設(shè)計(jì),天津工業(yè)大學(xué)計(jì)算機(jī)科學(xué)與軟件學(xué)院,主講:孫連坤 ,公告,下周二上課改為上機(jī),地點(diǎn)c210,選擇結(jié)構(gòu)程序設(shè)計(jì),學(xué)習(xí)的意義,第3章討論,本章討論,第5章討論,在編制程序時(shí),有時(shí)并不能保證程序一定執(zhí)行某些指令,而是要根據(jù)一定的外部條件來判斷哪些指令要執(zhí)行。這就是選擇結(jié)構(gòu)。程序總是為解決某個(gè)實(shí)際問題而設(shè)計(jì)的,而問題往往包含多個(gè)方面,不同的情況需要有不同的處理,所以選擇結(jié)構(gòu)在我們的實(shí)際應(yīng)用程序中可以說是無處不在,離開了選擇結(jié)構(gòu)很多情況將無法處理,因此,正確掌握選擇結(jié)構(gòu)程序設(shè)計(jì)方法對(duì)于我們編寫實(shí)際應(yīng)用程序尤為重要。,愛我別走,如果你說你不愛我,學(xué)習(xí)目標(biāo),選擇結(jié)構(gòu)程序設(shè)計(jì),理解選擇

2、結(jié)構(gòu)的含義; 掌握關(guān)系運(yùn)算符、邏輯運(yùn)算符和條件運(yùn)算符的用法; 掌握關(guān)系運(yùn)算符、邏輯運(yùn)算符和條件運(yùn)算符與其它運(yùn)算符的優(yōu)先級(jí)關(guān)系和結(jié)合性; 掌握if、switch語(yǔ)句的使用方法。,選擇結(jié)構(gòu)程序設(shè)計(jì),學(xué)習(xí)內(nèi)容,關(guān)系運(yùn)算符、邏輯運(yùn)算符、條件運(yùn)算符,關(guān)系運(yùn)算符,關(guān)系表達(dá)式,用關(guān)系運(yùn)算符連接起來的式子稱為關(guān)系表達(dá)式。 關(guān)系表達(dá)式的一般形式為:表達(dá)式 關(guān)系運(yùn)算符 表達(dá)式,關(guān)系運(yùn)算符與關(guān)系表達(dá)式,關(guān)系表達(dá)式的值:是邏輯值“真”或“假”,用1和0表示,例 int a=3,b=2,c=1,d,f; ab (ab)=c b+cb f=abc,/表達(dá)式值1,/表達(dá)式值1,/表達(dá)式值0,/d=1,/f=0,例如: c

3、a + b 等價(jià)于: a b != c 等價(jià)于: a = b c 等價(jià)于: a 2 b | c 等價(jià)于:,c (a + b),(a b) != c,a = (b c),a = (b c),(a 2) (c + d),(a b = 2; c = 3; 問:d = a != c = a b c;的值?,答:d 的值為1。 等價(jià)于:d = (a != c) = (a b) c);,關(guān)系運(yùn)算符、邏輯運(yùn)算符、條件運(yùn)算符,關(guān)系運(yùn)算符的優(yōu)先級(jí),關(guān)系運(yùn)算注意:,關(guān)系運(yùn)算符與關(guān)系表達(dá)式,例 5278在C中是允許的, 值為,0,例 a0 結(jié)果為 A100 結(jié)果為,1,0,例 應(yīng)避免對(duì)實(shí)數(shù)作相等或不等的判斷 如 1

4、.0/3.0*3.0=1.0 結(jié)果為 可改寫為:fabs(1.0/3.0*3.0-1.0)1e-6,0,例 int i = 1, j = 7, a; a = i + (j % 4 != 0); 則a =,2,關(guān)系運(yùn)算符、邏輯運(yùn)算符、條件運(yùn)算符,邏輯運(yùn)算符,邏輯表達(dá)式,用邏輯運(yùn)算符連接起來的式子稱為邏輯表達(dá)式。 邏輯表達(dá)式的一般形式為:表達(dá)式 邏輯運(yùn)算符 表達(dá)式,例:a 10 | x -10、!x b=5; !a a b = 5; 問:c = b 3 的值?,答:c 的值為1。 等價(jià)于:c = (b 3) ,關(guān)系運(yùn)算符、邏輯運(yùn)算符、條件運(yùn)算符,邏輯運(yùn)算注意:,邏輯表達(dá)式求解時(shí),并非所有的邏輯運(yùn)算

5、符都被執(zhí)行,只是在必須執(zhí)行下一個(gè)邏輯運(yùn)算符才能求出表達(dá)式的解時(shí),才執(zhí)行該運(yùn)算符。,例 a (m = a b) ,關(guān)系運(yùn)算符、邏輯運(yùn)算符、條件運(yùn)算符,例 (a=b)?Y:N (x%2=1)?1:0 (x=0)?x:-x (c=a x0,表達(dá)式值為a xy?1:1.5 /xy ,值為1.0; xy ,值為1.5,條件運(yùn)算符優(yōu)先于賦值運(yùn)算符,條件運(yùn)算符可以嵌套,條件運(yùn)算符是右結(jié)合性,總體上講,單目運(yùn)算符都是同等優(yōu)先級(jí)的,具有右結(jié)合 性,并且優(yōu)先級(jí)比雙目運(yùn)算符和三目運(yùn)算符都高。 三目運(yùn)算符的優(yōu)先級(jí)比雙目運(yùn)算符要低,但高于賦值運(yùn) 算符和逗號(hào)運(yùn)算符。 逗號(hào)運(yùn)算符的優(yōu)先級(jí)最低,其次是賦值運(yùn)算符。 只有單目運(yùn)

6、算符、賦值運(yùn)算符和條件運(yùn)算符具有右結(jié)合 性,其它運(yùn)算符都是左結(jié)合性。 雙目運(yùn)算符中,算術(shù)運(yùn)算符的優(yōu)先級(jí)最高,邏輯運(yùn)算符 的優(yōu)先級(jí)最低。,到現(xiàn)在為止,我們已經(jīng)學(xué)習(xí)了30多個(gè)運(yùn)算符。掌握它們的優(yōu)先級(jí)關(guān)系特別重要。優(yōu)先級(jí)的記憶規(guī)則:,關(guān)系運(yùn)算符、邏輯運(yùn)算符、條件運(yùn)算符,運(yùn)算符的優(yōu)先級(jí)和結(jié)合性,詳細(xì)內(nèi)容見附錄c,選擇結(jié)構(gòu)程序設(shè)計(jì),學(xué)習(xí)內(nèi)容,選擇結(jié)構(gòu)程序設(shè)計(jì),選擇結(jié)構(gòu)程序設(shè)計(jì),簡(jiǎn)單if語(yǔ)句形式,格式:if (表達(dá)式) 語(yǔ)句;,例如:下面的程序段是輸入兩個(gè)整數(shù),輸出其中的大數(shù)。 int a, b, max; printf (input two numbers: ); scanf (%d%d, ,選擇結(jié)構(gòu)程

7、序設(shè)計(jì),例如:下面的程序段同樣是輸出兩個(gè)整數(shù)中的最大數(shù)。 int a, b; printf (input two numbers: ); scanf (%d%d, ,if_else形式,格式: if (表達(dá)式) 語(yǔ)句1; else 語(yǔ)句2;,選擇結(jié)構(gòu)程序設(shè)計(jì),if_else_if形式,格式: if(表達(dá)式1) 語(yǔ)句1; else if (表達(dá)式2) 語(yǔ)句2; else if (表達(dá)式3) 語(yǔ)句3; else 語(yǔ)句n;,選擇結(jié)構(gòu)程序設(shè)計(jì),例如:下面的程序段是判斷輸入字符的種類。 char c; printf (Enter a character: ); c = getchar ( ); if (

8、c = 0 ,例:體型判斷 按“體指數(shù)”對(duì)肥胖程度進(jìn)行劃分: 體指數(shù)t = w / h2 (體重w單位為公斤,身高h(yuǎn)單位為米) 當(dāng)t 18時(shí),為低體重; 當(dāng)18 t 25時(shí),為正常體重; 當(dāng)25 t 27時(shí),為超重體重; 當(dāng)t 27時(shí),為肥胖。 編程從鍵盤輸入你的身高h(yuǎn)和體重w,判斷你的體重屬于何種類型。,選擇結(jié)構(gòu)程序設(shè)計(jì),#include main() float h, w, t; printf(Please enter h,w:); scanf(%f, %f, ,選擇結(jié)構(gòu)程序設(shè)計(jì),選擇結(jié)構(gòu)程序設(shè)計(jì),if語(yǔ)句注意事項(xiàng),if語(yǔ)句后面的表達(dá)式必須用括號(hào)括起來 。,表達(dá)式通常是邏輯表達(dá)式或關(guān)系表達(dá)

9、式,但也可以是其它 任何表達(dá)式,如賦值表達(dá)式等,甚至也可以是一個(gè)變量。 只要表達(dá)式非零時(shí),表達(dá)式的值就為真,否則就是假。,if (a = 5) 語(yǔ)句; /表達(dá)式的值永遠(yuǎn)為非0, 所以其后的語(yǔ)句總是要執(zhí)行的 if (b) 語(yǔ)句; /等價(jià)于if (b != 0) 語(yǔ)句;,選擇結(jié)構(gòu)程序設(shè)計(jì),在if語(yǔ)句的三種形式中,所有的語(yǔ)句應(yīng)為單個(gè)語(yǔ)句,如果要想在 滿足條件時(shí)執(zhí)行一組(多個(gè))語(yǔ)句,則必須把這一組語(yǔ)句用 括 起來組成一個(gè)復(fù)合語(yǔ)句。但要注意的是在之后不能再加分號(hào)。,選擇結(jié)構(gòu)程序設(shè)計(jì),在簡(jiǎn)單的if語(yǔ)句中(即只有if,沒有else),如果在滿足條件時(shí) 執(zhí)行的是多條語(yǔ)句,原則上應(yīng)用括起來,但如果沒用括起 來,

10、盡管不會(huì)產(chǎn)生編譯錯(cuò)誤,但程序的邏輯將出現(xiàn)異常。,運(yùn)行結(jié)果:x4,y2,運(yùn)行結(jié)果:x2,y0,選擇結(jié)構(gòu)程序設(shè)計(jì),在if語(yǔ)句中,如果表達(dá)式是一個(gè)判斷兩個(gè)數(shù)是否相等的關(guān)系表 達(dá)式,要當(dāng)心不要將=寫成了賦值運(yùn)算符=。,運(yùn)行結(jié)果:x = 0,運(yùn)行結(jié)果:x != 0,選擇結(jié)構(gòu)程序設(shè)計(jì),if語(yǔ)句嵌套,選擇結(jié)構(gòu)程序設(shè)計(jì),例 輸入兩數(shù)并判斷其大小關(guān)系,#include void main ( ) int x, y; printf (Enter integer x, y: ); scanf (%d, %d, ,運(yùn)行結(jié)果: Enter integer x, y: 12, 23 XY Enter integer x,

11、 y: 12, 12 X=Y,選擇結(jié)構(gòu)程序設(shè)計(jì),C語(yǔ)言規(guī)定,在缺省 時(shí),else總是和它上面離它最近的未配對(duì)的if配對(duì),if_else 配對(duì)原則,選擇結(jié)構(gòu)程序設(shè)計(jì),運(yùn)行結(jié)果:a = 0,運(yùn)行結(jié)果:a = 1,選擇結(jié)構(gòu)程序設(shè)計(jì),例: if (a=b) if(b=c) printf(“a=b=c”); else printf(“a!=b”);,修改: if (a=b) if(b=c) printf(“a=b=c”); else printf(“a!=b”);,實(shí)現(xiàn)if else 正確配對(duì)方法:加 ,選擇結(jié)構(gòu)程序設(shè)計(jì),例:考慮下面程序輸出結(jié)果: void main( ) int x = 100, a

12、 = 10, b = 20; int v1 = 5, v2 = 0; if (a b) if (b != 15) if (!v1) x=1; else if (v2) x = 10; x = -1; printf (“%d”, x); ,結(jié)果:-1,一般三角形,不是三角形,等邊,等腰,直角 三角形,等腰 直角,判斷三角形的類型 P111112習(xí)題5.5,作業(yè),選擇結(jié)構(gòu)程序設(shè)計(jì),switch ( 表達(dá)式) case E1: 語(yǔ)句組 1; break; case E2: 語(yǔ)句組 2; break; . case En: 語(yǔ)句組 n; break; default: 語(yǔ)句組n+1 ; break;

13、,switch語(yǔ)句(開關(guān)分支語(yǔ)句),功能: 計(jì)算switch表達(dá)式的值,與case表達(dá)式的值比較,等于Ei時(shí),執(zhí)行語(yǔ)句組,當(dāng)執(zhí)行到break語(yǔ)句時(shí),跳出switch語(yǔ)句,轉(zhuǎn)向執(zhí)行switch語(yǔ)句的下一條語(yǔ)句。若與所有常量表達(dá)式值都不相等,執(zhí)行語(yǔ)句組n+1,然后再執(zhí)行switch語(yǔ)句的下一條語(yǔ)句。,選擇結(jié)構(gòu)程序設(shè)計(jì),switch語(yǔ)句執(zhí)行流程圖,選擇結(jié)構(gòu)程序設(shè)計(jì),使用switch語(yǔ)句注意事項(xiàng),switch后面的“表達(dá)式”,可以是int、char和枚舉 型中的一種,但不可為浮點(diǎn)型。,float a, b = 4.0; scanf (%f, ,選擇結(jié)構(gòu)程序設(shè)計(jì),switch ( i ) case 1:

14、 b = b + 1; break; / 可加可不加 case 2: b = b - 1; break; ,case后面語(yǔ)句(組)可加 也可以不加 , 但一般不加 。,選擇結(jié)構(gòu)程序設(shè)計(jì),int a, b = 4; scanf (%d, ,每個(gè)case后面“常量表達(dá)式”的值,必須各不相同, 否則會(huì)出現(xiàn)相互矛盾的現(xiàn)象。,選擇結(jié)構(gòu)程序設(shè)計(jì),每個(gè)case后面必須是“常量表達(dá)式”,表達(dá)式中 不能包含變量。,例:按成績(jī)分成A、B、C、D、E、F幾個(gè)等級(jí)。 char score; printf (Enter Score: ); scanf (%d, ,選擇結(jié)構(gòu)程序設(shè)計(jì),case后面的“常量表達(dá)式”僅起語(yǔ)句標(biāo)

15、號(hào)作用,并不進(jìn)行條件判斷。系統(tǒng) 一旦找到入口標(biāo)號(hào),就從此標(biāo)號(hào)開始執(zhí)行,不再進(jìn)行標(biāo)號(hào)判斷,所以必 須加上break語(yǔ)句,以便結(jié)束switch語(yǔ)句。,#include void main ( ) char ch; ch = getchar ( ); switch ( ch ) case Y : printf (Yesn); break; case N : printf (Non); break; case A : printf (Alln); break; default : printf (Yes,No or Alln); ,運(yùn)行結(jié)果: No,/假設(shè)輸入為:N,#include void mai

16、n ( ) char ch; ch = getch ( ); switch ( ch ) case Y : printf (Yesn); break; case N : printf (Non); case A : printf (Alln); break; default : printf (Yes,No or Alln); ,/假設(shè)輸入為:N,運(yùn)行結(jié)果: No ALL,選擇結(jié)構(gòu)程序設(shè)計(jì),多個(gè)case子句,可共用同一語(yǔ)句(組)。,例:當(dāng)a的值是1、2、3時(shí),將b的值加2,當(dāng)a的值是 4、5、6時(shí),將b的值減2。 int a, b = 4; scanf (%d, ,選擇結(jié)構(gòu)程序設(shè)計(jì),case子

17、句和default子句如果都帶有break子句,那么它們之間 順序的變化不會(huì)影響switch語(yǔ)句的功能。,#include void main ( ) char ch; ch = getch ( ); switch ( ch ) case Y : printf (Yesn); break; case N : printf (Non); break; case A : printf (Alln); break; default : printf (Yes,No or Alln); break; ,#include void main ( ) char ch; ch = getch ( ); sw

18、itch ( ch ) case Y : printf (Yesn); break; default : printf (Yes,No or Alln); break; case N : printf (Non); break; case A : printf (Alln); break; ,選擇結(jié)構(gòu)程序設(shè)計(jì),case子句和default子句如果有的帶有break子句,而有的沒有帶break子 句,那么它們之間順序的變化可能會(huì)影響輸出的結(jié)果。,#include void main ( ) char ch; ch = getchar( ); switch ( ch ) case Y : prin

19、tf (Yesn); break; case N : printf (Non); break; case A : printf (Alln); break; default : printf (Yes,No or Alln); ,#include void main ( ) char ch; ch = getchar ( ); switch ( ch ) case Y : printf (Yesn); break; default : printf (Yes,No or Alln); case N : printf (Non); break; case A : printf (Alln); b

20、reak; ,/假設(shè)輸入為:B,運(yùn)行結(jié)果: Yes,No or All,運(yùn)行結(jié)果: Yes,No or All No,/假設(shè)輸入為:B,選擇結(jié)構(gòu)程序設(shè)計(jì),switch語(yǔ)句可以嵌套。,void main ( ) int x = 1, y = 0, a = 0, b = 0; switch ( x ) case 1: switch ( y ) case 0: a+; break; case 1: b+; break; case 2: a+; b+; break; case 3: a+; b+; printf (na = %d, b = %d, a, b); ,運(yùn)行結(jié)果: a = 2,b = 1,它

21、們大大增加程序的分支,使邏輯關(guān)系顯得混亂,不易維護(hù),易出錯(cuò)。,選擇結(jié)構(gòu)程序設(shè)計(jì),switch和else-if的比較,else-if比switch的條件控制更強(qiáng)大一些,else-if可以依照各種邏輯運(yùn)算的結(jié)果進(jìn)行流程控制, switch只能進(jìn)行=判斷,并且只能是整數(shù)判斷。,switch比else-if更清晰,兩者都要盡量避免用得過多、過長(zhǎng),尤其不 要嵌套得太多,選擇結(jié)構(gòu)程序設(shè)計(jì),學(xué)習(xí)內(nèi)容,例1: 輸入10個(gè)字符,統(tǒng)計(jì)其中英文字母、數(shù)字字符和 其他字符的個(gè)數(shù)。,選擇結(jié)構(gòu)程序設(shè)計(jì)舉例,程序設(shè)計(jì)思路: 首先定義三個(gè)整形變量用于存儲(chǔ)英文字母、數(shù)字字符和其 他字符的個(gè)數(shù)。 字符的輸入與輸出。 邏輯判斷是何

22、種字符。 if-else語(yǔ)句實(shí)現(xiàn),選擇結(jié)構(gòu)程序設(shè)計(jì)舉例,#include void main() int i, digit, letter, other; char ch; digit = letter = other = 0; printf(“Enter 10 characters: ); for(i = 1; i = a ,運(yùn)行結(jié)果: input 10 characters: Reold 123? letter=5, digit=3, other=2,選擇結(jié)構(gòu)程序設(shè)計(jì)舉例,例2:寫一程序,從鍵盤上輸入1年份year(4位十進(jìn)制數(shù)), 判斷其是否閏年。,程序設(shè)計(jì)思路: 如果X能被Y整除,則余

23、數(shù)為0,即如果X%Y的值等于0,則 表示X能被Y整除! 首先將是否閏年的標(biāo)志leap預(yù)置為0(非閏年),這樣僅當(dāng) year為閏年時(shí),將leap置為1即可。這種處理兩種狀態(tài)值的 方法,對(duì)優(yōu)化算法和提高程序可讀性非常有效。,閏年的條件是:能被4整除、但不能被100整除;能被400整除。,#include void main ( ) int year, leap = 0; / leap=0:預(yù)置為非閏年 printf (Please input the year: ); /提示輸入年份 scanf (“%d”, ,運(yùn)行結(jié)果: Please input the year: 2008 2008 is a

24、 leap year.,判斷是否為閏年,if ( ( year % 4 = 0 ,選擇結(jié)構(gòu)程序設(shè)計(jì)舉例,例3:求ax2+bx+c=0方程的解,程序設(shè)計(jì)思路: 上式實(shí)際上應(yīng)有以下幾種可能。 a0,不是二次方程。 b24ac0,有兩個(gè)相同的實(shí)根。 b24ac0,有兩個(gè)不等的實(shí)根。 b24ac0,有兩個(gè)共軛的復(fù)根。,#include #include void main ( ) float a, b,c,disc,x1,x2,realpart,imagpart; /定義系數(shù)a,b,c;disc代表b2-4ac;realpart代表實(shí)部,imagpart代表虛部 scanf (“%f,%f,%f”,

25、else, disc=b*b-4*a*c; if(fabs(disc)1e-6) /判斷b2-4ac0 x1=(-b+sqrt(disc)/(2*a); /求解兩個(gè)實(shí)根 x2=(-b-sqrt(disc)/(2*a); printf(“has distinct real roots:%8.4f and %8.4fn”,x1,x2); else /b2-4ac0 realpart=-b/(2*a); /求解兩個(gè)虛根 imagpart=aqrt(-disc)/(2*a); printf(“has complex roots:n”); printf(“%8.4f+%8.4fin”,realpart,

26、imagpart); printf(“%8.4f-%8.4fin”,realpart,imagpart); ,運(yùn)行結(jié)果: 1,2,1 The equation has two equal roots:1.0000 1,2,2 The equation has complex roots: -1.0000+1.0000i -1.0000-1.0000i 2,6,1 The equation has distinct real roots:-0.1771 and -2.8229,例4:查詢自動(dòng)售貨機(jī)中商品的價(jià)格 假設(shè)自動(dòng)售貨機(jī)出售4種商品,薯片(crisps)、爆米花 (popcorn)、巧克力(

27、chocolate)和可樂(cola),售價(jià)分別是每份3.0、2.5、4.0和3.5元。在屏幕上顯示以下菜單,用戶可以連續(xù)查詢商品的價(jià)格,當(dāng)查詢次數(shù)超過5次時(shí),自動(dòng)退出查詢;不到5次時(shí),用戶可以選擇退出。當(dāng)用戶輸入編號(hào)14,顯示相應(yīng)商品的價(jià)格;輸入0,退出查詢;輸入其他編號(hào),顯示價(jià)格為0。 1 Select crisps 2 Select popcorn 3 Select chocolate 4 Select cola 0 Exit,選擇結(jié)構(gòu)程序設(shè)計(jì)舉例,#include void main() int choice, i; float price; for( i = 1; i = 5; i+

28、) printf(1 Select crisps n); printf(2 Select popcorn n); printf(3 Select chocolate n); printf(4 Select cola n); printf(0 exit n); printf(Enter choice: ); scanf(%d, ,1 Select crisps 2 Select popcorn 3 Select chocolate 4 Select cola 0 Exit Enter choice: 1 price = 3.0 1 Select crisps 2 Select popcorn 3

29、 Select chocolate 4 Select cola 0 Exit Enter choice: 7 price = 0.01 Select crisps 2 Select popcorn 3 Select chocolate 4 Select cola 0 Exit Enter choice: 0 Thanks,選擇結(jié)構(gòu)程序設(shè)計(jì)舉例,例5:寫一程序,從鍵盤上輸入任意兩個(gè)數(shù)和一運(yùn)算符(+:加,-:減,*:乘,/:除),計(jì)算其運(yùn)算的結(jié)果并輸出 。,程序設(shè)計(jì)思路: 首先輸入兩個(gè)數(shù)和一運(yùn)算符號(hào),然后根據(jù)運(yùn)算符號(hào)來做相應(yīng)的運(yùn)算,但是在做除法運(yùn)算時(shí),應(yīng)判別除數(shù)是否為0,如果為0,運(yùn)算非法,給出提

30、示信息。如果運(yùn)算符號(hào)不是+、-、*、/則同樣是非法的,也應(yīng)給出提示信息。其它情況,輸出運(yùn)算的結(jié)果。,#include void main ( ) float a, b; /存放兩個(gè)數(shù)的變量 int tag = 0; /運(yùn)算合法的標(biāo)志,0-合法,1-非法 char ch; /運(yùn)算符變量 float result; /運(yùn)算結(jié)果變量 printf (input two number: ); /提示輸入兩個(gè)數(shù) scanf (%f%f, /輸入運(yùn)算符,switch ( ch ) /根據(jù)運(yùn)算符來進(jìn)行相關(guān)的運(yùn)算 case +: result = a + b; break; /加法運(yùn)算 case -: res

31、ult = a - b; break; /減法運(yùn)算 case *: result = a * b; break; /乘法運(yùn)算 case /: if (!b) /除法運(yùn)算,判除數(shù)是否為0 printf (divisor is zero!n); /顯示除數(shù)為0 tag = 1; /置運(yùn)算非法標(biāo)志 else /除數(shù)非0 result = a / b; /計(jì)算商 break; default: printf (illegal arithmetic lablen); /非法的運(yùn)算符 tag = 1; /置運(yùn)算非法標(biāo)志 if (!tag) /運(yùn)算合法,顯示運(yùn)算結(jié)果 printf (%.2f %c %.2f

32、 = %.2fn, a, ch, b, result); ,運(yùn)行結(jié)果: input two number: 20 30 input arithmetic lable(+ - * /): + 20.00 + 30.00 = 50.00,例6:已知某公司員工的保底薪水為500,某月所接工程的利潤(rùn)profit(整數(shù))與利潤(rùn)提成的關(guān)系如下所示(計(jì)量單位:元)。計(jì)算員工的當(dāng)月薪水。,程序設(shè)計(jì)思路: 首先要定義一個(gè)變量用來存放員工所接工程的利潤(rùn); 其次提示用戶輸入員工所接工程的利潤(rùn),并調(diào)用scanf函數(shù)接受用戶輸入 員工所接工程的利潤(rùn); 然后根據(jù)上表的規(guī)則,計(jì)算該員工當(dāng)月的提成比率。 最后計(jì)算該員工當(dāng)月的

33、薪水(保底薪水+所接工程的利潤(rùn)*提成比率), 并輸出結(jié)果。,#include void main ( ) long profit; /所接工程的利潤(rùn) float ratio; /提成比率 float salary = 500; /薪水,初始值為保底薪水500 printf (Input profit: ); /提示輸入所接工程的利潤(rùn) scanf (%ld, /輸出結(jié)果 ,運(yùn)行結(jié)果: Input profit: 4000 salary = 1100.00,方法一:使用if_else if語(yǔ)句,0.1默認(rèn)為double型,不進(jìn)行強(qiáng)制類型轉(zhuǎn)換將產(chǎn)生警告信息!,#include void main (

34、 ) long profit; /所接工程的利潤(rùn) float ratio; /提成比率 float salary = 500; /薪水,初始值為保底薪水500 printf (Input profit: ); /提示輸入所接工程的利潤(rùn) scanf (%ld, /輸出結(jié)果 ,運(yùn)行結(jié)果: Input profit: 4000 salary = 1100.00,方法二:使用if語(yǔ)句,方法三:使用switch語(yǔ)句,算法設(shè)計(jì)要點(diǎn): 為使用switch語(yǔ)句,必須將利潤(rùn)profit與提成的關(guān)系轉(zhuǎn)換成某些整 數(shù)與提成的關(guān)系。分析本題可知,提成的變化點(diǎn)都是1000的整數(shù)倍 (1000、2000、5000、),如果將利潤(rùn)profit整除1000,則當(dāng): profit 1000 對(duì)應(yīng)0、1 1000 profit 2000 對(duì)應(yīng)1、2 2000 profit 5000 對(duì)應(yīng)2、3、4、

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(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)論