《C++程序設(shè)計(jì)教程》課后習(xí)題答案_第1頁
《C++程序設(shè)計(jì)教程》課后習(xí)題答案_第2頁
《C++程序設(shè)計(jì)教程》課后習(xí)題答案_第3頁
《C++程序設(shè)計(jì)教程》課后習(xí)題答案_第4頁
《C++程序設(shè)計(jì)教程》課后習(xí)題答案_第5頁
已閱讀5頁,還剩98頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

第1章C++及其開發(fā)環(huán)境概述

一、問答題

1.結(jié)構(gòu)化程序設(shè)計(jì)主要有哪些劣勢(shì)?

【答案】

(1)程序的開發(fā)效率低下

(2)程序的可重用性差

(3)程序的維護(hù)成本高

(4)無法適應(yīng)信息的快速膨脹和多樣化

2.面向?qū)ο蟮某绦蛟O(shè)計(jì)有哪些優(yōu)點(diǎn)?

【答案】

(1)程序的開發(fā)效率高

(2)程序代碼的可重用性高

(3)程序易于維護(hù)

3.C++的發(fā)展經(jīng)歷了哪些階段?

【答案】

C++語言起源于C語言。1980年初期,美國貝爾實(shí)驗(yàn)室的BjarneStroustrup博士及其同

事在C語言的基礎(chǔ)上,從Simula67中引入面向?qū)ο蟮奶卣?,開發(fā)出一種過程性與對(duì)象性相

結(jié)合的程序設(shè)計(jì)語言,最初稱為“帶類的C”,1983年正式取名為C++。

后來,Strou.trup和他的同事陸續(xù)將運(yùn)算符重載、繼承、虛函數(shù)等特性引入C++,1989

年后推出AT&TC++2.0版,并經(jīng)過多次改進(jìn)和完善,發(fā)展成為現(xiàn)在的C++。

4.C++主要有哪些特點(diǎn)?

【答案】

(1)C++可以被看成C語言的一個(gè)超集,是對(duì)C的增強(qiáng)和擴(kuò)展。因此,許多C代碼可

以不經(jīng)修改即可為C++所用。自然,也可以利用C++開發(fā)環(huán)境來開發(fā)C程序。

(2)C++幾乎支持所有面向?qū)ο蟮某绦蛟O(shè)計(jì)特征,因此,利用C++不僅可以進(jìn)行傳統(tǒng)的

結(jié)構(gòu)化程序設(shè)計(jì),而且可以較好地進(jìn)行面向?qū)ο蟮某绦蜷_發(fā)。

(3)C++很好地保持了C的簡(jiǎn)潔、高效、靈活和接近匯編語言的特點(diǎn),因此,C++程序

的執(zhí)行效率也很高。

5.一個(gè)C++程序一般由哪幾部分構(gòu)成?

【答案】

①預(yù)處理命令。C++提供了三種預(yù)處理命令,即宏定義命令、文件包含命令和條件編譯

命令。

②全局聲明部分。此部分內(nèi)容通常會(huì)給出用戶自定義的數(shù)據(jù)類型聲明,以及程序中所

涉及變量的定義,例如類的聲明。

懣品公產(chǎn)條月幺君二新堀結(jié)構(gòu)

③函數(shù)。一個(gè)程序中可包含一個(gè)或多個(gè)函數(shù),它們是執(zhí)行用戶指定操作的主要部分。

6.使用VisualC++開發(fā)C++程序時(shí)一般要經(jīng)過哪幾個(gè)步驟?每個(gè)步驟的作用是什么?

相應(yīng)地產(chǎn)生哪些文件?

【答案】

(1)編寫程序

C++是一種高級(jí)語言,所以用其編寫的程序稱為“源程序”,以.cpp做為后綴。我們可以

利用VisualC++、TurboC++等編譯軟件來編寫C++源程序。

(2)編譯程序

計(jì)算機(jī)不能識(shí)別高級(jí)語言,為了將源程序翻譯成計(jì)算機(jī)可識(shí)別的二進(jìn)制指令,需將源程

序進(jìn)行編譯,編譯之后的文件稱作“目標(biāo)文件”,以.obj作為后綴。編譯時(shí)以每個(gè)源程序單元

為單位,每一個(gè)源程序文件編譯成一個(gè)目標(biāo)文件。因此,如果一個(gè)工程中有多個(gè)源程序單元,

系統(tǒng)會(huì)分別將其編譯成多個(gè)目標(biāo)文件。

另外,編譯時(shí)系統(tǒng)會(huì)自動(dòng)進(jìn)行錯(cuò)誤檢查,一旦檢查出有錯(cuò)誤,便不會(huì)生成目標(biāo)文件,需

改正后重新編譯。

(3)連接目標(biāo)文件

一個(gè)程序中可能會(huì)包含很多文件,編譯后會(huì)生成很多獨(dú)立的目標(biāo)文件,此時(shí)系統(tǒng)的“連

接程序”將這些目標(biāo)文件和庫文件以及系統(tǒng)提供的其他信息連接起來,形成二進(jìn)制可執(zhí)行文

件,以.exe為后綴。

(4)運(yùn)行程序

運(yùn)行二進(jìn)制可執(zhí)行文件,得到運(yùn)行結(jié)果。如運(yùn)行結(jié)果不正確,則需修改源文件,之后重

新編譯運(yùn)行。

二、分析運(yùn)行結(jié)果

1.

#include<iostream>

usingnamespacestd;

intmain()

{

cout?"MyM?"sisterR;

cout?Mis"?Ha

cout?Hbeautifulgirl!"?endl;

return0;

)

運(yùn)行結(jié)果為:

Mysisterisabeautifulgirl!

2.

#includc<iostrcam>

usingnamespacestd;

intmain()

J2r

課后習(xí)題答案

inta,b,c;

cin?a?b;

c=a+b;

cout?"a+b="?a+b<<endl;

return0;

)

運(yùn)行結(jié)果為:

23/

a+b=5

第2章C++程序設(shè)計(jì)基礎(chǔ)(上)

一、選擇題

(1)在一個(gè)C++程序中,main函數(shù)的位置()。

A.必須在程序的開頭B.必須在程序的后面

C.可以在程序的任何地方D.必須在其他函數(shù)中間

【答案】C

(2)用C++語言編寫的源程序要變?yōu)槟繕?biāo)程序必須要經(jīng)過()o

A.解釋B.匯編C.編輯D.編譯

【答案】D

(3)C++程序基本單位是(

A.數(shù)據(jù)B.字符C.函數(shù)D.語句

【答案】C

(4)C++程序中的語句必須以()結(jié)束。

A.冒號(hào)B.分號(hào)C.空格D.花括號(hào)

【答案】B

(5)下列選項(xiàng)中,全部都是C++關(guān)鍵字的選項(xiàng)為()o

A.whileIFstaticB.breakchargo

C.sizeofcaseexternD.switchfloatinteger

【答案】C

(6)下列正確的八進(jìn)制整型常量表示是()o

A.OaOB.015C.080D.0x10

【答案】B

(7)在下列運(yùn)算符中,()優(yōu)先級(jí)最高。

A.<=B.*=C.+D.*

【答案】D

t禮品公產(chǎn)系月叢右?新堀結(jié)構(gòu)

(8)在下列運(yùn)算符中,()優(yōu)先級(jí)最低。

A.!B.&&C.!=D.?:

【答案】D

(9)設(shè)i=l,j=2,則表達(dá)式i+++j的值為()。

A.1B.2C.3D.4

【答案】C

(10)設(shè)i=l,j=2,則表達(dá)式++i+j的值為()<>

A.1B.2C.3D.4

【答案】D

(11)在下列表達(dá)式選項(xiàng)中,()是正確。

A.++(a++)B.a++bC.a+++bD.a++++b

【答案】C

(12)已知i=0,j=1,k=2,則邏輯表達(dá)式++ihj&&++k的值為()。

A.0B.1C.2D.3

【答案】B

33)執(zhí)行卜列語句后,x的值是(),y的值是()。

intx,y;

x=y=l;++x||++y;

A.不確定B.1,1C.2,1D.2,2

【答案】C

(14)已知x=5,則執(zhí)行語句x+二x-=x*x;后,x的值為()o

A.25B.40C.-40D.20

【答案】C

(15)Sa=l,b=2,c=3,d=4,則條件表達(dá)式a<b?a:c<d?c:d的值為()。

A.1B.2C.3D.4

【答案】A

(16)逗號(hào)表達(dá)式(x=4*5,x*5),x+25的值為(

A.25B.20C.100D.45

【答案】C

二、寫出下列數(shù)學(xué)表達(dá)式的C++算術(shù)表達(dá)式

I

(1)(2)x{x[x(ax+b)+c]+d)+e

x+y

(4)^1+1cos48°

(6)logio(a2+ab+b2)

4r

課后習(xí)題答案

【答案】

(1)1/(1+1/(l+l/(x+y))i

(2)x*(x*(x*(a*x+b)+c)+d)+e

(3)log(1+pow(fabs((a+b)/(a-b)),10)

(4)sqrt(l+3.14159/2*cos(48*3.14159/180))

(5)l/lan((l?x*x)/(l+x*x))

或者cos((l-x*x)/(l+x*x))/sin((l-x*x)/(l+x*x))

(6)log10(a*a?a*bib*b)

三、用關(guān)系表達(dá)式或邏輯表達(dá)式表示下列條件

(1)i整除j(2)n是小于正整數(shù)k的偶數(shù)

(3)l<=x<IO(4)x,y其中有一個(gè)小于z

(5)[-100,-10],并且y任[10,100]

(6)坐標(biāo)點(diǎn)(x,y)落在以(10,20)為圓心,以35為半徑的圓內(nèi)

(7)三條邊a,b和c構(gòu)成三角形

(8)年份Year能被4整除,但不能被100整除或者能被400整除

【答案】

(1)i%j==0(2)(n<k)&&(n%2==0)

(3)l<=x&&x<10(4)x<z||y<z

(5)!(y>=-100&&y<=-10)&&!(y>=10&&y<=100)

(6)sqrt(pow((x-10),2)+pow((y-20),2))<35

(7)a+b>c&&b+c>a&&c+a>b

(8)(year%4==0)&&(year%100!=0)||(year%400==0)

四、閱讀下列程序,寫出執(zhí)行結(jié)果

(1)

#include<iostream>

usingnamespacestd:

voidmain()

(

inta=l,b=2,x,y;

cout?a+++++b?endl;

cout?a%b?endl;

x=!a>b;

y=x-&&b;

cout?x?endl;

cout?y?cndl;

)

【答案】

4

鎏朽鼻放號(hào)系川叢若?物根結(jié)核I

2

-1

0

(2)

#include<iostream>

usingnamespacesld;

voidmain()

{

intx,y,z,f;

x=y=z=1;

f=-x||y-&&z++;

cout?"x="?x<<endl;

cout?"y=H?y?endl;

cout?"z="?z?endl;

cout?"f=,,?f?endl;

(

【答案】

x=0

y=()

z=2

f=l

五、編程題

(1)輸入一個(gè)三位整數(shù),將它反向輸出。

【解答】

#include<iostream>

usingnamespacestd;

voidinain()

{intx,i,j,k;

cout?npleaseinputx:H;

cin?x;

i=x/100;

j=(x-i*100)/10;

k=x-i*100-j*10;

cout?k?j?i?endl;

I

(2)輸入平面上某點(diǎn)橫坐標(biāo)x和縱坐標(biāo)y,若該點(diǎn)在由圖2-8表示的方塊區(qū)域內(nèi),則輸

出1;否則,輸出0。

J6r

課后習(xí)題答案

圖2-8正方形

【解答】

#include<iostream>

usingnamespacestd;

voidmain()

{floatx,y,b;

cout?"pleaseinputx,y:u;

cin?x?y;

b=(-2<=x)&&(x<=2)&&(-2<=y)&&(y<=2);

cout?b?endl;

第3章C++程序設(shè)計(jì)基礎(chǔ)(下)

-1x<0

1.設(shè)有函數(shù)關(guān)系為y=0x=0,下面選項(xiàng)中能正確表示上述關(guān)系的語句為()o

1x>0

A.y=l;B.y=-1;

if(x>=)0if(x!=0)

if(x一一0)y-0;if(x>0)y-l;

elsey=-1;elsey=0

C.if(x<=0)D.y=-1;

if(x<0)y=-l;if(x<=0)

elsey=0;if(x<0)y=-1;

elsey=l;elsey=l;

【答案】C

2.假設(shè)i=2,執(zhí)行下列語句后i的值為()o

t禮品公產(chǎn)系月叢右?新堀結(jié)構(gòu)

switch(i)

{casel:i++;

case2:i-;

case3:++i;break;

case4:—i;

defaull:i++;

)

A.1B.2C.3D.4

【答案】B

3.已知imi=O,x=O;下面while語句執(zhí)行時(shí)循環(huán)次數(shù)為()。

while(!x&&i<3){x++;i++;}

A.4B.3C.2D.1

【答案】D

4.已知inti=3;下面do?while語句執(zhí)行時(shí)循環(huán)次數(shù)為()。

do

{i-;cout?i?cndl;)while(i!=1);

A.1B.2C.3D.無限

【答案】B

5.下面for語句執(zhí)行時(shí)循環(huán)次數(shù)為

for(inti=Oj=5;i<=j;)

{

cout?i?j?endl;

i++;j-;

1

A.0B.1C.3D.5

【答案】C

6.以下程序段為死循環(huán)的是()o

A.for(intx=0;x<3;){x+-;};B.intk=0;

do{++k;}while(k>=0);

C.inta=5;while(a){a—;};D.inti=3;fbr(;i;i—);

【答案】B

二、閱讀下列程序,寫出執(zhí)行名

1.

#include<iostream.h>

voidmain()

(

inta,b,c,d,x;

a=c=0;b=l;d=20;

if(a)

J8r

課后習(xí)題答案

d=d-10;

elseif(!b)

if(!c)

x=15;

elsex=25;

cout?d?endl;

)

【答案】

20

2.

#include<iostream.h>

voidmain()

(

inta=0,b=l;

svvitch(a)

(

case0:switch(b)

(

case0:cout?"a="?a<<"b=u?b?endl;break;

caseI:cout?"a="?a<<"b=u?b?endl;break;

)

case1:a++;b++:cout?"a=,,?a?"b="?b?endl;

)

)

【答案】

a=0b=1

a=lb=2

3.

#include<iostream.h>

voidmain()

(

inti=l;

while(i<=10)

if(++i%3!=lContinue;

elsecout?i?endl;

)

【答案】

4

7

1禮品公產(chǎn)系月叢右二新堀結(jié)構(gòu)

10

4.

#include<iostream.h>

voidmain()

(

inti=0,j=5;

do

(

i++;j-?;

if(i>3)break;

}while(j>0);

cout?"i=,,?i?,\t'?,,j="?j?endl;

)

【答案】

i=4j=l

5.

#include<iostrcam.h>

voidmain()

(

inti,j;

for(i=l,j=5;i<j;i++)

j--;

cout?i?'\t'?j?endl;

1

【答案】

33

6.

#include<iostream.h>

voidmain()

(

inti.s=0:

for(i=0;i<5;i++)

swilch(i)

{

case0:s+=i;break;

casel:s+=i;brcak;

case2:s+=i;break;

dcfault:s+=2;

Jior

課后習(xí)題答案

cout?"s="?s?endl;

1

【答案】

s=7

7.

#include<iostream.h>

voidmain()

{

inti,j,x=O;

for(i=0;i<=3;i++)

(

x++;

for(j=0;j<=3;j++)

(

if(j%2)continue;

x++;

I

x++;

)

cout?"x=,,?x?endl;

)

【答案】

x=16

三、編程題

1.輸入三個(gè)整數(shù),再將這三個(gè)整數(shù)按從小到大的順序輸出。

【解答】

#include<iostream.h>

voidmain()

(

inta,b,c,t;

cout?"a.b,c=n;

cin?a?b?c;

if(a>b){t=a;a=b;b=t;}

if(a>c){t=a;a=c;c=t;}

if(b>c){t=b;b=c;c=t;}

cout?a?,\t'?b?'\t*?c?ciKil;

)

2.模擬剪刀、石頭和紙游戲,用s表示剪刀,r表示石頭,p表示紙。游戲規(guī)則為:剪

刀剪紙,石頭砸剪刀,紙包石頭。兩名游戲者分別輸入s、r或p,按照游戲規(guī)則輸出結(jié)果。

懣品公產(chǎn)條月幺君二新堀結(jié)構(gòu)

【解答】

#include<iostream.h>

voidmain()

(

charfirst,second;

cout?"Firstinput(s,rorp):n;

cin?first;

cout?"Sccondinput(s.rorp):n;

cin?second;

switch(first)

{case's':

switch(second)

{case's':ccut?"Scissortiesscissor."?endl;gotoend;

case'r':cout?"Scissoriscrushedbyrock."?cndl;gotoend;

case'p':cout?"Scissorcutspaper."?endl;gotoend;

default:cout?nsccondinputerror!"?endl;gotoend;

1

caseT':

switch(second)

(case's':cout?"Rockcrushesscissor."?endl;gotoend;

case'r':cout?"Rocktiesrock."?endl;gotoend;

case'p':cout?"Rockiswrappedbypaper."?endl;gotoend;

default:cout?"secondinputerror!"?endl;gotoend;

)

case'p':

switch(second)

{case's':cout?''Paperiscutbyscissor.M?endl;gotoend;

case'r':cout?"Paperwrapstherock.n?endl;gotoend;

case'p':cout<v"Papertiespaper."?endl;gotoend;

default:cout?"secondinputerror!"?endl;gotoend;

)

default:cout?"Firstinputerror!"?endl;gotoend;

)

end:;

)

3.輸入一個(gè)整數(shù),輸出該整數(shù)的所有素?cái)?shù)因子。例如,輸入120,輸出為2、2、2、3

和5。

【解答】

#includc<iostream.h>

J12r

課后習(xí)題答案

voidmain()

intm,i=2;

cout?"pleaseinputm:";

cin?m;

while(i<=m)

if(m%i==0)

(

cout?i?"

m=m/i;

)

elsei++;

cout?endl;

)

4.找出100到200之間滿足用3除余2且用5除余3且用7除余2的所有整數(shù)。

【解答】

#include<iostream.h>

voidmain()

(

inti;

for(i=100;i<=200;i++)

(

if((i%3==2)&&(i%5==3)&&(i%7==2))

cout?i?endl;

)

)

5.如果一個(gè)整數(shù)恰好等于它的所有因子之和,則這個(gè)數(shù)稱為完數(shù)。例如,6=1+2+3,所

以6為完數(shù)。求1000之內(nèi)的所有完數(shù)。

【解答】

#include<iostream.h>

voidmain()

(

inti,j,s;

for(i=l;i<=1000;i++)

(

s=0;

for(j=l;j<i;j++)

if(i%j==O)s=s+j;

if(i==s)cout?i?endl;

1禮品公產(chǎn)條月叢右?新堀結(jié)構(gòu)

)

6.在屏幕上輸出如下圖案:

*

***

?^csjc?jc?^csjc

?jcrj?

rk???rl?5^C?fCriC??Cr^w

【解答】

#include<iostream.h>

voidmain()

{

inti,j,k;

for(i=l;i<=5;i++)

(

for(k=I;k<=5-i;k++)cout?"";

for(j=1;j<=2*i-l;j++)cout?"*

cout?endl;

第4章函數(shù)的應(yīng)用

1.選擇題

(1)下面關(guān)于C++語言說法不正確的是()。

A.具有函數(shù)式的程序結(jié)構(gòu),其程序至少由一個(gè)函數(shù)構(gòu)成,不論是主函數(shù),還是其他函

數(shù)

B.變量的數(shù)據(jù)類型豐富,而且使用不同的存儲(chǔ)類別

C.具有編譯預(yù)處理的功能,為程序的設(shè)計(jì)與修改、調(diào)試、移植帶來方便

D.既是面向結(jié)構(gòu)的程序設(shè)計(jì)語言,又是面向?qū)ο蟮某绦蛟O(shè)計(jì)語言

答案:A

若只有一個(gè)函數(shù),則只能是主函數(shù),否則程序不知從何處開始執(zhí)行。

(2)所謂模塊化程序設(shè)計(jì)是指,在程序設(shè)計(jì)中把功能相對(duì)獨(dú)立、單一的模塊用一個(gè)函

數(shù)實(shí)現(xiàn),再由若干個(gè)函數(shù)組成完整程序的程序設(shè)計(jì)方法。對(duì)于函數(shù),下列說法不正確的是

A.函數(shù)結(jié)構(gòu)獨(dú)立、功能單一,便于編寫、調(diào)試和修改

課后習(xí)題答案

B.可以并行開發(fā),加快軟件開發(fā)速度,縮短開發(fā)周期

C.函數(shù)的重復(fù)使用性好,提高開發(fā)效率

D.所有函數(shù)都可用于整個(gè)程序,即使該程序包含了多個(gè)文件

答案:D

(3)關(guān)于函數(shù)調(diào)用,下面不正確的是()。

A.由于程序總是從主函數(shù)開始執(zhí)行,所以函數(shù)的調(diào)用總是在主函數(shù)和其他函數(shù)之間進(jìn)

B.函數(shù)的調(diào)用可以在任意函數(shù)之間進(jìn)行

C.一個(gè)函數(shù)可以自己調(diào)用自己

D.函數(shù)返回時(shí)可以不必帶回值,這時(shí)函數(shù)類型應(yīng)為void

答案:A

(4)關(guān)于函數(shù)的聲明與定義,正確的是()o

A.函數(shù)的聲明是必須的,只有這樣才能保證編譯系統(tǒng)對(duì)函數(shù)參數(shù)進(jìn)行檢測(cè),以確保參

數(shù)傳遞正確

B.函數(shù)的聲明并非必須,即可以只給出函數(shù)定義

C.聲明函數(shù)時(shí)參數(shù)標(biāo)識(shí)符可省略,但參數(shù)的類型、個(gè)數(shù)必須相同且順序不能顛倒

D.一個(gè)函數(shù)可以在另一個(gè)函數(shù)內(nèi)定義

答案:C

函數(shù)的聲明并非必須,可以只要函數(shù)定義而不要聲明.但要注意符合一定條件。函數(shù)不

可嵌套定義。

(5)關(guān)于函數(shù)的返回值,正確的是()。

A.return語句只返回一個(gè)值,該值的類型在函數(shù)定義時(shí)已確定

B.返回值類型由返回變量類型決定

C.如果不定義函數(shù)類型,表示該函數(shù)沒有返回值

D.函數(shù)調(diào)用一定要有返回值,否則調(diào)用就沒有意義了

答案:A

(6)下列關(guān)于形參的說法,正確的是()。

A.函數(shù)的形參并非是必須的,有時(shí)可以什么都沒有

B.函數(shù)的形參可以是表達(dá)式

C.函數(shù)在定義時(shí),形參是不占用存儲(chǔ)空間的,只有在被調(diào)用時(shí)系統(tǒng)才會(huì)為其分配存儲(chǔ)

空間,調(diào)用結(jié)束時(shí),該空間將被釋放

D.形參的名稱、類型、數(shù)量和順序必須與實(shí)參相同,否則實(shí)參不會(huì)把信息正確地傳遞

給形參

答案:C

(7)關(guān)于函數(shù)的返回,不正確的是()

A.使程序的執(zhí)行重新返回到主調(diào)函數(shù),使程序繼續(xù)往下執(zhí)行

B.釋放調(diào)用函數(shù)時(shí)臨時(shí)分配的存儲(chǔ)單元

C.一定要返回一個(gè)值給主調(diào)函數(shù)

D.其返回值可有可無

密1樸品房乃東川叢利物堀結(jié)構(gòu)

答案:c

被調(diào)用函數(shù)可以不返回任何值,僅完成某功能。

二、閱讀下列程序,寫出執(zhí)行結(jié)果

(1)

#include<iostream>

usingnamespacestd;

voidincx();

voidincy();

voidmain()

{

incx();

incy();

incx();

incy();

incx();

incy();

1

voidincx()

(

intx=();

cout?"\nx="?++x;

)

voidincy()

(

staticinty=0;

cout?"\ny="?++y;

)

【答案】

x=l

y二i

X=1

y=2

x=l

y=3

(2)

#include<iostream>

usingnamespacestd;

inti=3;

J16r

課后習(xí)題答案

intfunl(intn)

!

cout?i+n?endl;

return0;

}

intfun2(intn)

{

staticinti=2;

cout?i4-n?endl;

return0;

)

voidmain()

(

inti=l;

intfun1(int);

intfun2(int);

cout?i;

funl(i);

fun2(i);

1

【答案】

14

3

三、編程題

(1)編寫函數(shù),定義兩個(gè)unsignedshortint型的參數(shù),返回兩個(gè)參數(shù)的商,其數(shù)據(jù)類型

為shortint。如果第二個(gè)參數(shù)為0,輸出錯(cuò)誤提示信息。

【源程序】

#include<iostream.h>

shortintDivider(unsignedshortinta,unsignedshortintb)

(

if(b==0)

return-1;

else

returna/b;

)

intmain()

unsignedshortintone,two;

懣品公產(chǎn)條月幺君二新堀結(jié)構(gòu)

shortintanswer;

cout?"EntertwonumbersAnNumberone:

cin?one;

cout?"Numbertwo:

cin?two;

answer=Divider(one,two);

if(answer>-1)

cout?"Answer:"?answer;

else

cout?"Error,can'tdividebyzero!";

return0;

)

運(yùn)行結(jié)果為:

Entertwonumbers.

Numberonc:8Z

Numbertwo:2Z

Answer:4

(2)編寫函數(shù),輸入一個(gè)華氏溫度,將華氏溫度轉(zhuǎn)換為攝氏溫度輸出,公式為C=(F

-32)*5/9,其中F為華氏溫度,C為攝氏溫度。

【源程序】

#include<iostream.h>

#include<iomanip.h>

voidmain()

(

doublef,c,b;

cout<〈”請(qǐng)輸入華氏溫度:“<<endl;

cin?f;

coul<〈”對(duì)應(yīng)的攝氏溫度為:"<<endl;

c=f-32;

b=5.00/9;

c=b*c:

cout?setprecision(4)?"C="?c?endl;

)

運(yùn)行結(jié)果為:

請(qǐng)輸入華氏溫度:

80/

對(duì)應(yīng)的攝氏溫度為:

26.67

(3)編寫函數(shù),判斷一個(gè)數(shù)是否是質(zhì)數(shù)。

J18r

課后習(xí)題答案

【源程序】

#include<iostream.h>

#include<math.h>

intprime(inti);〃判斷一個(gè)數(shù)是否是質(zhì)數(shù)的函數(shù)

voidmain()

{

inti;

COUtVV”請(qǐng)輸入一個(gè)整數(shù);”;

cin?i;

if(prime(i))

couivvivv"是質(zhì)數(shù)。"〈vendl;

else

coutvvivv"不是質(zhì)數(shù)。n?endl;

)

intprimc(inti)

I

intj,k,flag;

flag=1;

k=sqrt(i);

for(j=2;j<=k;j++)

(

if(i%j==0)

(

flag=0;

break;

)

)

if(flag)

return1;

else

return0;

)

運(yùn)行結(jié)果為:

請(qǐng)輸入一個(gè)整數(shù):1151/

1151是質(zhì)數(shù)。

(4)編寫函數(shù),求兩個(gè)整數(shù)的最大公約數(shù)和最小公倍數(shù)。

【源程序】

#include<iostrcam.h>

#include<math.h>

誦禮品放燈條用叢右二物提結(jié)構(gòu)

intfnl(inti,intj);〃求最大公約數(shù)的函數(shù)

voidmain()

(

inti,j,x,y;

cout?”請(qǐng)輸入一個(gè)整數(shù):”;

cin?i;

COUlv<"請(qǐng)輸入另一個(gè)整數(shù):";

cin?j;

x=fnl(i,j);

y=i*j/x;

cout?i?“和”VVj?”的最大公約數(shù)是:"vvX?endl;

cout?i?"和“vvj?”的最小公倍數(shù)是:”《y?cndl;

)

intfnl(inti,intj)

(

inttemp;

if(i<j)

(

temp=i;

i=j;

j=temp;

)

while(j!=0)

{

temp=i%j;

i二j;

j=temp;

)

returni;

)

運(yùn)行結(jié)果為

請(qǐng)輸入一個(gè)整數(shù):120/

請(qǐng)輸入另一個(gè)整數(shù):72/

120和72的最大公約數(shù)是:24

120和72的最小公倍數(shù)是:360

(5)編寫遞歸函數(shù),計(jì)算x的y(y>0)次耗。

J20r

課后習(xí)題答案

【源程序】

#include<iostream.h>

longGetPower(intx,inty);

intmain()

!

intnumber,power;

longanswer;

cout?"Enteranumber:

cin?number;

cout?"Towhatpower?

cin?power;

answer=GetPower(number,power);

cout?number?"tothe"?power?"thpoweris"?answer?endl;

return0;

)

longGctPo\vcr(intx,inty)

(

if(y==l)

returnx;

else

return(x*GetPower(x,y-l));

)

運(yùn)行結(jié)果為:

Enteranumber:3/

Towhatpower?4/

3tothe4thpoweris81

(6)編寫程序,要求輸入四位數(shù)的年份、兩位數(shù)的月份和日期,把它們按“年月日”

的格式輸出,并計(jì)算它是這一年的第幾天。

【源程序】

#include<iostream.h>

#include<iomanip.h>

daynum(int,int,int);

voiddate(intyear,intmonth,iniday)

(

cout?set\v(2)?year/1OOO?setw(2)?(year/100)%10;

cout?sct\v(2)?(ycar/10)%10?sctw(2)?ycar%10;

cout?set\v(2)?month/10;

cout?sct\v(2)?month%10?setw(2)?day/10?sct\v(2)?day%10?cndl;

cout?daynum(year,month,day)?endl;

[打品公產(chǎn)條月冬右;新堀結(jié)構(gòu)

)

daynum(intyear,intmonth,intday)

(

inti,sum=0;

for(i=l;i<month;i++)

!

switch(i)

{

case1:〃1、3、5、7、8、10、12月有31天

case3:

case5:

case7:

case8:

case10:

case12:sum+=31:break;

case4:〃4、6、9、11月有30天

case6:

case9:

case1l:sum+=3();break;

case2:if(((year%4==0&&year%100!=())||year%400==0))//?2月有29天

sum+=29;

else//平年2月有28天

sum+=28;

)

}

sum+=day;

returnsum;

)

voidmain()

(

intyearjTionth.day;

COUKV”請(qǐng)輸入年/月/日:「;

cin?year?month?day;

date(year,month,day);

)

運(yùn)行結(jié)果為:

請(qǐng)輸入年/月/日:19840305/

I9840305

65

J22r

課后習(xí)題答案

第5章數(shù)組與字符串

一、選擇題:

(1)以下一維數(shù)組a的正確定義是()。

A.inta(10);B.intn=l(),a[n];C.intn;D.#defineSIZE10

cin?n;inta[SIZE];

inta[n];

【答案】D

(2)以下能對(duì)具有10個(gè)元素的一維數(shù)組a進(jìn)行正確初始化的語句是()o

A.inta[10]=(0,0,0,0,0);B.inta[10]={10*1};

C.inta[]={0};D.inta[10]={};

【答案】B

(3)在定義之后,對(duì)a的引用正確的是()。

A.aflO]B.af6.3]C.a(6)D.a[10-10]

【答案】D

(4)以下對(duì)二維數(shù)組a進(jìn)行不正確初始化的是()。

A.inta[2][3]={0};

B.inta[][3]={{3,2,1},{1,2,3)};

C.inta[][]={{3,2,1),{1,2,3});

D.inta[2][3]={{3,2J}Jl,2,3));

【答案】C

(5)在執(zhí)行inta33]={1,2,3,4,5,6};語句后,的值是()<>

A.4B.1C.2D.5

【答案】D

(6)為了判斷兩個(gè)字符串si和s2是否相等,應(yīng)當(dāng)使用()。

A.if(sl==s2)B.if(sl=s2)

C.if(strcmp(sl,s2)==0)D.if(strcpy(sl,s2))

【答案】C

(7)定義如下變量和數(shù)組:

inti;

intx[3][3]={1,23,4,5,6,7,8,9);

則以下語句的輸出結(jié)果是()o

for(i=0;i<3;i++)

cout?x[i][2-i]);

A.159B.147C.357D.369

【答案】C

t禮品公產(chǎn)系月叢右?新堀結(jié)構(gòu)

(8)下面程序段的運(yùn)行結(jié)果是()o

chara[7]=',abcdef,;

charb[4]=HABCM;

strcpy(a,b);

cout?a[51;

A.eB.fC.一個(gè)空格D.\0

【答案】B

(9)有下面程序段,則(

chara[3],b[]=,,ChinaH;

a=b;cout?a;

A.運(yùn)行后將輸出ChinaB.運(yùn)行后將輸出Ch

C.運(yùn)行后將輸出ChiD.編譯出錯(cuò)

【答案】D

(10)以下程序執(zhí)行后輸出結(jié)果是()。

main()

(

intaa[4][4]={{1,2,3,4},{5,6,7,8},{3,9,10,2},{4,2,9,6)};

inti,s=0;

fbr(i=0;i<4;i++)s=s+aa[i][I];cout?s;

)

A.11B.13C.19D.20

【答案】C

二、閱讀下列程序,寫出執(zhí)行結(jié)果

(1)

#include<iostream.h>

voidmain()

{

charch[7]={"12ab56,,};

inti,s=0;

for(i=0;ch[i]>='0'&&ch[i]<='9';i=i+2)

s=10*s+ch[i]-'0;cout?s;

1

運(yùn)行結(jié)果為:

1

(2)

#includc<iostrcam.h>

voidmain()

(

inti,j,row,col,min;

J24r

課后習(xí)題答案

inta[3][4]={{1,2,3,4},{9,8,7,6},{-1,-2,0,5)};

min=a[0][0];

for(i=0;i<3;i++)

for(j=0;j<4;j++)

jf(a[i][jl<min){min=a[il[jl;row=i;col=j;)

cout?min?n"?row?"M?col;

)

運(yùn)行結(jié)果是

-221

(3)

#include<iostream.h>

voidmain()

(

inti,r;charsl[80]=,,bus,,,s2[80]=nbookn;

for(i=r=0;sl[i]!='\0'&&s2[i]!=,\0';i++)

if(sl[ij==s2[i])i++;

else

{r=sl[i]-s2[i];break;}

cout?r?endl;

}

運(yùn)行結(jié)果是

4

(4)分析以下程序的運(yùn)行結(jié)果。

#include<iostream.h>

voidmain()

(

inta[4][4]={{1,2,-3,-4},{0,-12,-13,14},{-21,23,0,-24},{-31,32,-33。}};

intij,s=O;

for(i=0;i<4;i++)

(

for(j=0:j<4;j++)

(

if(a[i][j]<0)continue;

if(a[i]|j]=O)break;

s=s+a[i]|jj;

)

I

cout?s?cndl;

1

懣品公產(chǎn)條月幺君二新堀結(jié)構(gòu)

運(yùn)行結(jié)果是

58

(5)分析下列程序運(yùn)行結(jié)果。

#include<iostream>

usingnamespacestd;

voidmain()

(

inii,j;

staticinta[10]={1,1J,1,1,1,1,1,1,1};

for(i=0;i<10;i++)

for(j=O;j<i;j++)

a[i]=a[i]+a[j];

for(i=0;i<10;i++)

cout?a[i]?n,";

)

運(yùn)行結(jié)果為

1,2,4,8,16,32,64,128,256,512,

三、將下列程序補(bǔ)充完整,并實(shí)現(xiàn)相應(yīng)的功能

1.實(shí)現(xiàn)功能:輸入的20個(gè)數(shù)據(jù)以每行4個(gè)數(shù)據(jù)的形式輸出。

#include<iostream.h>

#defineN20

voidmain()

(

inta[N],i;

for(i=0;i<N;i++)cin?a[i];

for(i=0;i<N;i++)

(

if(CO)cout?,\n,:

cout?a[ij?"”;

1

cout?'\n';

)

【答案】

①i%4==0

(2)實(shí)現(xiàn)功能:輸入5個(gè)整數(shù),找出最大數(shù)和最小數(shù)所在的位置,并把二者對(duì)調(diào),然

后輸出調(diào)整后的5個(gè)數(shù)。

#include<iostream.h>

voidmain()

J26r

課后習(xí)題答案

inta[5],max,min,ij,k=0;

for(i=0;i<5;i++)cin?a[i];

min=a[O];

for(i=l;i<5;i++)

if(①){min=a[i];k=i;}

max=a[O];

for(i=l;i<5;i??)

if(a[i]>max){max=a[i];②;)

a[k]=max;

a[j]=min;

cout?"最小數(shù)的位置是“<<k<〈endl;

cout?"最大數(shù)的位置是"vvjwcndl;

for(i=0;i<5;i++)cout?a[i]?Mn;

)

【答案】

①a[i]<min

②j=i

(3)實(shí)現(xiàn)功能:使一個(gè)字符串按逆序輸出。

#include<iostream.h>

#inckide<string.h>

voidinverse(charstr[])

{

charm;

inti,j;

for(i=O,j=strlen(str);i<①;i++,)

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(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)論