c語(yǔ)言程序設(shè)計(jì)第五版習(xí)題答案解析_第1頁(yè)
c語(yǔ)言程序設(shè)計(jì)第五版習(xí)題答案解析_第2頁(yè)
免費(fèi)預(yù)覽已結(jié)束,剩余52頁(yè)可下載查看

下載本文檔

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

文檔簡(jiǎn)介

1、習(xí)題解析與答案第 1 章 C 語(yǔ)言概述一簡(jiǎn)答題1.概述C語(yǔ)言的主要特點(diǎn)。【解答】(1)語(yǔ)言簡(jiǎn)潔、緊湊,使用方便、靈活。(2)數(shù)據(jù)類型豐富,表達(dá)能力強(qiáng)。(3) 運(yùn)算符多樣。C語(yǔ)言中的運(yùn)算符包含的范圍非常廣泛。(4) 具有結(jié)構(gòu)化的控制語(yǔ)句。 如ifelse語(yǔ)句、while語(yǔ)句、dowhile語(yǔ)句、switch語(yǔ)句、for語(yǔ)句。(5) 允許直接訪問(wèn)物理地址。C語(yǔ)言中含有的位和指針運(yùn)算,能 夠直接對(duì)內(nèi)存地址進(jìn)行訪問(wèn)操作。(6)所生成的目標(biāo)代碼質(zhì)量高,可移植性好。2.構(gòu)成C語(yǔ)言程序的基本單位是什么它由哪幾部分組成【解答】函數(shù)是構(gòu)成 c 語(yǔ)言程序的基本單位。 一個(gè)完整的C程序一般由文件包含、 宏定 義、函

2、數(shù)說(shuō)明、變量和一個(gè)或若干個(gè)函數(shù)組成。3.C語(yǔ)言程序的運(yùn)行一般要經(jīng)過(guò)哪幾個(gè)步驟?【解答】(1)編輯;(2)編譯;(3)連接,生成EXE文件;(4)執(zhí)行。二.運(yùn)行程序?qū)懡Y(jié)果1.輸入下面程序并運(yùn)行。main()inta1,a2,x;a1=100;a2=50;x=a1-a2;printf(”x=%d n,x); 一 一【解答】運(yùn)行結(jié)果為:x=502.輸入下面程序并運(yùn)行。main()inta1,a2,x;a1=10;a2=20; x=a1*a2;printf(”a%dn,al,a2)printf(”x=%d n,x);【解答】運(yùn)行結(jié)果為:a1=10,a2=20 x=2003輸入下面程序并運(yùn)行#inclu

3、demain() printf(*n);printf(*n); printf(*n); printf(*n);解答】運(yùn)行結(jié)果為:*思考:可以修改程序,使之輸出平行四邊形,等腰三角形等圖 形。三編程題1.參照本章例題,編寫一個(gè)C程序,用于顯示如下信息:*IloveCprograms!*【分析與提示】1要有文件包含語(yǔ)句#include。C語(yǔ)言中沒(méi)有數(shù)據(jù)的 輸入、輸出等功能,數(shù)據(jù)的輸入、輸出都是通過(guò)調(diào)用系統(tǒng)提供 的庫(kù)函數(shù)scanf和printf等來(lái)實(shí)現(xiàn)的。這些函數(shù)的說(shuō)明都包括 在stdio.h文件中。2main是主函數(shù)的名稱。用括起來(lái)的內(nèi)容是函數(shù)體,函數(shù) 體由若干條語(yǔ)句組成,這是計(jì)算機(jī)要執(zhí)行的部分,

4、每條語(yǔ)句以 分號(hào)“;”結(jié)束。3注意顯示的信息有三行,所以要用到換行符“n”。printf(H*n);printf(n);參考代碼:#in clude main ()prin tf(lloveCprograms!n);第 2 章數(shù)據(jù)類型及其運(yùn)算一.簡(jiǎn)答題1.C語(yǔ)言中的數(shù)據(jù)類型主要有哪幾類?【解答】短整型(shortint)整型整型(int )(長(zhǎng)整型(longint) 基本類型字符型(chap 單精度(float)實(shí)型(浮點(diǎn)型)雙精度(double)枚舉類型(enum)數(shù)組類型J構(gòu)造類型結(jié)構(gòu)體類型(struct)f共用體類型(union )-指針類型空類型(void )2.字符常量與字符串常量有

5、什么區(qū)別?【解答】字符常量用單括號(hào)括起,字符串常量用雙括號(hào)括起;字符常量存儲(chǔ)時(shí)占1個(gè)字節(jié),字符串常量存儲(chǔ)時(shí)除了n個(gè)字符外,還有 系統(tǒng)加上的字符串終止符0,所以字符串常量存儲(chǔ)時(shí)占n+1個(gè)字節(jié)。3.C語(yǔ)言中的常量包括哪幾類?各自是如何構(gòu)成的?【解答】C語(yǔ)言中的常量是一些其值預(yù)先定的量,并且在程序執(zhí)行過(guò)程中其值不再發(fā)生變化。常量的分類遵循基本數(shù)據(jù)類型分類原則,C語(yǔ)言編譯系統(tǒng)自動(dòng)將其存放在于類型相應(yīng)的內(nèi)存單元中。其類 別包含整形常量、浮點(diǎn)常量、字符常量、字符串常量和枚舉常量。整 形常量又分為十進(jìn)制整形常量、 八進(jìn)制整形常量、 十六進(jìn)制整形常量。 浮點(diǎn)常量分成十進(jìn)制形式和指數(shù)形式。C語(yǔ)言中的,字符常量是

6、用單 括號(hào)括起來(lái)的一個(gè)字符或是字符序列, 而字符串常量是用一對(duì)雙括號(hào) 括起來(lái)的零個(gè)或者多個(gè)字符組成的序列。4 簡(jiǎn)述指針、變量的指針、變量的值、指針變量與指針變量 的值的含義是什么?【解答】C語(yǔ)言中將地址又稱為“指針”。一個(gè)變量所分配的內(nèi) 存空間首字節(jié)地址,稱為該變量的指針(地址),變量的值就被放入所 分配的地址單元中。地址一旦被分配,就不會(huì)再改變,所以,指針是 一個(gè)常量。 既然是常量就可以把它賦給一個(gè)變量。 用來(lái)存放指針的變 量,被稱為指針變量。一個(gè)指針變量的值是變量的地址,一個(gè)指針變 量可以被賦予不同的指針值。5 下面哪些是不合法的常量?說(shuō)明不合法的理由。123,3.1415926,0892

7、,M,n,0 xabc,0.618E-6,”Morning” ,3.8e-3.14【解答】非法常量有:0892含有非八進(jìn)制數(shù)字8和93.8e-3.14非法指數(shù)形式浮點(diǎn)常量:規(guī)定e后面的指數(shù)必須為整數(shù)。6下面對(duì)變量定義的語(yǔ)句哪些不正確?為什么?請(qǐng)改正。(1)charc1,inta2;(2)INTa,b;FLOATx,y;(3)a,b:char;(4)charif;(5)inta,b(6)Inta:b:c;(7)inta,x;floatx,y;【解答】(1)charc1,inta2;錯(cuò)誤。定義不同類型的變量時(shí),應(yīng)用分號(hào)彼此分開(kāi)。改正為:charc1;inta2;(2)INTa,b;FLOATx,y

8、;錯(cuò)誤。C語(yǔ)言中表示類型名的關(guān)鍵字必須小寫。改正為:inta,b;floatx,y;(3)a,b:char;錯(cuò)誤。C語(yǔ)言中變量定義格式為:類型名變量名;改正為:chara,b;(4)charif;錯(cuò)誤。變量名不能與C語(yǔ)言的關(guān)鍵字重名。改正為:charf1;(5)inta,b錯(cuò)誤。變量定義以語(yǔ)句形式出現(xiàn),應(yīng)以分號(hào)結(jié)尾。 改正為:inta,b;6)Inta:b:c;錯(cuò)誤。類型名不能有大寫字母,相同類型名之間用逗號(hào)分隔。改正為:inta,b,c;(7)inta,x;floatx,y;錯(cuò)誤。在同一程序位置上, 同一變量名不能重復(fù)定義充當(dāng)兩個(gè)不 同的變量。改正為:inta,x;floatx1,y;7 下

9、述字符串常量的長(zhǎng)度是多少?在內(nèi)存中存儲(chǔ)時(shí)各自占用 的單元數(shù)又是多少?(1)“Hello!”(2)“ABC?”(3)“765+123=”【解答】(1)“Hello!”字符串長(zhǎng)度為6,占用內(nèi)存字節(jié)數(shù)為7。(2)“ABC?”字符串長(zhǎng)度為9,占用內(nèi)存字節(jié)數(shù)為10。因?yàn)槠渲懈髯灾徽家粋€(gè)字符的位置。(3)“765+123=”該字符串不是合法的,因?yàn)?65表示的值太大,超出合法的ASCII字符集的范圍。二運(yùn)行程序?qū)懡Y(jié)果1.以下程序的執(zhí)行結(jié)果是_。main()inti,j;i=15;printf(“d,%d ,i+,i -);【解答】14,152.以下程序的執(zhí)行結(jié)果是。mai n()in ta=20,b=10

10、,c,*p1,*p2;p仁&a;p2=&b;c=(-*p1)/(*p2)+6;prin tf(a=%d,b=%dn,a,b);prin tf(*p仁 d,*p2=%dn,*p1,*p2); prin tf(c=%dn ,c);【分析與提示】p1a_a-l_2MP2b【解答】=2卻=1010*p1= 20,*p2=10c=43.以下程序的執(zhí)行結(jié)果是。#in cludemai n()chara=G ,b=o,c=o,d=da=a+32;b=b-6;c=c+3;d=d+8;prin tf(%c%c%c%c n ,a,b,c,d);【分析與提示】從ASCII代碼表可以看出,字符“G”、

11、“o”、“o”、“d” 的ASCII代碼值為71、111、101,因此,G+32、o-6、o+3、d+8的值分別是103、105、114、108,它們所對(duì)應(yīng)的字符分別是“g”、“i”、“r”、“l(fā)”。常用結(jié)論:(1)在C語(yǔ)言中,字符數(shù)據(jù)可以按其ASCI I代碼值參加整數(shù)運(yùn) 算。由于英文字母在ASCII代碼表中是按順序排列的,所以在計(jì) 算o+3代表的字母時(shí),可從字符o其順序向后取3個(gè)字母,該 字母是“r”。(2)從ASCII代碼表可以看出“小寫字母”-“對(duì)應(yīng)大寫字母” 的結(jié)果是32,因此可推算出如下等式:大寫字母的ASCII值+32=對(duì)應(yīng)小寫字母的ASCII值; 小寫字母的ASCII值-32=對(duì)

12、應(yīng)大寫字母的ASCII值?!窘獯稹縢irl4以下程序的執(zhí)行結(jié)果是。#includemain()intx;x=-3+4*5-6;printf(x1=%dn,x);x=3+4%5-6;printf(x2=%dn,x);x=-3*4%-6;printf(x3=%dn,x);【分析與提示】x1=11(4*5是20,-3+20是17,17-6等于11)x2=1(4%5等于4,3+4等于7,7-6等于1)x3=0(-3*4等于-12,-12%-6等于0)【解答】x1=11x2=1x3=05以下程序的執(zhí)行結(jié)果是。#includemain()printf(%dn,NULL);printf(%d,%cn,49,

13、49);printf(%d,%c,%on,48+10,48+10,48+10);【分析與提示】0(NULL的ASCII碼值是0)49,1(數(shù)字1的ASCII碼值是49)58,:,72(48+10等于58,正好是“:”的ASCII碼值,八進(jìn)制表示是72)【解答】049,158,:,72三、改錯(cuò)題1 請(qǐng)修改下列程序,使其能夠通過(guò)編譯。#includeVoidMain()inta=6;b=8;intc;c=a*b;printf(%d,c);【答案】錯(cuò)誤的地方有3處:(1)第2行關(guān)鍵字應(yīng)該小寫;(2)定義b時(shí)前面應(yīng)該用逗號(hào);(3)打印語(yǔ)句的格式應(yīng)該用 雙引號(hào)括起來(lái)。正確的程序如下:#includevo

14、idmain()inta=6,b=8;intc;c=a*b;printf(%d,c);2 請(qǐng)修改下列程序,使其能夠正確運(yùn)行。#includevoidmain();floatf=7.12;Icharc=”c”;printf(“%d n”,int(f%3);printf(“%c”,c);【答案】錯(cuò)誤的地方有3處:(1)第2行main();不應(yīng)該有分 號(hào);(2)定義charc=”c”;時(shí),字符常量應(yīng)該用單引號(hào);(3)打印語(yǔ)句printf(“%d n”,int(f%3);的格式有錯(cuò),應(yīng)該在f前的int用括號(hào)括起來(lái),因?yàn)閷?shí)型數(shù)據(jù)不能執(zhí)行取余運(yùn)算。正確的程序如下:#includevoidmain()flo

15、atf=7.12;charc=c;printf(%dn,(int)f%3);printf(%c,c);第 3 章順序結(jié)構(gòu)程序設(shè)計(jì)一簡(jiǎn)答題1程序有哪三種基本結(jié)構(gòu)?解答】程序的三種基本結(jié)構(gòu)為:順序結(jié)構(gòu)、選擇結(jié)構(gòu)和循環(huán)結(jié)構(gòu)。2.C 語(yǔ)言的語(yǔ)句有哪幾類?表達(dá)式語(yǔ)句與表達(dá)式有什么不同?【解答】C語(yǔ)句可分為以下五類:表達(dá)式語(yǔ)句、函數(shù)調(diào)用語(yǔ)句、控制語(yǔ)句、 復(fù)合語(yǔ)句和空語(yǔ)句。 其中表達(dá)式語(yǔ)句與表達(dá)式的區(qū)別在于 表達(dá)式語(yǔ)句是表達(dá)式加上“;”組成。二、填空題1.符號(hào)& 是_運(yùn)算符,&a是指_。2._C語(yǔ)言中的空語(yǔ)句就是_。3._ Seanf函數(shù)中的“格式字符”后面應(yīng)該是_,而不應(yīng)該是_。4.若想輸

16、出字符%則應(yīng)該在“格式字符”的字符串中用_表示。5. intx=7;執(zhí)行x+=x-=x+x;后x的值是_。6._inta=10,b=20;a+=b;b=a-b;a-=b;的功能是_。答案:1.地址、變量a的內(nèi)存地址。2.一個(gè)分號(hào)。3.變量地址,變量名。解答】程序的三種基本結(jié)構(gòu)為:順序結(jié)構(gòu)、選擇結(jié)構(gòu)和循環(huán)結(jié)4.連續(xù)2個(gè)%號(hào)。5. -146.交換變量a,b的值,打印出a=20,b=10。三.運(yùn)行程序?qū)懡Y(jié)果解答】A1.以下程序的執(zhí)行結(jié)果是。#includemain()doubled=3.2;intx,y;x=1.2;y=(x+3.8)/5.0;printf(%dn,d*y);【解答】02以下程序的執(zhí)

17、行結(jié)果是。main()doubled;floatf;longl;inti;i=f=l=d=20/3;printf(%d%ld%f%fn,i,l,f,d);【解答】666.0000006.000000 3以下程序的執(zhí)行結(jié)果是。main()intk=17;printf(%d,%o,%xn,k,k,k);【解答】17,21,114以下程序的執(zhí)行結(jié)果是。#includemain()chara,b,c,d;a=A,b=B,c=C,d=D;printf(%1cn,a);printf(%2cn,b);printf(%3cn,c);printf(%4cn,d);【分析與提示】可以用c格式輸出的,也可以用d格式

18、輸出,所以與md近似,m指出了要輸出數(shù)據(jù)的寬度。若數(shù)據(jù)位數(shù)小于m則左端補(bǔ)空格,若數(shù)據(jù)位數(shù)大于m則按實(shí)際位數(shù)輸出。BCD5以下程序的執(zhí)行結(jié)果是。#include main()charc1,c2;scanf(%c%c,&c1,&c2);printf(c1=%c,c2=%c,c3=%d,c4=%d,c1+,-c2,c1,c2);【解答】運(yùn)行輸入:AB錮車運(yùn)行結(jié)果為:c1=A,c2=A,c3=65,c4=666以下程序的執(zhí)行結(jié)果是。#include main()charc1,c2;scanf(%c,%c,&c1,&c2);+c1;-c2;printf(c1=%c,c2=

19、%cn,c1,c2);【分析與提示】例如當(dāng)輸入B,C,B,C的ASCII碼值為66,67,執(zhí)行+ci;-c2;后,cl為66+1變成67即C,c2為67-1變成66即B。【解答】運(yùn)行輸入:B,C回車,運(yùn)行結(jié)果為:c1=C,c2=B7以下程序的執(zhí)行結(jié)果是。main()charch=a;inta=98;doubley=1.2345678;解答】Aprintf(1)a=%d,a=%c,ch=%d,ch=%cn,a,a,ch,ch);printf(2)b=%un,b);printf(3)c=%ldn,c);printf(4)x=%f,y=%fn,x,y);printf(5)x=%e,y=%en,x,y

20、); printf(6)y=%-10.2fn,y);解答】(1)a=98,a=b,ch=97,ch=a(2)b=1000(4)x=3.140000,y=1.234568(5)x=3.14000e+00,y=1.23457e+00(6)y=1.238以下程序的執(zhí)行結(jié)果是。#includemain()inta,b;floatx;scanf(%d,%d,&a,&b);x=a/b;printf(nx=%fn,x);【解答】運(yùn)行輸入:2,2,運(yùn)行結(jié)果為:1.0000009當(dāng)輸入12345,a時(shí),給出程序的運(yùn)行結(jié)果,執(zhí)行結(jié)果是#include main()inta;charc;scanf(

21、%3d,%c,&a,&c);printf(n%d,%dn,a,c);【分析與提示】md m指出了要輸出數(shù)據(jù)的寬度。若數(shù)據(jù)位數(shù)小于m則左端補(bǔ)空格,若數(shù)據(jù)位數(shù)大于m則按實(shí)際位數(shù)輸出。a的ASCII碼值是97?!窘獯稹?2345,9710分析下面程序, 在鍵盤上輸入數(shù)據(jù)才能使得變量a=10,b=20,c1=A,c2=a,x=1.5,y=-3.75,z=67.8。程序如下:#includemain()inta,b;floatx,y,z;charc1,c2;scanf(%5d%5d%c%c%f%f%*f,%f,&a,&b,&c1,&c2,&x,&a

22、mp;y,&z);printf(a=%d,b=%d,c1=%c,c2=%c,x=%f,y=%f,z=%f,a,b,c1, c2,x,y,z);【分析與提示】按%5d格式輸入a與b的值時(shí),要先鍵入三個(gè)空 格,然后再鍵入10與20%*f是用來(lái)禁止賦值的。在輸入時(shí),對(duì)應(yīng)%*f位置可以隨意輸入一個(gè)數(shù)(我們輸入1.5,該數(shù)不會(huì)賦值給任何變量 的)?!窘獯稹窟\(yùn)行輸入:10- 20Aa1.5 - -3.75 - 1.5,67.811一個(gè)程序中,使用了多個(gè)scanf函數(shù)輸入數(shù)據(jù),用a=3,b=7,x=8.5,y=71.82,c1二A,c2=a輸入到每個(gè)變量,應(yīng)該 如何輸入數(shù)據(jù)?main()inta,b

23、;floatx,y;charc1,c2;scanf(a=%d,b=%d,&a,&b);scanf(x=%f,y=%e,&x,&y); scanf(c1=%cc2=%c,&c1,&c2);printf(a=%d,b=%d,x=%f,y=%f,c1=%c,c2=%cn,a,b,x,y,c1 ,c2);【分析與提示】在使用多個(gè)scanf函數(shù)輸入數(shù)據(jù)時(shí),第一個(gè)輸入 行末尾輸入的回車被第二個(gè)scanf函數(shù)吸收,因此在第二、三個(gè)scanf函數(shù)的雙引號(hào)后放置一個(gè)空格以抵消上行輸入的回車鍵。 若沒(méi)有一個(gè) 空格,則按上面輸入的數(shù)據(jù)會(huì)出錯(cuò)?!窘獯稹窟\(yùn)行輸入:a=3,

24、b=4X=8,y=71.828= AC2=a0車 運(yùn)行結(jié)果:a=3,b=7,x=8.500000,y=71.820000,c1=A,c2=a四編程題1由鍵盤輸入1個(gè)字母,輸出其ASCII碼值?!痉治雠c提示】 將一個(gè)字符常數(shù)賦給一個(gè)字符變量, 并不是把該 字符本身放到內(nèi)存單元中去, 而是將該字符的ASCII代碼放到內(nèi)存單 元中,因此,字符型數(shù)據(jù)也可以像整型數(shù)據(jù)那樣使用,可以用來(lái)表示 一些特定范圍內(nèi)的整數(shù)。所以int型與char型變量的值可以互換, 分別用審壞同格式輸出就行了。但是注意這種轉(zhuǎn)換是有條件的。因?yàn)?,char變量在內(nèi)存占一個(gè) 字節(jié),而int整型變量占2個(gè)字節(jié)。當(dāng)int型高位字節(jié)是0時(shí),c

25、har與int可以互換;若不是0,則不可以互換。例如,用c格式輸出時(shí), 取低位字節(jié),高位字節(jié)被舍棄。參考代碼:#includestdio.hmain()charch;ch=getchar();printf(%c,%d,ch,ch);【解答】運(yùn)行輸入:B回車運(yùn)行結(jié)果:B,662從鍵盤上輸入一個(gè)大寫字母,把它轉(zhuǎn)換成小寫字母,然后顯 示出來(lái)?!痉治雠c提示】大寫字母轉(zhuǎn)換小寫時(shí)ASCII碼值+32,相反的, 小寫字母轉(zhuǎn)換成大寫字母時(shí)ASCII碼值-32。參考代碼:#includestdio.hmain()charx1,x2;printf(x1=n);scanf(%c,&x1);x2=x1+32;

26、printf(%c,%cn,x1,x2);【解答】運(yùn)行輸入:A回車運(yùn)行結(jié)果:A,a3從鍵盤上輸入兩個(gè)實(shí)型數(shù),求兩數(shù)的和、差、積,輸出結(jié)果時(shí)要求小數(shù)部分占兩位。提示】結(jié)果要求保留2位小數(shù),所以輸出的結(jié)果格式為%.2f main()floatx,y,a,b,c;printf(pleaseinputx,y:);scanf(%f,%f,&x,&y);a=x+y;b=x-y;c=x*y;printf(x=%f,y=%fn,x,y);printf(x+y=%.2fnx-y=%.2fnx*y=%.2fn,a,b,c);【解答】運(yùn)行輸入:pleaseinputx,y:10,20運(yùn)行結(jié)果:x=1

27、0.000000,y=20.000000 x+y=30.00 x-y=-10.00 x*y=200.004編寫一個(gè)程序, 求出給定半徑r的圓以及內(nèi)正n邊形的面積, 并且輸出計(jì)算結(jié)果。r和n的值由用戶輸入。【分析與提示】 由數(shù)學(xué)知識(shí)得到: 半徑為r圓的面積s r2,半徑 為r圓的內(nèi)接正n邊形的面積A nr2sin12,其中2/n處理步驟: 提示信息, 接收參數(shù)值;計(jì)算圓的面積;計(jì)算正n邊形的 面積;輸出結(jié)果。參考代碼:#in clude#include#definePI3.14main()intn;floatr,s,area;printf(PleaseinputtheradiusandtheN.

28、:n);scanf(%f%d,&r,&n);theC.te,eratureis:23.89s=PI*r*r;area=(n*r*r*sin(2*PI/n)/2.0;printf(S=%.2ftA=%.2fn,s,area);return(0);運(yùn)行結(jié)果如下:PleaseinouttheradiusandtheN.;15S=3.14 A=2.38 5已知華氏溫度與攝氏溫度之間的轉(zhuǎn)換公式是:c 5/9 (F32),編寫一個(gè)程序,將用戶輸入的華氏溫度轉(zhuǎn)換成攝氏溫度,并予以輸出。【分析與提示】 首先要定義輸入輸出溫度為浮點(diǎn)型, 且5/9兩數(shù) 相除結(jié)果為整數(shù),5/9的值為0,故不能寫成5

29、/9,而應(yīng)寫成(5.0/9.0)*(f-32)。結(jié)果要求保留2位小數(shù),所以輸出的結(jié)果格式 為5.2f。參考代碼:#includemain()intf;floatc;printf(npleaseinputtheF:);scanf(%d,&f);c=5.0/9*(f-32);/*不能寫成5/9,兩數(shù)相除結(jié)果為整數(shù),5/9的值 為0*/printf(theC.temperatureis:% . 2f,c);return(0);【解答】運(yùn)行結(jié)果如下:pleaseinputtheF:756由鍵盤輸入5個(gè)學(xué)生的計(jì)算機(jī)成績(jī),計(jì)算他們的平均分并保 留2位小數(shù)?!痉治雠c提示】方法與上題類似,同樣是保留兩

30、位有效數(shù)字6.2f。參考代碼:main()inta,b,c,d,e;floattotal,aver; printf(Pleseinput5studentsscores:n);scanf(%d,%d,%d,%d,%d,&a,&b,&c,&d,&e); total=a+b+c+d+e;aver=total/5.0;printf(Average:% 6 . 2 fn,aver);【解答】運(yùn)行輸入:80,93,75,68,87運(yùn)行結(jié)果:Average:80.607編寫將輸入的英里轉(zhuǎn)換為公里,每英里等于5380英尺,每英尺等于12英寸,每英寸等于2.54厘米,每公

31、里等于100000厘米。main()doublemile,k; printf(“entermile:”); scanf(“%lf”,&mile);k=mile*5380*12*2.54/100000; printf(“%lfmileis%lfkilometern”,mile,k);【解答】運(yùn)行:entermile:2/2.000000mileis3.279648kilometer第 4 章選擇結(jié)構(gòu)程序設(shè)計(jì)4.1習(xí)題一填空題1.已知a=3, b=4,c=5。則邏輯表達(dá)式a+bc&b=(的值為,?。╝b)&c|1的值為,!(a+b)+c-1&b+c/2的值為?!痉治?/p>

32、與提示】本題考查運(yùn)算符的優(yōu)先級(jí)別?!窘獯稹?;1; 1二、運(yùn)行程序?qū)懡Y(jié)果1.下列程序運(yùn)行的運(yùn)行結(jié)果為。#include main()inta=3,b=8,c=9,d=2,e=4;intmin;min=(ab)a:b;min=(minc)min:c;min=(mind)min:d;min=(mine)min:e;printf(Minis%dn,min);【分析與提示】 本題程序的功能為: 找出a,b,c,d,e中最小的值 并輸出。【解答】Minis22若輸入3,4,下列程序運(yùn)行的運(yùn)行結(jié)果為;若輸入4,3,下列程序運(yùn)行的運(yùn)行結(jié)果為。#includemain()inta,b,c;printf(Inp

33、uta,b:);scanf(%d,%d,&a,&b);if(a=b)c二a*b;printf(%d*%d=%dn a,b,c);elsec=a/b;printf(%d/%d=%dn,a,b,c);【分析與提示】本題程序的功能為:從鍵盤輸入變量a,b,計(jì)算c的值(若a=b,則c=a*b,若ab則c=a/b),并輸出a,b,c的值?!窘獯稹?/4=0;4*3=123下列程序運(yùn)行的運(yùn)行結(jié)果為。#includemain()intx=1,y=0,a=0,b=0;switch(x)case1:switch(y)caseO:a+;break;case1:b+;break;case2: a+;

34、b+;break;printf(a=%d,b=%dn,a,b);【分析與提示】本題中case1:后面是一個(gè)switch語(yǔ)句,執(zhí)行完 該語(yǔ)句后,直接執(zhí)行case2:后面的語(yǔ)句?!窘獯稹縜=2,b=1三編程題1輸入一個(gè)字母,若為小寫,則把它變成大寫輸出。【分析與提示】小寫字母的 ASCII 碼值與其對(duì)應(yīng)的大寫字母的 ASCII 碼值相差 32。參考代碼:main()charc;printf(請(qǐng)輸入一個(gè)字母n);scanf(%c,&c);if(c=a&c=z)c=c-32;printf(%cn,c);2企業(yè)發(fā)放的獎(jiǎng)金根據(jù)利潤(rùn)提成。利潤(rùn)(I)低于或等于10萬(wàn)元 時(shí),獎(jiǎng)金可提10%; 利

35、潤(rùn)高于10萬(wàn)元, 低于20萬(wàn)元時(shí), 低于10萬(wàn) 元的部分按10%提成,高于10萬(wàn)元的部分,可可提成7.5%;20萬(wàn)到40萬(wàn)之間時(shí),高于20萬(wàn)元的部分,可提成5%;40萬(wàn)到60萬(wàn)之間時(shí) 高于40萬(wàn)元的部分,可提成3%;60萬(wàn)到100萬(wàn)之間時(shí),高于60萬(wàn) 元的部分,可提成1.5%,高于100萬(wàn)元時(shí),超過(guò)100萬(wàn)元的部分按1%提成,從鍵盤輸入當(dāng)月利潤(rùn)I,求應(yīng)發(fā)放獎(jiǎng)金總數(shù)?【分析與提示】 請(qǐng)利用數(shù)軸來(lái)分界,定位。注意定義時(shí)需把獎(jiǎng)金定義成長(zhǎng)整型。參考代碼:main()longinti;intbonus1,bonus2,bonus4,bonus6,bonus10,bonus;scanf(%ld,&

36、i);bonus1=100000*0.1;bonus2=bonus1+100000*0.75;bonus4=bonus2+200000*0.5;bonus6=bonus4+200000*0.3; bonus10=bonus6+400000*0.15;if(i=100000)bonus=i*0.1;elseif(i=200000)bonus=bonus1+(i-100000)*0.075;elseif(i=400000)bonus=bonus2+(i-200000)*0.05;elseif(i=600000)bonus=bonus4+(i-400000)*0.03;elseif(i內(nèi)總是最大數(shù),

37、而min內(nèi)總是最小 數(shù)。最后輸出ma)和min的值即可。參考代碼:main ()in ta,b,c,max,mi n;sca nf(%d,%d,%d,&a,&b,&c);max=aba:b;max=maxcmax:c;min=aba:b;min=mi n cmi n:c;printf(最大值為:%d,最小值為:%dn,max,min);4.有一函數(shù):x(x1)y=2x-1(K x10)編一程序,輸入一個(gè)x值,輸出y值。【分析與提示】 本題考查if語(yǔ)句的嵌套, 應(yīng)當(dāng)注意if與else的配對(duì)關(guān) 系。從最內(nèi)層開(kāi)始,else總是與它上面最近的 (未曾配對(duì)的)if配對(duì)。參考代碼:

38、main()floatx,y;printf(請(qǐng)輸入x的值n);scanf(%f,&x);if(x=10)y=3*x-11;elsey=2*x-1;printf(x=%6.2f,y=%6.2f,x,y);5從鍵盤上輸入星期號(hào),并顯示該日期的英文名字。 【分析與提示】本實(shí)例知識(shí)點(diǎn):switch語(yǔ)句。switch語(yǔ)句的控制流程是: 首先計(jì)算表達(dá)式的值, 然后依次與每 一個(gè)case中的常量值進(jìn)行比較,一旦發(fā)現(xiàn)了某個(gè)能夠匹配的值,就 執(zhí)行該case后面的語(yǔ)句組,直到遇到break語(yǔ)句為止。如果表達(dá)式 的值與所有case中的常量都不匹配, 則執(zhí)行default后面的語(yǔ)句組。參考代碼:main()i

39、ntxqh;charywm;printf(”請(qǐng)輸入星期號(hào)(17):n);scanf(%d,&xqh);switch(xqh)case1:printf(Monday);break;case2:printf(Tuesday);break;case3:printf(Wednesday);break;case4:printf(Thursday);break;case5:printf(Friday);break;case6:printf(Saturday);break;case7:printf(Sunday);break;default:printf(error);6某市不同車牌的出租車3公里的

40、起步價(jià)和計(jì)費(fèi)分別為:夏利7元/公里,3公里以外2.1元/公里;富康8元/公里,3公里以外2.4元/公里;桑塔納9元,3公里以外2.7元/公里。編程:從鍵盤輸入 乘車的車型及行車公里數(shù),輸出應(yīng)付車資。【分析與提示】可設(shè)三個(gè)變量,分別表示乘車的車型、行車公里 數(shù)和應(yīng)付車資,根據(jù)乘車的車型和行車公里數(shù),計(jì)算出應(yīng)付的車資。參考代碼:main()intcx;/*定義乘車的車型變量cx*/floatgl,cf;/*定義行車公里數(shù)變量gl、應(yīng)付車資變量cf*/ printf(t1-夏利nt2-富康nt3-桑塔納n);printf(t請(qǐng)輸入車型(1-3):);scanf(%d,&cx);printf(

41、nt請(qǐng)輸入行車公里數(shù):);scanf(%f,&gl);switch(cx)case1:if(gl=3)cf=7.0; elsecf=7+(gl-3)*2.1;break;case2:if(gl=3)cf=8.0;elsecf=8+(gl-3)*2.4;break; case3:if(gl=3)cf=9.0;elsecf=9+(gl-3)*2.7;printf(應(yīng)付車資為%.1fn,cf);一、填空題7.給一個(gè)不多于5位的正整數(shù),要求:求出它是幾位數(shù);分別打 印出每一位數(shù)字;按逆序打印出各位數(shù)字。如原數(shù)為12345,貝卩逆序?yàn)?4321【分析與提示】本題的思路是:設(shè)5個(gè)變量,分別代表個(gè)位

42、、十位、百位、千位和萬(wàn)位。從個(gè)位起,依次將各個(gè)位取出來(lái),按取出的順序組合成新的數(shù)據(jù),并記錄當(dāng)前取出的數(shù)字的個(gè)數(shù)。參考代碼:#includestdio.h main()unsignedx,m,n=0,w=0;unsignedge=0,shi=0,bai=0,qian=0,wan=0;printf(請(qǐng)輸入一個(gè)正整數(shù));scanf(%u,&x);m=x;ge=m%10;m=m/10;w=1;n=ge;if(m)shi=m%10;m=m/10;w=2;n=n*10+shi;if(m) bai=m%10;m=m/10;w=3;n=n*10+bai;if(m) qian=m%10;m=m/10;w

43、=4;n=n*10+qian;if(m)wan=m;w=5;n=n*10+wan;prin tf(n%u為1位數(shù),n ,w); printf(n正整數(shù)的原序?yàn)椋?u,x);printf(n正整數(shù)的逆序?yàn)椋?u,n);注:當(dāng)該程序輸入一個(gè)較大的 5 位數(shù)時(shí), 輸出結(jié)果就不正確了, 思考為什么?動(dòng)手試一 下怎樣修改該程序。第 5 章循環(huán)結(jié)構(gòu)程序設(shè)計(jì)1.下面程序的功能是用“輾轉(zhuǎn)相除法”求兩個(gè)正整數(shù)的最大公約數(shù)。請(qǐng)?zhí)羁?in cludemain()intr,m n;scanf(%d%d &m &n);if(mr) (1);r=m% n;while(r)m=n;n二r;(2);print

44、f(%dn,n);【分析與提示】輾轉(zhuǎn)相除法:兩數(shù)相除,若不能整除,則以除數(shù) 作為被除數(shù),余數(shù)作為除數(shù),繼續(xù)相除,直到余數(shù)為0時(shí),當(dāng)前除數(shù)就是最大公約數(shù)?!窘獯稹?1)r=m;m=n;n二r;(2)r=m%n;二.運(yùn)行程序?qū)懡Y(jié)果1.下列程序運(yùn)行的運(yùn)行結(jié)果為。#in cludemain()in ty=10;doy-;while(-y);printf(%d,y-);【分析與提示】注意y-與y-的運(yùn)算順序。【解答】02下列程序運(yùn)行的運(yùn)行結(jié)果為。main()intx=3,y=6,z=2;while(x+!=(y-=1)z+=1;if(yx)break;printf(“%d,%d,%dn”,x,y,z);

45、【解答】4,5,33下列程序運(yùn)行的運(yùn)行結(jié)果為。main()inta=1,b=0;for(?;a3?;a+)switch(a+)case1:b-;case2:b+;case3:b+=3;break;printf(“%dn”,b);【解答】34下列程序運(yùn)行的運(yùn)行結(jié)果為main()intx=10,y=10,i;for(i=0;i2?;y=i+)printf(“%4d%4”d ,x -,y);【解答】101090三編程題1.求s=1+2+4+8+64的值。n項(xiàng)的值為第n-1項(xiàng)的值2倍。參考代碼:分析與提示】本題為數(shù)學(xué)項(xiàng)求和問(wèn)題,數(shù)學(xué)項(xiàng)間的關(guān)系為:第main()inti,s=0,t=1;while(t=

46、64)s=s+t;t=2*t;printf(s=%dn,s);2.求s=1 + 1/2+1/3+ 1/100的值?!痉治雠c提示】本題為分?jǐn)?shù)數(shù)學(xué)項(xiàng)求和問(wèn)題,要想得到每一項(xiàng) 的正確結(jié)果,分式中的分子、分母至少要有一個(gè)為實(shí)型數(shù)據(jù)。參考代碼:main()inti;floats=0,t;for(i=1;i=100;i+)t=1.0/i;s=s+t;printf(s=%.2fn,s);3.求T=1!+2!+3!+10!的值。【分析與提示】本題為數(shù)學(xué)項(xiàng)求和問(wèn)題,數(shù)學(xué)項(xiàng)間的關(guān)系為:第n項(xiàng)的值為第n-1項(xiàng)的n倍。參考代碼:main()longintt=0,tn=1;inti;for(i=1;i=10;i+)tn

47、=i*tn;t=t+tn;printf(t=%ld,t);4.求s=2/1+3/2+4/3+5/4+22/21的值?!痉治雠c提示】請(qǐng)抓住分子與分母的變化規(guī)律。參考代碼:main()intm;floats=0,n=2.0;for(m=1;m=a&c=A&c=0&c=9)digit+;elseother+;printf(”字母數(shù)=%d空格數(shù)=?%c數(shù)字?jǐn)?shù)=%c其它字符數(shù)=%dn,letters,space,digit,other);6.求100以內(nèi)能被8整除的數(shù),并求它們的和?!咎崾尽颗袛嘁粋€(gè)數(shù)m能否被n整除的方法是:將m對(duì)n取余數(shù),若余數(shù)為0,則為整除。參考代碼:main

48、()intn,s=0;for(n=1;n=100;n+)if(n%8=0)s=s+n;printf(%4d,n);printf(ns=%dn,s);7.打印出所有的“水仙花數(shù)”。所謂“水仙花數(shù)”是指一個(gè)三位 數(shù),其中各位數(shù)字的立方和等于該數(shù)本身。例如153=13+53+33?!痉治雠c提示】 利用for循環(huán)控制100999個(gè)數(shù), 每個(gè)數(shù)分解出 個(gè)位,十位,百位。參考代碼:main()inti,j,k,n;printf(水仙花數(shù)是:);for(n=100;n1000;n+)i=n/100;j=n/10-i*10;k=n%10;if(n=i*i*i+j*j*j+k*k*k) printf(%5d,n

49、);printf(n);8.以下面的格式,輸出九九乘法表1*1=11*2=22*2=41*3=32*3=63*3=91*9=92*9=183*9=279*9=81提示】分行與列考慮,共9行9列,利用雙重for循環(huán),外循環(huán)i控制行,內(nèi)循環(huán)j控制列。參考代碼:main()inti,j;for(i=1;i10;i+)for(j=1;j=i;j+)printf(%d*%d=%-4d,j,i,j*i);printf(n);9用for循環(huán)打印輸出以下圖案。*(圖形a)(圖形b)輸出圖形a程序代碼:#includestdio.hmain()inti,j,k;for(i=0;i4;i+)/*控制打印行數(shù)*/f

50、or(j=0;j10+i;j+)/*控制空格輸出位置*/ printf();for(k=0;k4;k+)/*控制每行*的輸出個(gè)數(shù)*/ printf(*);printf(n);輸出圖形b序代碼:#include“stdio.h”main()inti,j,k;for(i=0;i4;i+)/*控制打印行數(shù)*/for(j=0;j3-i;j+)/*控制空格輸出位置*/printf(“”);for(k=0;k0)x1=(x2+1)*2;x2=x1;day-;printf(桃子總數(shù)=%dn,x1);11.求出500以內(nèi)所有素?cái)?shù)?!咎崾尽颗袛嗨?cái)?shù)的方法:用一個(gè)數(shù)分別去除2到sqrt(這個(gè)數(shù)), 如果能被整除,

51、則表明此數(shù)不是素?cái)?shù),反之是素?cái)?shù)。參考代碼:#includemath.hmain()intm,k,i,n=0; for(m=2;m=500;m+)k=sqrt(m);for(i=2;i=k+1)printf(%-5d,m);n=n+1;if(n%10=0)printf(n);printf(n);12.輸入一個(gè)整數(shù)(099999),判斷它的位數(shù),并重新組合成同 樣位數(shù)的最大值。如,輸入1345,輸出5431。【提示】先求出該整數(shù)的位數(shù);其次分解出每一位數(shù)(個(gè)位、十 位、百位、千位、萬(wàn)位);接著將5個(gè)位數(shù)進(jìn)行排序;最后根據(jù)整數(shù) 的位數(shù)重新組合成同樣位數(shù)的最大值。參考代碼:main()longintn

52、um,t,d1,d2,d3,d4,d5,n;/*分別代表個(gè)位,十位,百 位,千位,萬(wàn)位和位數(shù)*/printf(請(qǐng)輸入一個(gè)整數(shù)(099999):); scanf(%ld,&num);if(num9999)n=5;elseif(num999)n=4;elseif(num99)n=3;elseif(num9)n=2;elsen=1;printf(n=%ldn,n);d5=num/10000;d4=(num-d5*10000)/1000; d3=(num-d5*10000-d4*1000)/100;d2=(num-d5*10000-d4*1000-d3*100)/10;d1=num-d5*10

53、000-d4*1000-d3*100-d2*10;if(d5d4)t=d5;d5=d4;d4=t;if(d5d3)t=d5;d5=d3;d3=t;if(d5d2)t=d5;d5=d2;d2=t;if(d5d1)t=d5;d5=d1;d1=t;if(d4d3)t=d4;d4=d3;d3=t;if(d4d2)t=d4;d4=d2;d2=t;if(d4d1)t=d4;d4=d1;d1=t;if(d3d2)t=d3;d3=d2;d2=t;if(d3d1)t=d3;d3=d1;d1=t;if(d2d1)t=d2;d2=d1;d1=t;switch(n)case5:num=d5*10000+d4*1000

54、+d3*100+d2*10+d1;break;case4:num=d5*1000+d4*100+d3*10+d2;break;case3:num=d5*100+d4*10+d3;break; case2:num=d5*10+d4;break;case1:num=d5;printf(重組后的數(shù)為:%ldn,num);13.求證100以內(nèi)哥德巴赫猜想是成立的。即:100以內(nèi)任何一個(gè) 大的偶數(shù)(大于等于6)都可以表示成兩個(gè)素?cái)?shù)之和【分析與提示】我們先不考慮怎樣判斷一個(gè)數(shù)是否為素?cái)?shù),而從整體上對(duì)這個(gè)問(wèn)題進(jìn)行考慮,可以這樣做:讀入一個(gè)偶數(shù)n將它分 成p和q,使n二P+C。怎樣分呢?可以令p從2開(kāi)始,每次加1,而 令4=門巾,如果p、q均為素?cái)?shù),則正為所求,否則再試。參考代碼:#include #include main()intj,n,p,q,flagp,flagq; printf(plea

溫馨提示

  • 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)論