版權(quán)說(shuō)明:本文檔由用戶(hù)提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
C語(yǔ)言程序設(shè)計(jì)第五版習(xí)
題答案
Lastrevisionon21December2020
習(xí)題解析與答案
第1章C語(yǔ)言概述
一.簡(jiǎn)答題
1.概述C語(yǔ)言的主要特點(diǎn)。
【解答】
⑴語(yǔ)言簡(jiǎn)潔、緊湊,使用方便、靈活。
⑵數(shù)據(jù)類(lèi)型豐富,表達(dá)能力強(qiáng)。
⑶運(yùn)算符多樣。C語(yǔ)言中的運(yùn)算符包含的范圍非常廣泛。
(4)具有結(jié)構(gòu)化的控制語(yǔ)句。如if,"else語(yǔ)句、whiIe語(yǔ)句、dowhile語(yǔ)句、
switch語(yǔ)句、for語(yǔ)句。
⑸允許直接訪問(wèn)物理地址。C語(yǔ)言中含有的位和指針運(yùn)算,能夠直接對(duì)內(nèi)存地址進(jìn)
行訪問(wèn)操作。
⑹所生成的目標(biāo)代碼質(zhì)量高,可移植性好。
2.構(gòu)成C語(yǔ)言程序的基本單位是什么它由哪幾部分組成
【解答】函數(shù)是構(gòu)成C語(yǔ)言程序的基本單位。一個(gè)完整的C程序一般由文件包含、
宏定義、函數(shù)說(shuō)明、變量和一個(gè)或若干個(gè)函數(shù)組成。
3.C語(yǔ)言程序的運(yùn)行一般要經(jīng)過(guò)哪幾個(gè)步驟
【解答】⑴編輯;⑵編譯;⑶連接,生成EXE文件;⑷執(zhí)行。
二.運(yùn)行程序?qū)懡Y(jié)果
1-輸入下面程序并運(yùn)行。
main()
(
intal,a2,x;
al=100;
a2=50;
x=aI-a2;
printf(r/x=%d\nM,x);
)
【解答】運(yùn)行結(jié)果為:x=5。
2.輸入下面程序并運(yùn)行。
main()intaha2,x;
al:10;
a2=20;
x=aI*a2;
printf("al=%d,a2=%d\n",al,a2);
printf("x=%d\n,r,x);
1
【解答】運(yùn)行結(jié)果為:al=10,a2=20x=200
3.輸入下面程序并運(yùn)行。
#include<>
main()
(
printf("******\n");
printf("*****\n");
printf("****\n");
printf("***\n");
printf("
printf("*\n");
)
【解答】運(yùn)行結(jié)果為:******
*****
思考:可以修改程序,使之輸出平行四邊形,等腰三角形等圖形。
三.編程題
1.參照本章例題,編寫(xiě)一個(gè)C程序,用于顯示如下信息:
********>k>k******
IloveCprograms!
*>k***********>k>k>k>k**
【分析與提示】
①要有文件包含語(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ō)明都包括在文件中。
②main是主函數(shù)的名稱(chēng)。用{}括起來(lái)的內(nèi)容是函數(shù)體,函數(shù)體由若干條語(yǔ)句組
成,這是計(jì)算機(jī)要執(zhí)行的部分,每條語(yǔ)句以分號(hào)“;”結(jié)束。
③注意顯示的信息有三行,所以要用到換行符“\n”。
參考代碼:
#include<>
main()
H
printf('*************************\n')printf(IloveCprograms!\n");
printf(''************************\n'))
第2章數(shù)據(jù)類(lèi)型及其運(yùn)算
一-簡(jiǎn)答題
1C語(yǔ)言中的數(shù)據(jù)類(lèi)型主要有哪幾類(lèi)
【解答】短整型(shortint)
「整型J整型(int)
長(zhǎng)整西(longintS
基本類(lèi)字字符型(cdr)單精度(float),
3型(浮點(diǎn)型)]J
雙精‘(double)I
出舉類(lèi)型(enum)<
4組類(lèi)型r
構(gòu)造類(lèi),結(jié)構(gòu)體類(lèi)目(struct)
少用體類(lèi)型(unLn)
指針類(lèi)在
I空類(lèi)型(void)
2.字符常量與字符串常量有什么區(qū)別
【解答】字符常量用單括號(hào)括起,字符串常量用雙括號(hào)括起;字符常量存儲(chǔ)時(shí)占1
個(gè)字節(jié),字符串常量存儲(chǔ)時(shí)除了n個(gè)字符外,還有系統(tǒng)加上的字符串終止符\。,所以字符
串常量存儲(chǔ)時(shí)占n+1個(gè)字節(jié)。
3.C語(yǔ)言中的常量包括哪幾類(lèi)各自是如何構(gòu)成的
【解答】C語(yǔ)言中的常量是一些其值預(yù)先定的量,并且在程序執(zhí)行過(guò)程中其值不再
發(fā)生變化。常量的分類(lèi)遵循基本數(shù)據(jù)類(lèi)型分類(lèi)原則,C語(yǔ)言編譯系統(tǒng)自動(dòng)將其存放在于類(lèi)
型相應(yīng)的內(nèi)存單元中。其類(lèi)別包含整形常量、浮點(diǎn)常量、字符常量、字符串常量和枚舉
常量。整形常量又分為十進(jìn)制整形常量、八進(jìn)制整形常量、十六進(jìn)制整形常量。浮點(diǎn)常
量分成十進(jìn)制形式和指數(shù)形式。C語(yǔ)言中的,字符常量是用單括號(hào)括起來(lái)的一個(gè)字符
或是字符序列,而字符串常量是用一對(duì)雙括號(hào)括起來(lái)的零個(gè)或者多個(gè)字符組成的序列。
4.簡(jiǎn)述指針、變量的指針、變量的值、指針變量與指針變量的值的含義是什么
【解答】C語(yǔ)言中將地址又稱(chēng)為“指針;一個(gè)變量所分配的內(nèi)存空間首字節(jié)地址,
稱(chēng)為該變量的指針(地址),變量的值就被放入所分配的地址單元中。地址一旦被分配,
就不會(huì)再改變,所以,指針是一個(gè)常量。既然是常量就可以把它賦給一個(gè)變量。用來(lái)存放
指針的變量,被稱(chēng)為指針變量。一個(gè)指針變量的值是變量的地址,一個(gè)指針變量可以被
賦予不同的指針值。
5.下面哪些是不合法的常量說(shuō)明不合法的理由。
123,,0892,Oxabc,,"Morning"【解答】非法常量有:
0892——含有非八進(jìn)制數(shù)字8和9
——非法指數(shù)形式浮點(diǎn)常量:規(guī)定e后面的指數(shù)必須為整數(shù)。
6.下面對(duì)變量定義的語(yǔ)句哪些不正確為什么請(qǐng)改正。
(1)charcLinta2;(2)INTa,b;FLOATx,y;(3)a.b:char:
(4)charif;(5)inta,b(6)Inta:b:c;
(7)inta,x;floatx,y;
【解答】
(1)charcLinta2;
錯(cuò)誤。定義不同類(lèi)型的變量時(shí),應(yīng)用分號(hào)彼此分開(kāi)。
改正為:charcl;inta2;
(2)INTa.b;FLOATx.y;
錯(cuò)誤。C語(yǔ)言中表示類(lèi)型名的關(guān)鍵字必須小寫(xiě)。
改正為:inta,b;floatx,y;
(3)a,b:char;
錯(cuò)誤。C語(yǔ)言中變量定義格式為:類(lèi)型名變量名;
改正為:chara.b:
(4)charif;
錯(cuò)誤。變量名不能與C語(yǔ)言的關(guān)鍵字重名。
改正為:charfl;
(5)inta,b
錯(cuò)誤。變量定義以語(yǔ)句形式出現(xiàn),應(yīng)以分號(hào)結(jié)尾。
改正為:inta,b;
(6)Inta:b:c;
錯(cuò)誤。類(lèi)型名不能有大寫(xiě)字母,相同類(lèi)型名之間用逗號(hào)分隔,
改正為:inta,b,c;
(7)inta,x;floatx,y;
錯(cuò)誤。在同一程序位置上,同一變量名不能重復(fù)定義充當(dāng)兩個(gè)不同的變量。
改正為:inta,x;floatxl,y;
7.下述字符串常量的長(zhǎng)度是多少在內(nèi)存中存儲(chǔ)時(shí)各自占用的單元數(shù)又是多少
11)“Hell。!"(2)“ABC\ii\\TH\C64V(3)u\xAB*V765+123="
【解答】
21)-Hello!”字符串長(zhǎng)度為6,占用內(nèi)存字節(jié)數(shù)為7。
32)“ABC\n\\TH\064\”字符串長(zhǎng)度為9,占用內(nèi)存字節(jié)數(shù)為10。因?yàn)槠渲衆(zhòng)n\\
\064\各自只占一個(gè)字符的位置。
43)“\xAB*\765+123二”該字符串不是合法的,因?yàn)閈765表示的值太大,超出合法
的ASCII字符集的范圍。
--運(yùn)行程序?qū)懡Y(jié)果
5.以下程序的執(zhí)行結(jié)果是main()
intij;
i=15;
printf("%d,%d”,;
J
【解答】14,15
6.以下程序的執(zhí)行結(jié)果是______o
main()
(
inta=20,b=10.c,*p1,*p2;
PI=&a;
p2二&b;
c=(-*p1)/(*p2)+6;
printf(na=%d,b=%d\n",a,b);
printfC+p1=%d,*p2=%d\n*\*p1,*p2);printfCc=%d\n\c);
)
【分析與提示】
pla
c=4
7.以下程序的執(zhí)行結(jié)果是
#incIudeo
main()
(
chara=,G,.b=,o',c=,o',d=,d';
a=a+32;
b=b-6:
c=c+3;
d=d+8;
printf("%c%c%c%c\n'\a.b.c.d);
)
【分析與提示】從ASCH代碼表可以看出,字符“G,、寸的ASCII代碼值
為71、111、101,因此,’G+32、,o-6、,o'+3、1d1+8的值分別是103、
105、114、108,它們所對(duì)應(yīng)的字符分別是I"、"V、匕"、T。
常用結(jié)論:
⑴在C語(yǔ)言中,字符數(shù)據(jù)可以按其ASCII代碼值參加整數(shù)運(yùn)算。由于英文字母
在ASCII代碼表中是按順序排列的,所以在計(jì)算,。~3代表的字母時(shí),可從字符,。,
其
順序向后取3個(gè)字母,該字母是匕”。
⑵從ASCII代碼表可以看出“小寫(xiě)字母”一對(duì)應(yīng)大寫(xiě)字母,的結(jié)果是32.因此可推
算出如下等式:大寫(xiě)字母的ASCII值+32二對(duì)應(yīng)小寫(xiě)字母的ASCH值;小寫(xiě)字母的ASCII
值-32二對(duì)應(yīng)大寫(xiě)字母的ASCII值。
【解答】girI
8.以下程序的執(zhí)行結(jié)果是o
#includeoniain(){intx;
x=-3+4*5-6;
printfCx1=%d\n",x);
x=3+4%5-6;
printf("x2=%d\n",x);
x=-3*4%-6;
printf("x3=%d\n",x);
)
【分析與提示】xl=ll分*5是20,-3+20是17,17-6等于11)
x2=l(4%5等于4,3+4等于7.7-6等于1)x3=0(-3*4等于-12,-12%-6
等于0)x2=lx3=0
9.以下程序的執(zhí)行結(jié)果是_____o
#inekideomain()(
printf("%d\n",NULL);
printf("%d,%c\n",49,49);
printf("%d,%c,%o\n",48+10,48+10,48+10);
)
【分析與提示】
0(NULL的ASCH碼值是0)
49,1(數(shù)字1的ASCII碼值是49)
58.1,72(48+10等于58,正好是“:”的ASCII碼值,八進(jìn)制表示是72)
【解答】。
49.1
58,:.72
三、改錯(cuò)題
1-請(qǐng)修改下列程序,使其能夠通過(guò)編譯。
#include<>
VoidMain()
(
inta=6;b=8;
intc;
c=a*b;
printfC%d\c);
)
【答案】錯(cuò)誤的地方有3處:⑴第2行關(guān)鍵字應(yīng)該小寫(xiě);⑵定義b時(shí)前面
應(yīng)該用逗號(hào);⑶打印語(yǔ)句的格式應(yīng)該用雙引號(hào)括起來(lái)。
正確的程序如下:
#incIude<>voidmain()inta=6,b=8;
intc;
c=a*b:
printf("%d",c);
1
2請(qǐng)修改下列程序,使其能夠正確運(yùn)行。
#inekide<>voidmain();
floatf=;
charc=,'c
printf("%c:c);
)
【答案】錯(cuò)誤的地方有3處:⑴第2行main。;不應(yīng)該有分號(hào);⑵定義
charc=,'c";
時(shí),字符常量應(yīng)該用單引號(hào):⑶打印語(yǔ)句printf("%d\n",int(f%3));的格式有
錯(cuò),應(yīng)該在f前的int用括號(hào)括起來(lái),因?yàn)閷?shí)型數(shù)據(jù)不能執(zhí)行取余運(yùn)算。
正確的程序如下:
#include<>voidmain()(floatf=;
charc=c*;
printf(^dXn",((int)f%3));
printfC*%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ǔ)句有哪幾類(lèi)表達(dá)式語(yǔ)句與表達(dá)式有什么不同
【解答】C語(yǔ)句可分為以下五類(lèi):表達(dá)式語(yǔ)句、函數(shù)調(diào)用語(yǔ)句、控制語(yǔ)句、復(fù)合語(yǔ)
句和空語(yǔ)句。其中表達(dá)式語(yǔ)句與表達(dá)式的區(qū)別在于表達(dá)式語(yǔ)句是表達(dá)式加上“二組成。
二、填空題
運(yùn)算符,%是指
2.C語(yǔ)言中的空語(yǔ)句就是
3.Scanf函數(shù)中的“格式字符”后面應(yīng)該是___________而不應(yīng)該是
4.若想輸出字符%,則應(yīng)該在“格式字符。的字符串中用表示。
5.intx=7:執(zhí)行x+=x-=x+x:后X的值是C
6.inta=10,b=20;a+=b;b=a-b;a-二b;的功能是
答案:1.地址、變量a的內(nèi)存地址。
2.一個(gè)分號(hào)。
3.變量地址,變量名。
4.連續(xù)2個(gè)%號(hào)。
5.-14
6.交換變量a,b的值,打印出a=20,b=10。
三.運(yùn)行程序?qū)懡Y(jié)果
1以下程序的執(zhí)行結(jié)果是。
#inekideoniain()fdoubled=:intx.y:x=:y=(x+/:
printf("%d\n';d*y);}
【解答】0
2.以下程序的執(zhí)行結(jié)果是o
main()(doubIed;fIoatf;IongI;inti;
i=f=l=d=20/3;
printf("%d%ld%f%An",i,I,f,d);)
【解答】66
3.以下程序的執(zhí)行結(jié)果是
main()
{
intk=17;
printf("%d,%o,%x\ii",k,k,k);
)
【解答】17,21,11
4.以下程序的執(zhí)行結(jié)果是,
#inekideomain(){
chara,b,c,d;
a='A,b=B,c=C;d='D;
printf("%lc\n",a);
printf("%2c\n",b);
printf("%3c\n",c);
printf("%4c\n",d);
)
【分析與提示】可以用%C格式輸出的,也可以用%€1格式輸出,所以與%md近
似,m指出了要輸出數(shù)據(jù)的寬度。若數(shù)據(jù)位數(shù)小于m,則左端補(bǔ)空格,若數(shù)據(jù)位數(shù)大于m,則
按實(shí)際位數(shù)輸出。
【解答】A
BCD
5.以下程序的執(zhí)行結(jié)果是
#incIudeomain(){
charcl,c2;
scanf('%c%c\&c1,&c2);
printf(ncl=%c,c2=%c,c3=%d,c4=%d',c1++,—c2,c19c2);
)
【解答】運(yùn)行輸入:AB〈回車(chē)〉
運(yùn)行結(jié)果為:c1=A,c2=A,c3=65,c4=66
6.以下程序的執(zhí)行結(jié)果是
#inekideomain()(
charcI.c2:
scanf("%c,%c\&c1,&c2);
++cl;
~c2;
printf(Hcl=%c,c2=%c\nH,c1,c2);
)
【分析與提示】例如當(dāng)輸入B,C<回車(chē)〉,B,C的AS析I碼值為66,67,執(zhí)行-
7;后,cl為66+1變成67即C,c2為67-1變成66即B。
【解答】運(yùn)行輸入:B,C〈回車(chē)),運(yùn)行結(jié)果為:cl=C,c2=B
7.以下程序的執(zhí)行結(jié)果是o
main()
(
charch=*a;inta=98;
doubley=;
printf(1(1)a=%d,a=%c,ch=%d,ch=%c\n\a,a,ch,ch);
printfC⑵b=%u\n';b);
printf("(3)c=%Id\nM,c);
printf(n(4)x=%f,y=%f\nH,x,y);
printf(n(5)x=%e,y=%e\n'\x,y);
printf(n(6)y=%\n\y);}
[解答](1)a=98,a=b,ch=97,ch=a
(2)b=l000(4)x=,y=(5)x=+00,y=+00(6)y=
8.以下程序的執(zhí)行結(jié)果是_______o
#inckide<>main()(inta,b;
floatx;
scanf(1,%d,%d",&a,&b);
x=a/b;
printfC\nx=%f\n",x);
1
【解答】運(yùn)行輸入:2,2〈回車(chē)〉,運(yùn)行結(jié)果為;
9.當(dāng)輸入123451a時(shí),給出程序的運(yùn)行結(jié)果,執(zhí)行結(jié)果是。
#inckide<>
main()
(
inta;charc;
scanf("%3d,%c",&a,&c);
printf(r\n%d,%d\n",a,c);
)
【分析與提示】%md,m指出了要輸出數(shù)據(jù)的寬度。若數(shù)據(jù)位數(shù)小于叫則左端補(bǔ)空
格,若數(shù)據(jù)位數(shù)大于rn,則按實(shí)際位數(shù)輸出。a的ASCII碼值是97。
【解答】12345.97
1C.分析下面程序,在鍵盤(pán)上輸入數(shù)據(jù)才能使得變量a=10.b=20.
cl='A',c2='a"x=,y=,z=o
程序如下:
#include<>
main()
inta,b;
floatx,y,z;
charcI,c2;
scanf("%5d%5d%c%c%f%f%*f,%f,,&a,&b,&cI,&c2,&x,&y,&z);
printfCa=%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è)空格,然后再鍵入
1。與2。。%*f是用來(lái)禁止賦值的。在輸入時(shí),對(duì)應(yīng)%*f位置可以隨意輸入一個(gè)數(shù)(我們輸
入,該數(shù)不會(huì)賦值給任何變量的)。
【解答】運(yùn)行輸入:一〈回車(chē)》
11.一個(gè)程序中,使用了多個(gè)scanf函數(shù)輸入數(shù)據(jù),用a=3,b=7,x=,y=,cl=,A\c2=W
輸入到每個(gè)變量,應(yīng)該如何輸入數(shù)據(jù)
inta,b;
floatx,y;
charcI.c2;
scanf(a=%d,b=%d,&a,&b);
scanf(Hx=%f,y=%e",&x,&y);
scanf(Hcl=%cc2=%c,\&c1,&c2);
printf(Ha=%d,b=%dx=%f,y=%f,c1=%c,c2=%c\n",a,b,x,y,c1,c2);
)
【分析與提示】在使用多個(gè)scanf函數(shù)輸入數(shù)據(jù)時(shí),第一個(gè)輸入行末尾輸入的回車(chē)
被第二個(gè)scanf函數(shù)吸收,因此在第二、三個(gè)scanf函數(shù)的雙引號(hào)后放置一個(gè)空格以抵消
上行輸入的回車(chē)鍵。若沒(méi)有一個(gè)空格,則按上面輸入的數(shù)據(jù)會(huì)出錯(cuò)。
【解答】運(yùn)行輸入:a=3,b=4V回車(chē)〉
X=8,y*回車(chē)〉
CI=AC2=a<回車(chē)>
15彳丁結(jié)果:a=3,b-7,x=,y,cl-A,c2-a
四.編程題
1.由鍵盤(pán)輸入1個(gè)字母,輸出其ASCII碼值。
【分析與提示】將一個(gè)字符常數(shù)賦給一個(gè)字符變量,并不是把該字符本身放到內(nèi)存
單元中去,而是將該字符的ASCII代碼放到內(nèi)存單元中,因此,字符型數(shù)據(jù)也可以像整型
數(shù)據(jù)那樣使用,可以用來(lái)表示一些特定范圍內(nèi)的整數(shù)。所以依型與char型變量的值可
以互換,分別用枇和洞不同格式輸出就行了。
但是注意這種轉(zhuǎn)換是有條件的。因?yàn)?,char變量在內(nèi)存占一個(gè)字節(jié),而int整型
變量占2個(gè)字節(jié)。當(dāng)int型高位字節(jié)是。時(shí),char與int可以互換;若不是。,則不可以互
換。例如,用心格式輸出時(shí),取低位字節(jié),高位字節(jié)被舍棄。
參考代碼:
#incIudc
charch;
ch=getchar();
printf("%c,%d",ch.ch);
)
【解答】運(yùn)行輸入:B〈回車(chē)〉
運(yùn)行結(jié)果:B,66
2.從鍵盤(pán)上輸入一個(gè)大寫(xiě)字母,把它轉(zhuǎn)換成小寫(xiě)字母,然后顯示出來(lái)。
【分析與提示】大寫(xiě)字母轉(zhuǎn)換小寫(xiě)時(shí)ASCII碼值+32,相反的,小寫(xiě)字母轉(zhuǎn)換成大
寫(xiě)字母時(shí)ASCII碼值-32。
參考代碼:
#include<>main()
f
charxI,x2;
printfCxU'n,;
scanf("%cH,&xl);
x2=xl+32;
printf(n%c,%c\nH,x1,x2);)
【解答】運(yùn)行輸入:A〈回車(chē)》
運(yùn)行結(jié)果:A,a
3.從鍵盤(pán)上輸入兩個(gè)實(shí)型數(shù),求兩數(shù)的和、差、積,輸出結(jié)果時(shí)要求小數(shù)部分占兩位。
【提示】結(jié)果要求保留2位小數(shù),所以輸出的結(jié)果格式為%.2九
main()(
floatx,y,a,b.c;
printfCpleaseinputx,y:;
$canf("%f,%f",&x,&y);
a=x+y;
b=x-y;
c=x*y:
nn
printf(x=%f,y=%f\n,x5y);
printf(Hx+y=%.2f\nx-y=%.2f\nx*y=%.2f\n\a.b,c);
【解答】
運(yùn)行輸入:pleaseinputx,y:10,20V回車(chē)〉
運(yùn)行結(jié)果:x=,y=
x+y=x-y=x*y=
4.編寫(xiě)一個(gè)程序,求出給定半徑r的圓以及內(nèi)正n邊形的面積,并且輸出計(jì)算結(jié)
果。r和n的值由用戶(hù)輸入。
【分析與提示】由數(shù)學(xué)知識(shí)得到:半徑為r圓的面積5二加[半徑為r圓的內(nèi)接正
n邊形的面積4二”飛心々/2,其中。=21/〃
處理步驟:提示信息,接收參數(shù)值;計(jì)算圓的面積;計(jì)算正n邊形的面積;輸出
結(jié)果。
參考代碼:
#inckideo
#inekideo
#definePI
niain()
(
intn;
floatr,s.area;
printf(uPleaseinputtheradiusandthe
scant("%f%d",&rt&n);
s=PI*r*r;
area=(n*r*r*sin(2*Pl/n))/;
printf(nS=%.2f\tA=%.2f\n\s,area);
return(0);
)
運(yùn)行結(jié)果如下:
PleaseinouttheradiusandtheN.;
15
S=A=
5.已知華氏溫度與攝氏溫度之間的轉(zhuǎn)換公式是:c=5/9x(F-32),編寫(xiě)一個(gè)程序,將
用戶(hù)輸入的華氏溫度轉(zhuǎn)換成攝氏溫度,并予以輸出。
【分析與提示】首先要定義輸入輸出溫度為浮點(diǎn)型,且5/9兩數(shù)相除結(jié)果為整數(shù),
5/9的值為0,故不能寫(xiě)成5/9,而應(yīng)寫(xiě)成*(932)。結(jié)果要求保留2位小數(shù),所以輸出的結(jié)果
格式為%。
參考代碼:
#include<>
niain()
(
intf;
floatc;
printf(n\npleaseinputtheF:n);
scanf("%d'\&f);
c=9*(f-32);〃不能寫(xiě)成5/9,兩數(shù)相除結(jié)果為整數(shù),5/9的值為0*/
printfCtheis:%.2f\c);
return(0);
)
【解答】運(yùn)行結(jié)果如下:
pleaseinputtheF:75〈回車(chē)〉
the,[eratureis:
6.由鍵盤(pán)輸入5個(gè)學(xué)生的計(jì)算機(jī)成績(jī),計(jì)算他們的平均分并保留2位小數(shù)。
【分析與提示】方法與上題類(lèi)似,同樣是保留兩位有效數(shù)字%。
參考代碼:
main()
(
inta,b,c,d,e;
floattotaLaver;
printf(Pleseinput5students'scores:\nH);
scanf("%d,%d,%d,%d,%d",&a,&b,&c,&d,&e);
totaI=a+b+c+d+e;
aver-totaI/;
printf("Average:%\iV\aver);
【解答】運(yùn)行輸入:80,93,75,68.87〈回車(chē))
運(yùn)彳丁結(jié)果:Average:
7.編寫(xiě)將輸入的英里轉(zhuǎn)換為公里,每英里等于538。英尺,每英尺等于12英
寸,每英寸等于2.54厘米,每公里等于10。00。厘米。
main()
(
doubIemiIe,k;
priiitfCenter
scanf(u%lf\&miIe):
k=mile*5380*12*100000;
print*"%lfmiIeis%lfkilometerNn'\mile*k);
)
【解答】運(yùn)行:entermile:2/
miIeiskilometer
第4章選擇結(jié)構(gòu)程序設(shè)計(jì)
習(xí)題
1.已知a=3,b=4,c=5。則邏輯表達(dá)式a+b>c&&b==c的值為
(a>b)&&clII的值為,!(a+b)+c-l&&b+c/2的值為。
【分析與提示】本題考查運(yùn)算符的優(yōu)先級(jí)別。
【解答】0:1:1
二、運(yùn)行程序?qū)懡Y(jié)果
L下列程序運(yùn)行的運(yùn)行結(jié)果為。
#inekideo
main()
inta=3,b=8,c=9,d=2,e=4;
intmin;
min=(a<b)a:b;
min=(min<c)minic;
min=(min<d)min:d;
min=(min<e)mime;
printf("Minis%d\n",min);
)
【分析與提示】本題程序的功能為:找出a,b,c,d,e中最小的值并輸出。
【解答】Minis2
2.若輸入3.4〈回車(chē)),下列程序運(yùn)行的運(yùn)行結(jié)果為;若輸入4.3〈回車(chē)》,下列
程序運(yùn)行的運(yùn)行結(jié)果為0
#inckide<>
main()
(
irta,b,c;
printf("Inputa.b:");
ecanf("%d,%d",ab);
if(a>=b)
{c=a*b;printf(,%d*%d=%d\n"ja,b,c);}
eIse
{c=a/b;printf("%d/%d=%d\n'\a,b,c);}
)
【分析與提示】本題程序的功能為:從鍵盤(pán)輸入變量a.b,計(jì)算c的值(若a>王則
c-a*b,若a<b貝ljc-a/b),并輸出a.b.c的值。
【解答】3/4=0;4*3=12
3.下列程序運(yùn)行的運(yùn)行結(jié)果為。
#inekideo
main()
(
intx=l,y=0,a=0?b=0;
switch(x)
(
case1:
swtch(y)
{case0:a++;break;
case1:b++;break;
)
case2:a++;b++;break;
)
printf("a=%d,b=%d\n",a.b);
)
【分析與提示】本題中easel:后面是一個(gè)switch語(yǔ)句,執(zhí)行完該語(yǔ)句后,直接執(zhí)行
case2:后面的語(yǔ)句。
【角翠答】a=2tb=l
三.編程題
1.輸入一個(gè)字母,若為小寫(xiě),則把它變成大寫(xiě)輸出。
【分析與提示】小寫(xiě)字母的ASCII碼值與其對(duì)應(yīng)的大寫(xiě)字母的ASCII碼值相差32。
參考代碼:
main()
charc;
printf("請(qǐng)輸入一個(gè)字母、n");
scanf(n%c\&c);
if(c>=,a'&&cv='z')
c=c-32;
printf("%c\n",c):)
2.企業(yè)發(fā)放的獎(jiǎng)金根據(jù)利潤(rùn)提成。利潤(rùn)⑴低于或等于1。萬(wàn)元時(shí),獎(jiǎng)金可提
10%;利潤(rùn)高于10萬(wàn)元,低于20萬(wàn)元時(shí),低于10萬(wàn)元的部分按10節(jié)提成,高于10萬(wàn)元的
部分,可可提成舟;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。0萬(wàn)元時(shí),超過(guò)1。。萬(wàn)元的部分按居提成,從鍵盤(pán)輸入當(dāng)月利潤(rùn)
I,求應(yīng)發(fā)放獎(jiǎng)金總數(shù)
【分析與提示】請(qǐng)利用數(shù)軸來(lái)分界,定位。注意定義時(shí)需把獎(jiǎng)金定義成長(zhǎng)整型。
參考代碼:
main()
{
longinti;
intbonusI,bonus2,bonus4,bonus6,bonusIO,bonus;
snanf(〃/1d〃,&i);
bonusI=100000*;bonus2=bonusI+100000*;
bonus4=bonus2+200000*;
bonus6=bonus4+200000*;
bonus10=bonus6+400000*;
if(i<=100000)
bonus=i*;
elseif(i<=200000)
bonus二bonusl+(i-100000)*;
elseif(i<=400000)
bonus=bonus2+(i-200000)*;
elseif(i<=600000)
bonus=bonus4+(i-400000)*;
elseif(i<=1000000)
bonus=bonus6+(i-600000)*;
else
bonus=bonus10+(i-1000000)*;
printf("bonus-%d”,bonus);
)
3.由鍵盤(pán)輸入三個(gè)整數(shù)a、b、c.用條件運(yùn)算符求出其中最大值和最小值。
【分析與提示】首先比較輸入的a,b的大小,并把大數(shù)裝入sax,小數(shù)裝入min中,然
后再與c比較,若max小于c,則把c賦予max;如果c小于min,則把c賦予min?因此max內(nèi)
總是最大數(shù),而min內(nèi)總是最小數(shù)。最后輸出max和min的值即可c
參考代碼:
main()
inta.b,c,max.min;
scanf(*d,$d,$d,&a.&b.&c);
max=a>ba:b;
niax=max>cmax:c;
min=a<ba:b;
min=min<cmin:c;
printf("最大值為:%d,最小值為:%d\n”,max.min);
)
4.有一函數(shù):
Xf(x<l)
y=2x-l(IWx<10)
3x-lI(xNIO)
編一程序,輸入一個(gè)x值,輸出y值。
【分析與提示】本題考查if語(yǔ)句的嵌套,應(yīng)當(dāng)注意if與else的配對(duì)關(guān)系。從最內(nèi)層開(kāi)
始,else總是與它上面最近的(未曾配對(duì)的)if配對(duì)。
參考代碼:
main。(floatx,y;printfC請(qǐng)輸入x的值\rT);scanf(*f;&x);
if(x<l)y=x;
eIse
if(x>=10)y=3*x-l1;
eIsey=2*x-l;
printf("x=%,y=%v,x,y);
I
5.從鍵盤(pán)上輸入星期號(hào),并顯示該日期的英文名字。
【分析與提示】本實(shí)例知識(shí)點(diǎn):switch語(yǔ)句。
switch語(yǔ)句的控制流程是:首先計(jì)算表達(dá)式的值,然后依次與每一個(gè)case中的常量值
進(jìn)行比較,一旦發(fā)現(xiàn)了某個(gè)能夠匹配的值,就執(zhí)行該case后面的語(yǔ)句組,直到遇至IJbreak
語(yǔ)句為止。如果表達(dá)式的值與所有case中的常量都不匹配,則執(zhí)行default后面的語(yǔ)句組。
參考代碼:
man()
intxqh;
charywm;
printf("請(qǐng)輸入星期號(hào)(1-7):\n");
scanf(n%dM,&xqh);
swtch(xqh)
{case1:printf(Monday,1);break;
case2:printf(HTuesdayw);break;
case3:printf('<WednesdayM);break;
case4:printf(HThursdayH);break;
case5:printf(HFridayH);break;
case6:printf("Saturday1*);break:
case7:printf("Sunday,;break;
default:printf(“error");
)
)
6.某市不同車(chē)牌的出租車(chē)3公里的起步價(jià)和計(jì)費(fèi)分別為:夏利7元/公里,3公里以
外元/公里;富康8元/公里,3公里以外元/公里;桑塔納9元,3公里以外元/公里。編
程:從鍵盤(pán)輸入乘車(chē)的車(chē)型及行車(chē)公里數(shù),輸出應(yīng)付車(chē)資。
【分析與提示】可設(shè)三個(gè)變量,分別表示乘車(chē)的車(chē)型、行車(chē)公里數(shù)和應(yīng)付車(chē)資,
根據(jù)乘車(chē)的車(chē)型和行車(chē)公里數(shù),計(jì)算出應(yīng)付的車(chē)資。
參考代碼:
main()
(
intex;/*定義乘車(chē)的車(chē)型變量ex*/
floatgl,cf;/*定義行車(chē)公里數(shù)變量gl、應(yīng)付車(chē)資變量cf*/
夏利\n\t2-富康\n\t3-桑塔納\n");
printf(%請(qǐng)輸入車(chē)型(1-3)scanf("%d",&cx);
printf("\n\t請(qǐng)輸入行車(chē)公里數(shù):”);
scanf("%f',&gl);
switch(ex)
{case1:if(gI<=3)cf=;
eIsecf=7+(gl-3)*;break;
case2:if(gI<=3)cf=:
eIsecf=8+(gI-3)*;break;
case3:if(gI<=3)cf=;
eIsecf=9+(g1-3)*;
)
printf(M應(yīng)付車(chē)資為%.1
)
7.給一個(gè)不多于5位的正整數(shù),要求:①求出它是幾位數(shù);②分別打印出每一位數(shù)字;
③按逆序打印出各位數(shù)字。如原數(shù)為12345.則逆序?yàn)?4321。
【分析與提示】本題的思路是:設(shè)5個(gè)變量,分別代表個(gè)位、十位、百位、千位
和萬(wàn)位。從個(gè)位起,依次將各個(gè)位取出來(lái),按取出的順序組合成新的數(shù)據(jù),并記錄當(dāng)前取
出的數(shù)字的個(gè)數(shù)。
參考代碼:
incIudemain()(
unsignedx,m,n=0,w=0;
unsignedge=05shi=0,bai=0.qian=0,wan=0;
“intf(“請(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=ni/10;w=4;n=n*10+qian;
if(m)
{wan=m;w=5;n=n*10+wan;J
)
)
)
printf(H\n%u為%11位數(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í)羁铡?/p>
#inckide<>
mail()
intr,m.n;
scanf('%d%dni&m,&n);
if(m<n)(1);
r=m^n;
while(r){m=n;n=r;;)
printf("%d\n",n);
)
【分析與提示】輾轉(zhuǎn)相除法:兩數(shù)相除,若不能整除,則以除數(shù)作為被除數(shù),余
數(shù)作為除數(shù),繼續(xù)相除,直到余數(shù)為。時(shí),當(dāng)前除數(shù)就是最大公約數(shù)。
【解答】(I)r=m;m=n;n=r;(2)r=m%n;
二,運(yùn)行程序?qū)懡Y(jié)果
1.下列程序運(yùn)行的運(yùn)行結(jié)果為0
#inekideo
n)ain()
(
inty=10;
do
{y—;
}wniIe(-y);
printf("%d?y-);
【分析與提示】注意丫~與丫一的運(yùn)算順序。
【解答】0
2.下列程序運(yùn)行的運(yùn)行結(jié)果為。
main()
(
intx=3,y=6,z=2:
while(x++!=(y-=l))
(
z+=l;
if(y<x)
break;
priiitfC%d,%d,%d\ir\x,y.z);
)
1
【解答】4,5,3
3.下列程序運(yùn)行的運(yùn)行結(jié)果為.
main()
(
inta=Lb=O;
for(;a<3;a++)
switch(a++)
(
caseI:b—:
case2:b++;
case3:b+=3;break;
1
printf(u%d\nn,b);
)
【解答】3
4.下列程序運(yùn)行的運(yùn)行結(jié)果為。
main()intx=10,y=10J;
for(i=0:i<2;y=i++)priiitf(%4dMeI,x-y);
)
【解答】101090
三.編程題
1,求s=I+2+4+8+-+64的值c
【分析與提示】本題為數(shù)學(xué)項(xiàng)求和問(wèn)題,數(shù)學(xué)項(xiàng)間的關(guān)系為:第n項(xiàng)的值為第n-1
項(xiàng)的值2倍。參考代碼:
main。
(
inti,s=05t=I;
whiIe(t<=64)
Is=s+t;
t=2*t;
)
printf(Hs=%d\n*\s);
)
2.求s=l+l/2+l/3+-+l/100的值。
【分析與提示】本題為分?jǐn)?shù)數(shù)學(xué)項(xiàng)求和問(wèn)題,要想得到每一項(xiàng)的正確結(jié)果,分式
中的分子、分母至少要有一個(gè)為實(shí)型數(shù)據(jù)。
參考代碼:
main()
(inti;
floats=0,t;
for(i=l;i<=100;i++)
{t=i;
s=s+t;
)
printf("s=%.2f\n",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=l;
inti;
for(i=l;i<=10;i++)
{tn=i*tn;
t=t+tn;
)
printfCt=%ld",t);
)
4.求s=2/1+3/2+4/3+5/44—+22/21的值。
【分析與提示】請(qǐng)抓住分子與分母的變化規(guī)律。
參考代碼:
main()
(
intm;
floats=0,n=;
for(m=l;m<=2I;m++)
{s=s+ii/m;
n=n+1;
)
printf("s=%.2fui",s);
)
5.輸入一行字母,分別統(tǒng)計(jì)其中的英文字母、空格、數(shù)字和其他字符的個(gè)數(shù)。
【分析與提示】利用while語(yǔ)句,條件為輸入的字符不為.
參考代碼:
include
main()
(
charc;
intletters=0,space=0,digit=0,other=0:
Printf("請(qǐng)輸入一行字符:\n");
whiIe((c=getchar())!=\n)
(if(c>=a&&c<=zllc>=A&&c<=Z)letters++;
elseif(c=')space++;
elseif(c>-0&&c<=9)digit++;
eIseother++;
1
printf(“字母數(shù)<d空格數(shù);*d數(shù)字?jǐn)?shù)=%d其它字符數(shù)二%d\n”,letters,space,digit,other);)
6.求100以?xún)?nèi)能被8整除的數(shù),并求它們的和。
【提示】判斷一個(gè)數(shù)m能否被n整除的方法是:將m對(duì)n取余數(shù),若余數(shù)為。,
則為整除。
參考代碼:
main。
(
intn,s=0;
for(n=1;n<=100;n++)
if(r%8==0)
|s=s+n;
printf("
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
- 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ì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 工作總結(jié)之法院實(shí)習(xí)自我總結(jié)
- 2024年兩性健康項(xiàng)目投資申請(qǐng)報(bào)告
- 國(guó)家開(kāi)放大學(xué)《教育心理學(xué)》形考作業(yè)1-4答案
- 個(gè)人升職報(bào)告-文書(shū)模板
- 銀行合規(guī)管理制度實(shí)施優(yōu)化
- 酒店餐飲服務(wù)操作規(guī)范制度
- 2024年中國(guó)工業(yè)涂料行業(yè)市場(chǎng)現(xiàn)狀及發(fā)展趨勢(shì)分析
- 《讓心靈去旅行》課件
- 《郵政營(yíng)業(yè)服務(wù)規(guī)范》課件
- 吉林省長(zhǎng)春市朝陽(yáng)區(qū)2024屆九年級(jí)上學(xué)期期末質(zhì)量監(jiān)測(cè)數(shù)學(xué)試卷(含解析)
- 旅游地理學(xué)發(fā)展簡(jiǎn)史
- 常見(jiàn)鵝病診斷和防治
- 鉆孔灌注樁施工危險(xiǎn)源識(shí)別及防控措施
- 藍(lán)色企業(yè)發(fā)展歷程時(shí)間軸PPT模板課件
- 新《行政處罰法》修訂對(duì)比解讀PPT課件
- 水電站課程設(shè)計(jì) 40
- 籃球社團(tuán)活動(dòng)記錄表
- 酒精發(fā)酵相關(guān)化驗(yàn)指標(biāo)測(cè)定
- LED基礎(chǔ)知識(shí)及外延工藝
- 混凝土強(qiáng)度檢驗(yàn)評(píng)定基礎(chǔ)知識(shí)、步驟及實(shí)例
- 金屬蛇管的安裝與應(yīng)用環(huán)境
評(píng)論
0/150
提交評(píng)論