




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
1、程序設(shè)計基礎(chǔ)選擇結(jié)構(gòu)程序設(shè)計2015-2016學年第一學期第4章選擇結(jié)構(gòu)程序設(shè)計條件判斷用if語句實現(xiàn)選擇結(jié)構(gòu)利用switch語句實現(xiàn)多分支選擇結(jié)構(gòu)程序綜合舉例提高部分選擇結(jié)構(gòu)的作用是:檢查指定的條件是否滿足,然后根據(jù)條件的滿足情況,在事先給定的兩種/多種操作中選擇執(zhí)行其中一種操作要實現(xiàn)選擇結(jié)構(gòu),關(guān)鍵是判定所給的條件是否滿足4.1 條件判斷條件判斷的含義關(guān)系運算符和關(guān)系表達式邏輯運算符和邏輯表達式4.1.1 條件判斷的含義在現(xiàn)實生活中,需要進行判斷和選擇的情況是很多的 如果你在家,我去拜訪你 如果不及格,要補考 如果遇到紅燈,要停車等待 周末去郊游 70歲以上的老年人,入公園免票4.1.1 條
2、件判斷的含義在現(xiàn)實生活中,需要進行判斷和選擇的情況是很多的條件判斷的結(jié)果是一個邏輯值:“是”或“否”在計算機語言中用“真”和“假”來表示“是”或“否”4.1.1 條件判斷的含義用選擇結(jié)構(gòu)檢查所指定的條件是否滿足,并根據(jù)判斷的結(jié)果決定執(zhí)行哪種操作。如:if (x 0)prelseprf(“%d”,x);f(“%d”,-x);當x為正時,輸出x的值,否則輸出-x4.1.2 關(guān)系運算符和關(guān)系表達式“條件”在程序中用一個表達式表示 x age=70關(guān)系運算符 a+ b*b-4*a*c av0bc04.1.2 關(guān)系運算符和關(guān)系表達式“條件”在程序中用一個表達式表示關(guān)系表達式a0a+bcage=70 x0
3、4.1.2 關(guān)系運算符和關(guān)系表達式1.關(guān)系運算符及其優(yōu)先次序語言提供種關(guān)系運算符:優(yōu)先級相同(高)優(yōu)先級相同 (低) =(等于) !=(不等于) (小于) =(小于或等于) (大于) =(大于或等于)4.1.2 關(guān)系運算符和關(guān)系表達式關(guān)系、算術(shù)、賦值運算符的優(yōu)先級(高)算術(shù)運算符關(guān)系運算符(低)賦值運算符4.1.2 關(guān)系運算符和關(guān)系表達式等效于等效于等效于等效于ca+bab=c a=bcc(a+b)(ab)=c a=(bc)4.1.2 關(guān)系運算符和關(guān)系表達式2.關(guān)系表達式用關(guān)系運算符將兩個數(shù)值或數(shù)值表達式連接起來的式子關(guān)系表達式的值是一個邏輯值,即“真”或“假”在C的邏輯運算中,以“”代表“真
4、”,以“”代表“假”4.1.2 關(guān)系運算符和關(guān)系表達式2.關(guān)系表達式當a=3,b=2,c=1ab的值為“真”,表達式值為1(ab)=c的值為“真” ,表達式值為1 b+ca的值為“假”,表達式值為04.1.3 邏輯運算符和邏輯表達式有時判斷的條件是一個復合的條件:公民,且在18歲以上5門課都及格70歲以上的老人或10歲以下兒童4.1.3 邏輯運算符和邏輯表達式1.邏輯運算符及其優(yōu)先次序3種邏輯運算符:&(邏輯與)|(邏輯或) !(邏輯非)&和|是雙目(二元)運算符!是單目(一元)運算符4.1.3 邏輯運算符和邏輯表達式邏輯運算的真值表ab! a! ba & ba | b真真假假真真真假假真假真
5、假真真假假真假假真真假假4.1.3 邏輯運算符和邏輯表達式邏輯運算符的優(yōu)先次序! & | (!為三者中最高)與其他運算符的優(yōu)先次序!(高)算術(shù)運算符關(guān)系運算符 & 和 |賦值運算符(低)4.1.3 邏輯運算符和邏輯表達式可寫成可寫成可寫成(ab) & (xy)(a=b) | (x=y) (!a) | (ab)ab & xya=b |x=y!a | ab4.1.3 邏輯運算符和邏輯表達式2.邏輯表達式用邏輯運算符將關(guān)系表達式或其他邏輯量連接起來的式子4.1.3 邏輯運算符和邏輯表達式邏輯表達式的值應(yīng)該是邏輯量“真”或“假”編譯系統(tǒng)在表示邏輯運算結(jié)果時以數(shù)值1代表“真”,以0代表“假”但在判斷一個
6、量是否為“真”時以0代表“假”,以非0代表“真”注意:將一個非零的數(shù)值認作為“真”4.1.3 邏輯運算符和邏輯表達式若a=4,則!a的值為0若a=4,b=5,則a & b的值為1a和b值分別為4和5,則a|b的值為1a和b值分別為4和5,則!a|b的值為1(5) 4 & 0 | 2的值為14.1.3 邏輯運算符和邏輯表達式修改后的邏輯運算真值表ab! a! ba & ba | b非0非00011非000101假非01001假011004.1.3 邏輯運算符和邏輯表達式判別某一年是否閏年,用邏輯表達式表示閏年的條件是符合下面二者之一:能被4整除,但不能被100整除,如2008能被400整除,如2
7、000(year % 4 = 0 & year 100 !=0)| year % 400 = 0如果表達式值為1,則閏年;否則為非閏年4.2 用if語句實現(xiàn)選擇結(jié)構(gòu)用if語句實現(xiàn)選擇結(jié)構(gòu)舉例if語句的一般形式if語句的使用說明使用嵌套的if語句實現(xiàn)多層判斷4.2.1 用if語句實現(xiàn)選擇結(jié)構(gòu)舉例例4.1 輸入兩個學生a和b的成績,輸出其中高的成績。解題思路:設(shè)定變量max,將高的成績放在其中如果a大于或等于b,把a的值賦給max如果b大于a,把b的值賦給max輸出max4.2.1 用if語句實現(xiàn)選擇結(jié)構(gòu)舉例真ab假max=a真ba假max=b#include main() float a, b,
8、 max;prf(please enter a and b:); scanf(%f,%f, &a, &b);if (a = b)max = a;if (b a)max = b;prf(max=%6.2fn, max);return 0;4.2.1 用if語句實現(xiàn)選擇結(jié)構(gòu)舉例if(a=b)max=a;elsemax=b;真ab假max=amax=b#include main() float a, b, max;prf(please enter a and b:); scanf(%f,%f, &a, &b);prf(max=%6.2fn, max);return 0;if (a = b)max =
9、 a;if (b a)max = b;4.2.1 用if語句實現(xiàn)選擇結(jié)構(gòu)舉例例4.2 輸入3個成績a, b, c,要求按由高到低的順序輸出。4.2.1 用if語句實現(xiàn)選擇結(jié)構(gòu)舉例解題思路:可以先用偽代碼寫出算法:if ab,a和b對換if ac,a和c對換if bc,b和c對換輸出a,b,c的值(a是a、b中的大者)(a是三者中最大者)(b是三者中次大者)如何交換兩個變量的值?交換有兩個兩個中分別裝著可樂和芬達,請將中的飲料交換(不借助其他工具)可樂芬達交換有兩個一個空中分別裝著可樂和芬達,還有,請將兩個中的飲料交換可樂芬達如何交換兩個變量?設(shè)需要交換的變量為a, b,交換a, b的值,需要借
10、助臨時變量,設(shè)為t原則:交換過程中不能丟失a和b的值t=aa=bb=tMisImsible不借助第三變量交換兩個變量的值#includemain()a=10,b=5;1.2.是按位異或(XOR)運算性質(zhì):aa=0a0=aprf(a=%d, b=%dn, a, b);b=ab;a=ab; b=ab;prf(a=%d, b=%dn, a, b);return 0;/2336974/797986位運算(Bitwise Operator)C語言提供了六種位運算符& 按位與| 按位或 按位異或 右移! 按位求反位運算符只能用在整數(shù)上位運算(Bitwise Operator)#include main()
11、a=85,b=42;if(a&b)prf(a&b=%dn,a&b);if(a&b)prf(True:a&b=%dn,a&b);prf(a&b=%dn,a&b);return 0;實現(xiàn)a和b的互換實現(xiàn)a和c的互換實現(xiàn)b和c的互換#include main() float a, b, c, t;prf(please enter a, b, c:);scanf(%f,%f,%f, &a, &b, &c);if (a b) t = a;a = b;b = t;if (a c) t = a;a = c;c = t;if (b y) prf(“%d”, x);0(假)表達式非0(真)語句4.2.2 if語
12、句的一般形式2. if (表達式) 語句1else 語句2if(xy) prf(”%d”, x);f(”%d”, y);elsepr0(假)非0(真)表達式語句1語句24.2.3 if語句的使用說明語句語句11.2.ififelse 語句2if(a=b & x=y)prf(”a=b, x=y”);關(guān)系表達式邏輯表達式(表達式)(表達式)4.2.3 if語句的使用說明) 語句1.2.ifif) 語句1else 語句2if(0) prif(1) prf(Not OK.n);f(OK.n);數(shù)值表達式關(guān)系表達式邏輯表達式(表達式(表達式4.2.3 if語句的使用說明語句語句11.2.ififelse
13、 語句2if(x0)prf(”%f”,x);f(”%f”,-x);不能丟elsepr數(shù)值表達式關(guān)系表達式邏輯表達式(表達式)(表達式)4.2.3 if語句的使用說明語句語句11.2.ififelse 語句2配對if(x0)prf(”%f”,x);f(”%f”,-x);elsepr數(shù)值表達式關(guān)系表達式邏輯表達式(表達式)(表達式)4.2.3 if語句的使用說明1. if (表達式)2. if (表達式) 語句1else 語句2可以是:簡單的語句復合語句另一個if語句等語句4.2.3 if語句的使用說明例4.3: 給出三角形的三個邊長,求三角形的面積。解題思路:三角形的必要條件是兩邊之和大于第三邊
14、,因此在計算三角形面積之前應(yīng)當進行該條件的判斷please enter a,b,c:2,3,4,c:2,3,6ral.#include area=2.90#include please enter a,bmain() It is norilatedouble a, b, c, s, area;prf(please enter a,b,c:);復合語句scanf(%lf,%lf,%lf, &a, &b, &c);if (a + b c & b + c a & c + a b)seprf(It is norilateral.n); return 0; els = 0.5 * (a + b + c)
15、;area = sqrt(s * (s - a) * (s - b) * (s - c); prf(area=%6.2fn, area);4.2.4 使用嵌套的if語句實現(xiàn)多層判斷有的選擇結(jié)構(gòu)中又包含一個或多個選擇結(jié)構(gòu),這稱為選擇結(jié)構(gòu)的嵌套if語句中可以又包括另一個if語句,這就是if語句的嵌套可以用if語句的嵌套實現(xiàn)嵌套的選擇結(jié)構(gòu)4.2.4 使用嵌套的if語句實現(xiàn)多層判斷一般形式:if( 表達式1 )else內(nèi)嵌ifif(表達式3 ) 語句3else 語句4if(表達式2 ) 語句1else 語句24.2.4 使用嵌套的if語句實現(xiàn)多層判斷例4.4 為促銷,對凡買50件以上的貨物多的顧客有5
16、%,買100件以上的:7.5%,買300件以上的10%,買500件以上的數(shù)量和單價,輸出應(yīng)的15%。輸入付貨款。4.2.4 使用嵌套的if語句實現(xiàn)多層判斷解題思路: 關(guān)鍵是寫出判斷貨物折扣的選擇結(jié)構(gòu) 應(yīng)付貨款=件數(shù)*單價*(1-折扣)4.2.4 使用嵌套的if語句實現(xiàn)多層判斷件數(shù)500真假件數(shù)300真假件數(shù)100真折扣15%假件數(shù)50折扣10%真假折扣7.5%折扣5%無折扣應(yīng)付貨款的計算#include #include main() number;double discount, price, total;prf(enter number and price:n); scanf(%d,%lf
17、, &number, &price);應(yīng)付貨款的計算(續(xù))if (number = 500)discount = 0.15;else if (number = 300)discount = 0.10; else if (number = 100)discount = 0.075; else if (number = 50)discount = 0.05;elsediscount = 0;total = number * price * (1 - discount);prf(Total=%10.2fn, total);return 0;enter number and price: 512,82
18、1.5Total= 357516.80應(yīng)付貨款的計算(續(xù))if (number = 500)discount = 0.15;else if (number = 300)discount = 0.10; else if (number = 100)discount = 0.075; else if (number = 50)discount = 0.05;elsediscount = 0;total = number * price * (1 - discount);prf(Total=%10.2fn, total);return 0;enter number and price: 350,82
19、1.5 Total= 258772.50應(yīng)付貨款的計算(續(xù))if (number = 500)discount = 0.15;else if (number = 300)discount = 0.10; else if (number = 100)discount = 0.075; else if (number = 50)discount = 0.05;elsediscount = 0;total = number * price * (1 - discount);prf(Total=%10.2fn, total);return 0;enter number and price: 150,8
20、21.5 Total= 113983.13應(yīng)付貨款的計算(續(xù))if (number = 500)discount = 0.15;else if (number = 300)discount = 0.10; else if (number = 100)discount = 0.075; else if (number = 50)discount = 0.05;elsediscount = 0;total = number * price * (1 - discount);prf(Total=%10.2fn, total);return 0;enter number and price: 20,8
21、21.5 Total= 16430.00else總是與它上面最近的未配對的if配對應(yīng)付貨款的計算(續(xù))if (number = 500)discount = 0.15;else if (number = 300)discount = 0.10; else if (number = 100)discount = 0.075; else if (number = 50)discount = 0.05;if (number=500) discount=0.15;else if (number=300) discount=0.10; else if (number=100) discount=0.07
22、5;else if (number=50)else discount=0;discount=0.05;elsediscount = 0;total = number * price * (1 - discount);prf(Total=%10.2fn, total);return 0;4.3 利用switch語句實現(xiàn)多分支選擇結(jié)構(gòu)switch語句用來實現(xiàn)多分支選擇結(jié)構(gòu)學生成績分類85分以上為A等7084分為B等6069分為C等統(tǒng)計分類1.2.3.4.1.按分為老、中、青、少、兒童4.3 利用switch語句實現(xiàn)多分支選擇結(jié)構(gòu)switch語句的一般形式:switch (表達式): 語句1case
23、casecase: 語句2不能相同: 語句ndefault : 語句n+1常量表達式1常量表達式2常量表達式n4.3 利用switch語句實現(xiàn)多分支選擇結(jié)構(gòu)break; break; break; break;break;Why?switch (grade) case A: prf(85100n);case B: prf(7084n);case C: prf(6069n);case D: prf(60n); default: prf(errorn);goto語句與(label)goto語句的格式#include main(void) n=0;goto示例:;prloop:f(input a s
24、tring:n);goto語句不是必須的if(getchar()!=n)n+;goto loop;Goto sementconsidered harmfulprf(%d, n);return 0;4.3 利用switch語句實現(xiàn)多分支選擇結(jié)構(gòu)其他ADBC輸出error輸出60輸出6069輸出7084輸出85100grade4.4 程序綜合舉例例4.6: 寫程序,判斷某一年是否為閏年。用變量leap代表是否閏年的信息若閏年,令leap=1;非閏年,leap=0最后判斷l(xiāng)eap是否為1(真),若是,則輸出“閏年”信息4. 參見圖4.13#include main() year, leap;標志變量
25、prf(Please enter year:); scanf(d, &year);if (year % 4 = 0)if (year % 100 = 0)if (year % 400 = 0) leap = 1; else leap = 0;else leap = 1;else leap = 0;f(%d is , year);與if (leap!=0)含義相同if (leap) prelse prf(%d is not , year);prf(a leap year.n); return 0;#include main() year, leap;prf(Please enter year:)
26、; scanf(%d, &year);if (leap) prf(%d is , year);else prf(%d is not , year);prf(a leap year.n); return 0;if(year%4!=0) leap=0;else if (year%100!=0) leap=1; else if(year%400!=0) leap=0; else leap=1;if (year % 4 = 0)if (year % 100 = 0)if (year % 400 = 0) leap = 1; else leap = 0;else leap = 1;else leap =
27、 0;#include main() year, leap;prf(Please enter year:); scanf(%d, &year);!=0)if (leap) prf(%d is , year);| (year%400=0)else prf(%d is nleoatp=, 1y;ear);f(a leap yeealsre.nl)e;arpe=tu0r;n 0;prif (year % 4 = 0)if (year % 100 = 0)if (year % 400 = 0) leap = 1; else leap = 0;else leap = 1;else leap = 0;if
28、(year%4=0 & year%100#include main() year, leap;prf(Please enter year:); scanf(%d, &year);!=0)if (leap) prf(%d is , year);| (year%400=0)else prf(%d is nleoatp=, 1y;ear);f(a leap yeealsre.nl)e;arpe=tu0r;n 0;prif (year % 4 = 0)if (year % 100 = 0)if (year % 400 = 0) leap = 1; else leap = 0;else leap = 1
29、;else leap = 0;if(year%4=0 & year%1004.4 程序綜合舉例(續(xù))例4.6公司對用戶計算運費。距離越遠,運費越低。標準如下: s250 250s500500s10001000s20002000s30003000s沒有折扣2折扣5折扣8折扣10折扣15折扣4.4 程序綜合舉例(續(xù))設(shè)每噸每千米貨物的基本運費為p,貨物重為w,距離為s,折扣為d總運費f的計算公式為f=pws(1-d)4.4 程序綜合舉例(續(xù))折扣的變化規(guī)律(參見圖4.15):折扣的“變化點”都是250的倍數(shù)在橫軸上加一種坐標c,c的值為s/250c代表250的倍數(shù)當c1時,表示s250,無折扣1c
30、2時,表示250s500,折扣d=22c4時,d=5;4c8時,d=8;8c12時,d=10;c12時,d=154.4 程序綜合舉例(續(xù))#include void main()c,s;double p,w,d,f;prf(請輸入單價、重量和距離:); scanf(%lf,%lf,%d,&p,&w,&s); if(s=3000) c=12;elsec=s/250;switch(c) case 0:case 1:case 2:case 3:case 4:case 5:case 6:case 7:case 8:d=0; break;d=2; break;d=5; break;d=8; break;
31、case 9:case 10:case 11:case 12:d=10; break;d=15; break;請輸入單價、重量和距離:15,145.6,346.9運費: 740550.72元f = p * w * s * (1 - d / 100.0); prf(“運費:%10.2f元n”,f);4.4 程序綜合舉例-計算器例:編寫程序,實現(xiàn)一個支持兩個整數(shù)本算術(shù)運算的計算器。要求:1. 應(yīng)該輸出必要的文字提示,告知用戶計算器所支持的運算和輸入的格式2. 支持+, -, *, /, %五種運算3. 支持 運算數(shù)運算符運算數(shù) 形式的輸入4. 對于的運算符,提示用戶輸入錯誤#includemain()char ch;x,y;f(我是計算器小Qn);prpr務(wù)哦:);pr prf(可以為您提供+ - * /五種整數(shù)運算服f(快來體驗吧!nn);f(請輸入運算表達式, 如5+6:n);scanf(%d%c%d,&x, &ch, &y);%switch(ch)case +: pr case -: pr case *: pr case /: prcase %: prf(%d%c%d=%dn, x, ch, y, x+y);f(%d%c%d=%dn, x, ch, y, x-y);break;break; break; break;f(d%c%d=%dn,
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025遼寧沈陽地鐵三號線招安檢員和安保員筆試參考題庫附帶答案詳解
- 2025屆百師聯(lián)盟高三上學期一輪復習聯(lián)考(五)歷史試題及答案
- 2025江蘇無錫市宜興市誠信人力資源服務(wù)有限公司招聘17人筆試參考題庫附帶答案詳解
- 教玩具制作知到智慧樹章節(jié)測試課后答案2024年秋山東女子學院
- 2025年福建省晉江人力資本有限公司招聘1人(第一批)筆試參考題庫附帶答案詳解
- 2025年安徽港航集團所屬企業(yè)招聘13人筆試參考題庫附帶答案詳解
- 公務(wù)用車定點維修服務(wù)計劃、管理方案
- 2025寧夏中衛(wèi)市中寧縣豐安屯旅游發(fā)展有限公司面向社會招聘16名筆試參考題庫附帶答案詳解
- 2025中國大唐集團科技創(chuàng)新有限公司招聘14人筆試參考題庫附帶答案詳解
- 2024遼寧沈陽盛京金控投資集團有限公司擬聘用人員筆試參考題庫附帶答案詳解
- 城市社會學(2015)課件
- 年產(chǎn)2萬噸馬來酸二乙酯技改建設(shè)項目環(huán)評報告書
- 中國古代文論教程完整版課件
- 中班美工區(qū)角活動教案10篇
- SJG 103-2021 無障礙設(shè)計標準-高清現(xiàn)行
- 皇冠假日酒店智能化系統(tǒng)安裝工程施工合同范本
- 路面工程重點、關(guān)鍵、和難點工程的施工方案(技術(shù)標)
- 合肥市城市大腦·數(shù)字底座白皮書2020
- 機電預留預埋工程施工組織設(shè)計方案
- 2022年三八婦女節(jié)婦女權(quán)益保障法律知識競賽題庫及答案(共290題)
- 引水罐的設(shè)計計算
評論
0/150
提交評論