下載本文檔
版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、第4章選擇結(jié)構(gòu)程序設(shè)計(jì) 習(xí)題(P111)4.2 C語(yǔ)言中如何表示“真”和“假” ?系統(tǒng)如何判斷一個(gè)量的“真”和“假” ?答:C語(yǔ)言中用1表示真,。表示假;系統(tǒng)按照“非0為真,。為假”判斷一個(gè)邏輯量的真假。4.3 寫(xiě)出下面各邏輯表達(dá)式的值。設(shè) a=3,b=4,c=5。(1) a+b>c&&b=c(2) a|b+c&&b-c(3) !(a>b)&&!c|1(4) !(x=a)&&(y=b)&&0(5) !(a+b)+c-1&&b+c/2解:該題在求解過(guò)程中注意:一、優(yōu)先級(jí)。邏輯運(yùn)算符(&am
2、p;&和| )低于算術(shù)運(yùn)算符和關(guān)系運(yùn)算符而高于賦值運(yùn)算符,在邏輯運(yùn)算符中,邏輯非最高,邏輯與其次,邏輯或最低;二、邏輯表達(dá)式的求值規(guī)則。(P94)所以得以上表達(dá)式的值分別為:(1) 0(2) 1(3) 1(4) 0(5) 14.4有3個(gè)整數(shù)a、b、c,由鍵盤(pán)輸入,輸出其中最大的數(shù)。分析:這是一個(gè)規(guī)模較小的 求最值的算法,習(xí)題1.6用函數(shù)的方法實(shí)現(xiàn)。該題不用函數(shù)調(diào)用實(shí)現(xiàn),但方法 類(lèi)似。法一:先求前兩個(gè)數(shù)的最值,再用前兩個(gè)數(shù)的最值和第三個(gè)數(shù)比較即得結(jié)果。法二:先假設(shè)第一個(gè)數(shù) 是最值,再依次和第二、第三個(gè)數(shù)比較得結(jié)果。其中都要用到單分支或雙分支選擇結(jié)構(gòu)語(yǔ)句。參考程序如下: 法一:main()
3、 int a,b,c,max; /*定義4個(gè)整型變量,其中 a,b,c存原始數(shù)據(jù),max存最值*/ipprintf("ninput the value of a,b,c:"); /* 提示輸入*/i;scanf("%d%d%d",&a,&b,&c);/*格式符之間無(wú)分隔符,輸入時(shí)可以以空格、回車(chē)、跳格分隔Iii*/if(a>b) max=a; i else max=b; iiif(max<c) max=c; iiprintf("nmax=%dn",max); ii法二: ! B1 aj Baas g
4、hmj kh - ihimi . . laMf; Mia ( mmb-hm i.im gm .1 bhmh11 B1 ! mmbbim |bm| bimi ,事 imi mm immmm uiigbm.11 Ma.ga1"*1 |main()ili int a,b,c,max; printf("ninput the value of a,b,c:");scanf("%d%d%d",&a,&b,&c); IImax=a; ;if(max<b) max=b;ii!if(max<c)max=c;printf(&qu
5、ot;nmax=%dn",max); ii _ _ _ _ _ _ _ _ _ _ _ _ _ _ 4.6有一個(gè)函數(shù):寫(xiě)一段程序,輸入x,輸出y的值。分析:這是一個(gè)典型的分?jǐn)嗪瘮?shù)的求解應(yīng)用。運(yùn)行時(shí)從鍵盤(pán)輸入x的值,再判斷其范圍根據(jù)表達(dá)式計(jì)算y值并輸出即可。該題的關(guān)鍵是如何判斷x值的范圍,需要用到嵌套的分支選擇語(yǔ)句。具體方法比較多,可以先確定任意一個(gè)范圍,在確定其余范圍時(shí)可以用到前一條件不滿足的隱含條件。注意嵌套語(yǔ)句中else和if的配對(duì)關(guān)系。另外仍然要注意C語(yǔ)言表達(dá)式和數(shù)學(xué)表達(dá)式的區(qū)別,乘號(hào)(*)在C語(yǔ)言表達(dá)式中一定不能省略。參考程序如下:#include<stdio.h>
6、;main() float x,y;printf("input x:"); scanf("%f",&x);if(x<1)y=x;else if(x<10) /* 使用了隱含條件x >=1*/y=2*x-1;x>=10*/else /*前兩個(gè)條件都不滿足,則隱含條件為 y=3*x-11;printf("y=%fn",y);對(duì)上述參考答案中加粗部分語(yǔ)句的改寫(xiě)方法:if(x<10)if(x<1) y=x;else y=2*x-1;else y=3*x-11;if(x>=10)y=3*x-11
7、;else if (x<1) y=x;else y=2*x-1;if(x>=1 && x<=10)y=2*x-1;else if(x>10)y=3*x-11;else y=x;思考:還有其他的改寫(xiě)方法嗎?請(qǐng)動(dòng)手寫(xiě)一寫(xiě)。4.8給出一百分制成績(jī),要求輸出成績(jī) 等級(jí)A'、'B'、C'、D'、'E'。90以上為A', 8089分為'B', 7079分為'C', 6069分為'D', 60分以下為E'。分析:該題是一個(gè)多分支選擇的應(yīng)用。 C語(yǔ)言中
8、實(shí)現(xiàn)多分支選擇的方法可以用ifelse嵌套語(yǔ)句或用switch語(yǔ)句,該題這兩種方法都可以實(shí)現(xiàn)。在用ifelse實(shí)現(xiàn)的時(shí)候注意 else和if的配對(duì),方法同上題;用 switch語(yǔ)句實(shí)現(xiàn)的時(shí)候注意成績(jī)處理為可以列舉的值,方法是將成績(jī)?nèi)≌笳?10,這樣百分制的成績(jī)只有 11種可能了。參考程序如下:法一(ifelse語(yǔ)句實(shí)現(xiàn)):main()! float score; /*存放輸入的百分制成績(jī)*/!char grade; /* 存放等級(jí) */!printf("nPlease input the score: "); /* 提示輸入*/j!scanf("%f"
9、;,&score);/* 完成輸入 */|iwhile(score>100 | score < 0)/*對(duì)輸入的成績(jī)進(jìn)彳T合法性檢查*/i printf("Score input error!nPlease input the score:"); /* 若不合法則提示重新輸入*/i! scanf("%f",&score); /* 重新輸入 */i printf("n");i /*以下對(duì)成績(jī)進(jìn)行判斷,計(jì)算出對(duì)應(yīng)的等級(jí)*/iif(score>=90) grade='A' else if(s
10、core>=80) grade='B'IIIelse if(score>=70) grade='C'else if(score>=60) grade='D'I4else grade='E'printf("Score= %g Grade is %cn",score,grade); /* 輸出結(jié)果 */ 法二(switch語(yǔ)句實(shí)現(xiàn)):main() float score;char grade;printf("nPlease input the score:");scanf(&q
11、uot;%f",&score);while(score>100 | score < 0) printf("Score input error!nPlease input the score:"); scanf("%f",&score); printf("n");i switch( (int)score/10 ) /*先將成績(jī)?nèi)≌?,再整?0,得商的整數(shù)部分*/!/*以下case后為switch后表達(dá)式計(jì)算出來(lái)可能的值*/ case 10:! case 9: grade='A' br
12、eak; /* 兩個(gè) case值共用一組執(zhí)行語(yǔ)句*/case 8: grade='B' break;case 7: grade='C' break;case 6: grade='D' break;default: grade='E' printf("Score=%g Grade is %cn",score,grade); I 方 I .-1 - I HM II1 ! II 1-1 II ! Ml M I I IMMIM I I tl MI I4.9給一個(gè)不多于5位的正整數(shù),要求: 求出它是幾位數(shù);分別輸出每一位
13、數(shù)字;按逆序輸出各位數(shù)字。分析:該題的關(guān)鍵是將一個(gè)整數(shù)分解為各位數(shù)字,可以用整除和取余相結(jié)合的方法實(shí)現(xiàn),并分別用不同 的變而起來(lái)。由于整數(shù)的位數(shù)在15位之間不確定,所以適合用switch開(kāi)關(guān)語(yǔ)句實(shí)現(xiàn)。參考程序如下:main()1 long int num;/* num 存放輸入的原始數(shù)據(jù),由于最大的 5位數(shù)是99999,它;超出了 int型的范圍(-32768 +32767)所以定義為long型*/! int w,a,b,c,d,e;/*變量w用于存放數(shù)的位數(shù),其余存放5位數(shù)的各位數(shù)字*/i printf("Please input a number(099999):");
14、/* 提示輸入 */| scanf("%ld",&num); /* 輸入長(zhǎng)整型數(shù)據(jù)*/! while( num<0 | num>99999 )/* 檢查輸入數(shù)據(jù)的合法性*/ printf("nInput Error! Please re-enter:"); scanf("%ld",&num);1/* 一組ifelse的嵌套確定輸入的num是幾位數(shù)*/if(num<10) w=1;else if(num<100) w=2;else if(num<1000) w=3;else if(num&l
15、t;10000) w=4;else w=5;I /*根據(jù)位數(shù)分解num的各位數(shù)字*/switch( w ) case 5: e=num/10000;/* 萬(wàn)位存于變量 e 中*/case 4: d=num/1000%10;/*千位存于變量d 中*/case 3: c=num/100%10;/*百位存于變量c 中*/IIcase 2: d=num/10%10;/*十位存于變量b 中*/ case 1: a=num%10;/* 個(gè)位存于變量 a 中*/j /*順序、逆序輸出分解后的各位數(shù)字*/IIswitch(w) case 5: printf("Shunxu:%d%d%d%d%dn&q
16、uot;, e,d,c,b,a);printf("Nixu:%d%d%d%d%dn", a,b,c,d,e); break; IIcase 4: printf("Shunxu:%d%d%d%dn",a,b,c,d);printf("Nixu:%d%d%d%dn",d,c,b,a); break;|Icase 3: printf("Shunxu:%d%d%dn",a,b,c); printf("Nixu:%d%d%dn",c,b,a); break;case 2: printf("Shu
17、nxu:%d%dn",a,b); printf("Nixu:%d%dn",b,a);break;case 1: printf("Shunxu:%d%dn",a,b); printf("Nixu:%d%dn",b,a);break;1 ! i iaMi n4.11輸入4個(gè)整數(shù),要求按照由小到大的順序輸出。分析:小規(guī)模數(shù)據(jù)的簡(jiǎn)單排序可參考P88例4.3,先將第一個(gè)變量和其后各變量逐一比較,逆序交換,最終將最值存于第一個(gè)變量中;然后將第二個(gè)變量和其后各變量再逐一比較,逆序交換,將第二個(gè)最值存于第 二個(gè)變量中;以此類(lèi)推,直到最的兩個(gè)變量比較,逆序交換。最后按順序輸出各變量的值即為有序。 參考程序如下:main()II int a,b,c,d,t;! printf("n請(qǐng)輸入4個(gè)整數(shù):");scanf("%d%d%d%d",&a,&b,&c,&d); if(a
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝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ù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2024年車(chē)位產(chǎn)權(quán)買(mǎi)賣(mài)協(xié)議格式
- 2024年防水施工勞務(wù)協(xié)議規(guī)范化文件
- 2024新疆企業(yè)勞動(dòng)協(xié)議規(guī)范化樣本
- 2024受托代理事務(wù)協(xié)議樣本
- 2024年專業(yè)運(yùn)營(yíng)車(chē)輛租賃協(xié)議模板
- DB11∕T 1514-2018 低效果園改造技術(shù)規(guī)范
- 單位廣告策劃與制作服務(wù)協(xié)議范例
- 2024年公司文秘職務(wù)聘用協(xié)議模板
- 2024年企業(yè)員工全日制勞動(dòng)協(xié)議模板
- 文書(shū)模板-《廠房光伏租賃合同》
- 20篇食堂培訓(xùn)內(nèi)容
- 中國(guó)郵政集團(tuán)有限公司浙江省分公司招聘筆試題庫(kù)2024
- 《公安機(jī)關(guān)人民警察內(nèi)務(wù)條令》知識(shí)題庫(kù)
- 前程無(wú)憂行測(cè)筆試題庫(kù)
- 2024年北京市中考英語(yǔ)試卷附答案
- 2024年廣東省深圳市中考地理試卷(含答案)
- 十一屆三中全會(huì)
- 專題一第3課三、《SmartArt圖形工具的使用》教學(xué)設(shè)計(jì) 2023-2024學(xué)年青島版(2018)初中信息技術(shù)七年級(jí)下冊(cè)
- 【中職專用】中職高考數(shù)學(xué)一輪復(fù)習(xí)講練測(cè)(講+練+測(cè))5.3三角函數(shù)的圖像和性質(zhì)(原卷版+解析)
- 2024新滬教版英語(yǔ)初一上單詞表
- 2024年抗菌藥物處方權(quán)資格考試試題
評(píng)論
0/150
提交評(píng)論