c語(yǔ)言第4章 選擇結(jié)構(gòu)程序設(shè)計(jì)習(xí)題答案_第1頁(yè)
c語(yǔ)言第4章 選擇結(jié)構(gòu)程序設(shè)計(jì)習(xí)題答案_第2頁(yè)
c語(yǔ)言第4章 選擇結(jié)構(gòu)程序設(shè)計(jì)習(xí)題答案_第3頁(yè)
c語(yǔ)言第4章 選擇結(jié)構(gòu)程序設(shè)計(jì)習(xí)題答案_第4頁(yè)
c語(yǔ)言第4章 選擇結(jié)構(gòu)程序設(shè)計(jì)習(xí)題答案_第5頁(yè)
免費(fèi)預(yù)覽已結(jié)束,剩余1頁(yè)可下載查看

下載本文檔

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

文檔簡(jiǎn)介

c語(yǔ)言第4章選擇結(jié)構(gòu)程序設(shè)計(jì)習(xí)題答案c語(yǔ)言第4章選擇結(jié)構(gòu)程序設(shè)計(jì)習(xí)題答案c語(yǔ)言第4章選擇結(jié)構(gòu)程序設(shè)計(jì)習(xí)題答案資料僅供參考文件編號(hào):2022年4月c語(yǔ)言第4章選擇結(jié)構(gòu)程序設(shè)計(jì)習(xí)題答案版本號(hào):A修改號(hào):1頁(yè)次:1.0審核:批準(zhǔn):發(fā)布日期:第4章選擇結(jié)構(gòu)程序設(shè)計(jì)習(xí)題(P111)C語(yǔ)言中如何表示“真”和“假”系統(tǒng)如何判斷一個(gè)量的“真”和“假”答:C語(yǔ)言中用1表示真,0表示假;系統(tǒng)按照“非0為真,0為假”判斷一個(gè)邏輯量的真假。寫(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)算符(&&和||)低于算術(shù)運(yùn)算符和關(guān)系運(yùn)算符而高于賦值運(yùn)算符,在邏輯運(yùn)算符中,邏輯非最高,邏輯與其次,邏輯或最低;二、邏輯表達(dá)式的求值規(guī)則。(P94)所以得以上表達(dá)式的值分別為:(1)0(2)1(3)1(4)0(5)1有3個(gè)整數(shù)a、b、c,由鍵盤(pán)輸入,輸出其中最大的數(shù)。分析:這是一個(gè)規(guī)模較小的求最值的算法,習(xí)題用函數(shù)的方法實(shí)現(xiàn)。該題不用函數(shù)調(diào)用實(shí)現(xiàn),但方法類似。法一:先求前兩個(gè)數(shù)的最值,再用前兩個(gè)數(shù)的最值和第三個(gè)數(shù)比較即得結(jié)果。法二:先假設(shè)第一個(gè)數(shù)是最值,再依次和第二、第三個(gè)數(shù)比較得結(jié)果。其中都要用到單分支或雙分支選擇結(jié)構(gòu)語(yǔ)句。參考程序如下:法一:main(){ inta,b,c,max;/*定義4個(gè)整型變量,其中a,b,c存原始數(shù)據(jù),max存最值*/ printf("\ninputthevalueofa,b,c:");/*提示輸入*/ scanf("%d%d%d",&a,&b,&c);/*格式符之間無(wú)分隔符,輸入時(shí)可以以空格、回車、跳格分隔*/ if(a>b)max=a; elsemax=b; if(max<c)max=c; printf("\nmax=%d\n",max);}法二:main(){ inta,b,c,max; printf("\ninputthevalueofa,b,c:"); scanf("%d%d%d",&a,&b,&c); max=a; if(max<b)max=b; if(max<c)max=c; printf("\nmax=%d\n",max);}有一個(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<>main(){ floatx,y; printf("inputx:"); scanf("%f",&x); if(x<1) y=x; elseif(x<10)/*使用了隱含條件x>=1*/ y=2*x-1; else/*前兩個(gè)條件都不滿足,則隱含條件為x>=10*/ y=3*x-11; printf("y=%f\n",y);}對(duì)上述參考答案中加粗部分語(yǔ)句的改寫(xiě)方法:if(x<10)if(x<1)y=x;elsey=2*x-1;if(x<10)if(x<1)y=x;elsey=2*x-1;elsey=3*x-11;if(x>=10)y=3*x-11;elseif(x<1)y=x;elsey=2*x-1;if(x>=1&&x<=10)y=2*x-1;elseif(x>10)y=3*x-11;elsey=x;思考:還有其他的改寫(xiě)方法嗎請(qǐng)動(dòng)手寫(xiě)一寫(xiě)。給出一百分制成績(jī),要求輸出成績(jī)等級(jí)'A'、'B'、'C'、'D'、'E'。90以上為'A',80~89分為'B',70~79分為'C',60~69分為'D',60分以下為'E'。分析:該題是一個(gè)多分支選擇的應(yīng)用。C語(yǔ)言中實(shí)現(xiàn)多分支選擇的方法可以用if~else嵌套語(yǔ)句或用switch語(yǔ)句,該題這兩種方法都可以實(shí)現(xiàn)。在用if~else實(shí)現(xiàn)的時(shí)候注意else和if的配對(duì),方法同上題;用switch語(yǔ)句實(shí)現(xiàn)的時(shí)候注意成績(jī)處理為可以列舉的值,方法是將成績(jī)?nèi)≌笳?0,這樣百分制的成績(jī)只有11種可能了。參考程序如下:法一(if~else語(yǔ)句實(shí)現(xiàn)):main(){floatscore;/*存放輸入的百分制成績(jī)*/chargrade;/*存放等級(jí)*/printf("\nPleaseinputthescore:");/*提示輸入*/scanf("%f",&score);/*完成輸入*/while(score>100||score<0)/*對(duì)輸入的成績(jī)進(jìn)行合法性檢查*/{printf("Scoreinputerror!\nPleaseinputthescore:");/*若不合法則提示重新輸入*/scanf("%f",&score);/*重新輸入*/}printf("\n");/*以下對(duì)成績(jī)進(jìn)行判斷,計(jì)算出對(duì)應(yīng)的等級(jí)*/if(score>=90)grade='A';elseif(score>=80)grade='B';elseif(score>=70)grade='C';elseif(score>=60)grade='D';elsegrade='E';printf("Score=%gGradeis%c\n",score,grade);/*輸出結(jié)果*/}法二(switch語(yǔ)句實(shí)現(xiàn)):main(){floatscore;chargrade;printf("\nPleaseinputthescore:");scanf("%f",&score);while(score>100||score<0){printf("Scoreinputerror!\nPleaseinputthescore:");scanf("%f",&score);}printf("\n");switch((int)score/10)/*先將成績(jī)?nèi)≌?,再整?0,得商的整數(shù)部分*//*以下case后為switch后表達(dá)式計(jì)算出來(lái)可能的值*/{case10:case9:grade='A';break;/*兩個(gè)case值共用一組執(zhí)行語(yǔ)句*/case8:grade='B';break;case7:grade='C';break;case6:grade='D';break;default:grade='E';}printf("Score=%gGradeis%c\n",score,grade);}給一個(gè)不多于5位的正整數(shù),要求:求出它是幾位數(shù);分別輸出每一位數(shù)字;按逆序輸出各位數(shù)字。分析:該題的關(guān)鍵是將一個(gè)整數(shù)分解為各位數(shù)字,可以用整除和取余相結(jié)合的方法實(shí)現(xiàn),并分別用不同的變量保存起來(lái)。由于整數(shù)的位數(shù)在1~5位之間不確定,所以適合用switch開(kāi)關(guān)語(yǔ)句實(shí)現(xiàn)。參考程序如下:main(){longintnum;/*num存放輸入的原始數(shù)據(jù),由于最大的5位數(shù)是99999,它超出了int型的范圍(-32768~+32767)所以定義為long型*/intw,a,b,c,d,e;/*變量w用于存放數(shù)的位數(shù),其余存放5位數(shù)的各位數(shù)字*/printf("Pleaseinputanumber(0~99999):");/*提示輸入*/scanf("%ld",&num);/*輸入長(zhǎng)整型數(shù)據(jù)*/while(num<0||num>99999)/*檢查輸入數(shù)據(jù)的合法性*/{printf("\nInputError!Pleasere-enter:");scanf("%ld",&num);}/*一組if~else的嵌套確定輸入的num是幾位數(shù)*/if(num<10)w=1;elseif(num<100)w=2;elseif(num<1000)w=3;elseif(num<10000)w=4;elsew=5;/*根據(jù)位數(shù)分解num的各位數(shù)字*/switch(w){case5:e=num/10000;/*萬(wàn)位存于變量e中*/case4:d=num/1000%10;/*千位存于變量d中*/case3:c=num/100%10;/*百位存于變量c中*/case2:d=num/10%10;/*十位存于變量b中*/case1:a=num%10;/*個(gè)位存于變量a中*/}/*順序、逆序輸出分解后的各位數(shù)字*/switch(w){case5:printf("Shunxu:%d%d%d%d%d\n",e,d,c,b,a);printf("Nixu:%d%d%d%d%d\n",a,b,c,d,e);break;case4:printf("Shunxu:%d%d%d%d\n",a,b,c,d);printf("Nixu:%d%d%d%d\n",d,c,b,a);break;case3:printf("Shunxu:%d%d%d\n",a,b,c);printf("Nixu:%d%d%d\n",c,b,a);break;case2:printf("Shunxu:%d%d\n",a,b);printf("Nixu:%d%d\n",b,a);break;case1:printf("Shunxu:%d%d\n",a,b);printf("Nixu:%d%d\n",b,a);break;}}輸入4個(gè)整數(shù),要求按照由小到大的順序輸出。分析:小規(guī)模數(shù)據(jù)的簡(jiǎn)單排序可參考P88例,先將第一個(gè)變量和其后各變量逐一比較,逆序交換,最終將最值存于第一個(gè)變量中;然后將第二個(gè)變量和其后各變量再逐一比較,逆序交換,將第二個(gè)最值存于第二個(gè)變量中;以此類推,直到最的兩個(gè)變量比較,逆序交換。最后按順序輸出各變量的值即為有序。參考程序如下:main(){ inta,b,c,d,t; printf("\n請(qǐng)輸入4個(gè)整數(shù):"); sc

溫馨提示

  • 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ì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論