面向对象C++程序设计各章习题答案.docx

上传人:b****3 文档编号:4177736 上传时间:2023-05-06 格式:DOCX 页数:66 大小:28.87KB
下载 相关 举报
面向对象C++程序设计各章习题答案.docx_第1页
第1页 / 共66页
面向对象C++程序设计各章习题答案.docx_第2页
第2页 / 共66页
面向对象C++程序设计各章习题答案.docx_第3页
第3页 / 共66页
面向对象C++程序设计各章习题答案.docx_第4页
第4页 / 共66页
面向对象C++程序设计各章习题答案.docx_第5页
第5页 / 共66页
面向对象C++程序设计各章习题答案.docx_第6页
第6页 / 共66页
面向对象C++程序设计各章习题答案.docx_第7页
第7页 / 共66页
面向对象C++程序设计各章习题答案.docx_第8页
第8页 / 共66页
面向对象C++程序设计各章习题答案.docx_第9页
第9页 / 共66页
面向对象C++程序设计各章习题答案.docx_第10页
第10页 / 共66页
面向对象C++程序设计各章习题答案.docx_第11页
第11页 / 共66页
面向对象C++程序设计各章习题答案.docx_第12页
第12页 / 共66页
面向对象C++程序设计各章习题答案.docx_第13页
第13页 / 共66页
面向对象C++程序设计各章习题答案.docx_第14页
第14页 / 共66页
面向对象C++程序设计各章习题答案.docx_第15页
第15页 / 共66页
面向对象C++程序设计各章习题答案.docx_第16页
第16页 / 共66页
面向对象C++程序设计各章习题答案.docx_第17页
第17页 / 共66页
面向对象C++程序设计各章习题答案.docx_第18页
第18页 / 共66页
面向对象C++程序设计各章习题答案.docx_第19页
第19页 / 共66页
面向对象C++程序设计各章习题答案.docx_第20页
第20页 / 共66页
亲,该文档总共66页,到这儿已超出免费预览范围,如果喜欢就下载吧!
下载资源
资源描述

面向对象C++程序设计各章习题答案.docx

《面向对象C++程序设计各章习题答案.docx》由会员分享,可在线阅读,更多相关《面向对象C++程序设计各章习题答案.docx(66页珍藏版)》请在冰点文库上搜索。

面向对象C++程序设计各章习题答案.docx

面向对象C++程序设计各章习题答案

面向对象C++程序设计

各章习题参考答案

第1章面向对象技术概论

一.选择题

1.A2.C3.D4.B5.C

二.填空题

1.封装、继承、多态性

2.面向对象分析(OOA)、面向对象设计(OOD)、面向对象实现(OOI)、面向对象测试(OOT)和面向对象系统维护(OOSM)。

3.实例实例

4.多态性

5.消息消息传递

第2章C++简单程序设计

一.选择题:

1.B2.B3.B4.C5.C

6.D7.D8.C9.D10.C

11.A12.A

二.填空题:

1.4;2;2;8;1

2.10

3.0

4.87;79;11

5.

(1)x值为6,表达式的值为6

(2)x值为6,但表达式的值为5

(3)x值为4,表达式的值为4

(4)x值为5,表达式的值为5

(5)x变为6,y的值为5

(6)x变为4,y的值为4

(7)x变为6,y的值为25

(8)x的值为6,y的值为36

6.const

7.c+i*sizeof(c[i])

8.x<=3||x>=10

9.a<=b&&b!

=5

10.3030

三.程序分析题:

1.

s=55

2.

a,b

99,96,194

100.2,94.8,196

3.

i,s=15,56

4.

1315221464

5.

1425

四.编程题(参考答案):

1.假设数组中含8个元素,参考答案如下:

#include

voidmain()

{

intc=0,i,a[8],k;

cout<<"inputa[i]:

"<

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

cin>>a[i];

cout<<"inputk:

"<

cin>>k;

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

if(a[i]>=k)c++;

cout<

cout<

}

2.参考答案:

#include

voidmain()

{

constintn=50,m=10;

inti,j,k;

intindex[n];//存放学号

floats,score[n],sum;//存放成绩

for(i=0;i

cin>>index[i]>>score[i];//从键盘输入数据

sum+=score[i];

cout.precision

(2);//设置输出宽度

cout<

"<

cout.width(28);//设置输出宽度

cout<

";//输出学号

for(i=0;i<10;i++)//选取前m名分数最高的学生,输出其学号及成绩

{

s=score[i];

k=i;

for(j=i+1;j

if(s

{

s=score[j];

k=j;

}

if(k>i)

{

score[k]=score[i];

score[i]=s;

j=index[k];

index[k]=index[i];

index[i]=j;

}

cout.width(4);//输出序号,学号和分数

cout<

cout.width(11);

cout<

cout.width(12);

cout.precision

(2);

cout<

}

cout<

}

3.

#include

voidmain()

{

doublex,y;

cout<<”Inputx:

”;

cin>>x;

if(x<3.0)

y=(x-2)*x;

else

if(x>=-3.0&&x<=3.0)y=x;

elsey=x-2;

cout<<”x=”<

}

执行该程序后,显示如下信息:

(分别输入3.2,2,-5)

Inputx:

3.2↙

输出结果如下:

x=3.2,y=1.2

Inputx:

2↙

输出结果如下:

x=2,y=2

Inputx:

-5↙

输出结果如下:

x=-5,y=35

该程序中使用了if-elseif-else语句,用来实现三路分支。

4.程序如下:

#include

voidmain()

{

inti,j,n=5;

for(i=1;i<=n;i++)

{

for(j=1;j<=19;j++)

{

if((j==i)||(j==10-i)||(j==i+9)||(j==19-i))

cout<<"*";

else

cout<<"";

}

cout<

}

}

5.假设数组中含8个元素,参考答案如下:

#include

voidmain()

{

intc=0,i,a[8],k;

cout<<"inputa[i]:

"<

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

cin>>a[i];

cout<<"inputk:

"<

cin>>k;

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

if(a[i]>=k)c=c+a[i];

cout<

cout<

}

6.

程序分析:

由于需要分别统计5位候选人的票数,所以要同时使用5个统计变量,为此定义一个具有6个元素的一维整型数组,其中用下标为1的元素统计代号为1的候选人票数,用下标为2的元素统计代号为2的候选人票数,依次类推,而下标为0的元素未用。

假定该数组为a[6],则当从键盘上输入的一个代号为1时,就在元素a[1]上加1,为2时就在元素a[2]上加1,总之当输入的代号为i(1≤i≤5)时就在a[i]上加1。

当统计结束后每个数组元素a[i]的值就是代号为i的候选人最后所得的票数。

#include

voidmain()

{

inti,a[6]={0};

cout<<"请依次输入每张选票上所投候选人的代号:

";

cin>>i;

while(i!

=-1){

if(i>=1&&i<=5)a[i]++;

cin>>i;

}

cout<

for(i=1;i<=5;i++)cout<

'<

}

显示结果如下:

请依次输入每张选票上所投候选人的代号:

1232435134235-1

1:

2

2:

3

3:

4

4:

2

5:

2

7.程序内容如下:

#include

voidmain()

{

intweekday;

cout<<"今天星期几?

";

cin>>weekday;

switch(weekday){

case0:

cout<<"Sunday"<

case1:

cout<<"Monday"<

case2:

cout<<"Tuesday"<

case3:

cout<<"Wednesday"<

case4:

cout<<"Thursday"<

case5:

cout<<"Friday"<

case6:

cout<<"Saturday"<

default:

cout<<"表示星期几的数必须在0~6之间!

"<

}

}

8.程序内容如下:

#include

voidmain()

{

charc[2];

cout<<"Enterscore:

";

cin>>c;

switch(c[0])

{

case'A':

switch(c[1])

{

case'+':

cout<<"100"<

break;

case'-':

cout<<"90"<

break;

case'\0':

cout<<"95"<

}

break;

case'B':

switch(c[1])

{

case'+':

cout<<"85"<

break;

case'-':

cout<<"75"<

break;

case'\0':

cout<<"80"<

}

break;

case'C':

switch(c[1])

{

case'+':

cout<<"70"<

break;

case'-':

cout<<"60"<

break;

case'\0':

cout<<"65"<

}

break;

default:

cout<<"<60\n";

}

}

执行该程序后,输出显示下述信息:

Enterscore:

B+↙

输出显示结果如下:

85

程序分析:

该程序出现了开关语句嵌套的情况。

本程序使用了一个带嵌套的switch语句实现多路分支。

其中,有3个带嵌套的case子句(每个<语句序列>中都带break语句)和1个default子句。

每个带嵌套的case子句又由三个case子句组成(每个<语句序列>中都带break语句)。

请同学分析:

如果去掉程序中case’A’:

后面<语句序列>中的break语句,再运行该程序会出现什么现象?

注意:

要输入大写字母,否则结果便是:

“<60”了。

9.

#include

voidmain()

{

inti,j,m=0,n=10,count=10;//count为每数完一轮剩下的猴子数,m确定每轮开始应该数

//几,即最小编号的猴子应该从几数,n是为了记录上一轮

//剩的猴子数,除以3,再加上上一轮开始的数的数字,便

//可求出本轮最小编号的猴子应该从几数起.

intb[10],a[10]={1,2,3,4,5,6,7,8,9,10};//将10个猴子的编号放入数组a中.b[n]是为了存放

//每轮剩下的猴子的编号.

while(count>1)//只要圈中剩下的猴子数多于一个,就下继续数下去.

{

for(i=j=0;j

{

if((m+i+1)%3==0)

{

i++;//数到3猴子出圈

count--;//猴子计数减1

}

b[j]=a[i];//把剩下的猴子编号从数组a中复制到数组b中

}

for(i=0;i

a[i]=b[i];

m=m+n%3;//求下一轮的第一只猴子(编号最小的猴子)从几开始数起

n=count;//把本次剩下的猴子数放到n中存起,以便计算下一轮的

//编号最小的猴子从几开始数起

}

cout<<"第"<

"<

}

显示结果如下:

第4只猴子被选为大王!

10.

#include

voidmain()

{

charc[]="cprogramdesign!

";

chard[17],e[17];

cout<<"加密前的原字符串如下:

"<

cout<

for(inti=0;i<9;i++)

d[i]=c[i]+5;

for(intj=9;j<17;j++)

d[j]=c[j]+4;

cout<<"加密后的字符串如下:

"<

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

cout<

cout<

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

e[i]=d[i]-5;

for(j=9;j<17;j++)

e[j]=d[j]-4;

cout<<"解密后的字符串如下:

"<

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

cout<

cout<

}

执行结果显示如下:

加密前的原字符串如下:

cprogramdesign!

加密后的字符串如下:

h%uwtlwfr$hiwmkr%

解密后的字符串如下:

cprogramdesign!

第3章函数

一.选择题

1.C2.A3.A4.B5.D

二.填空题:

1.函数名;参数表;传值调用;引用调用

2.实参;形参

3.函数说明

4.静态函数;外部函数

5.头文件

三.程序分析题

1.

main――x=5,y=1,n=1

func――x=4,y=11,n=1

2.

153

四.编程题(参考答案):

1.

#include

int&square(int);

voidmain()

{

intm;

cout<<"PleaseinputaintNumber:

";

cin>>m;

intx=square(m);

cout<<"Thenumber'ssqrareis:

"<

}

intt;

int&square(inti)

{

t=i*i;

returnt;

}

2.

#include

voidmain()

{

intn,k;

intgroup(int,intk);

cin>>n>>k;

cout<

}

intgroup(intn,intk)

{

if(k>n)

return0;

elseif(n==k||k==0)

return1;

elsereturngroup(n-1,k)+group(n-1,k-1);

}

3.

#include

intmax(int,int);

intmax(int,int,int);

intmax(int,int,int,int);

voidmain()

{

intx,a,b,c,d;

cout<<"totalnumber:

"<

cin>>x;

cout<<"pleaseinput:

"<

switch(x)

{

case2:

cin>>a>>b;cout<

case3:

cin>>a>>b>>c;cout<

case4:

cin>>a>>b>>c>>d;cout<

default:

cout<<"error"<

}

}

intmax(inta,intb)

{

returna>b?

a:

b;

}

intmax(inta,intb,intc)

{

intt=max(a,b);

returnmax(t,c);

}

intmax(inta,intb,intc,intd)

{

intt1=max(a,b);

intt2=max(c,d);

returnmax(t1,t2);

}

4.

#include

#include

voidsum(intarry[])

{

inti;

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

arry[0]+=arry[i];

}

voidmain()

{

intarry[10];

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

arry[i]=rand();

sum(arry);

for(intj=0;j<10;j++)

cout<

}

5.

Template

Tabs(Tx)

{

returnx>0?

x:

-x;

}

第4章类与对象

一.选择题:

1.B2.D3.A4.B5.C

二填空题:

1.私有;公有;保护

2.①当用类的一个对象去初始化类的另一个对象时;

②如果函数的形参是类的对象,调用函数时,进行形参与实参结合时;

③如果函数的返回值是对象,函数执行完返回调用者时。

3.数据;函数

4.friend

5.类型

三.程序分析题:

1.

T(int8)called

T(double1.8)called

T(int0)called

T(int18)called

~T(8)called.t=18

T(double2.7)called

~T()called.t=25

exitmain().

~T()called.t=25

~T()called.t=3

~T()called.t=8

2.

Constructorcalled.10

10

Destructorcalled.10

3.

Staring1:

Defaultconstructorcalled.

Defaultconstructorcalled.

Defaultconstructorcalled.

Ending1.

Staring2.

Consturct:

a=15,b=16

Consturct:

a=17,b=18

Consturct:

a=19,b=20

Ending2.

Destructorcalled.a=19,b=20

Destructorcalled.a=17,b=18

Destructorcalled.a=15,b=16

Destructorcalled.a=5,b=6

Destructorcalled.a=3,b=4

Destructorcalled.a=1,b=2

四.编程题:

(参考答案)

1.

#include

#definep3.14

classcircle

{

private:

intr;

public:

circle(intR){R=r;}

circlezc(intr);

circlemj(intr);

};

intcircle:

:

circlezc(intr)

{

return2*p*r;

}

intcircle:

:

circlemj(intr)

{

returnp*r*r;

}

voidmain()

{

inta,b;

cout<<"请输入栅栏半径"<

cin>>a;

cout<<"请输入跑道半径"<

cin>>b;

circleBig(a),Small(b);

intm=Big.circlezc(a);

intn=Big.circlemj(a);

intl=Small.circlemj(b);

cout<<"跑道造价为"<<20*(n-l)<

cout<<"栅栏造价为"<<40*m<

}

2.

#include

constintmaxsize=6;

classstack

{

floatdata[maxsize];

inttop;

public:

stack(void);

~stack();

boolempty();

voidpush(floata);

floatpop();

};

stack:

:

stack()

{

top=0;

cout<<"stackinitialized."<

}

stack:

:

~stack()

{

cout<<"stackdestroyed."<

}

boolstack:

:

empty(void)

{

returntop==0?

true:

false;

}

voidstack:

:

push(floata)

{

if(top==maxsize)

{

cout<<"Stackisfull!

"<

return;

}

data[top]=a;

top++;

}

floatstack:

:

pop()

{

if(top==0)

{

cout<<"Stackisunderflow!

"<

return0;

}

top--;

returndata[top];

}

voidmain()

{

stacks1,s2;

for(inti=1;i<=maxsize;i++)

s1.push(2*i);

cout<

for(i=1;i<=maxsize;i++)

cout<

for(i=1;i<=maxsize;i++)

s1.push(2.5*i);

for(i=1;i<=maxsize;i++)

s2.push(s1.pop());

do

cout<

while(!

(s2.empty()));

}

第5章指针

一.选择题:

1.D2.B3.B4.D5.C

6.B,D7.D8.C9.B10.B

二.填空题:

1.*p++,(*p)++,*++p,++*p;

2.10,&m;

3.abcde;c;

4.int(*p)[4],int(*p2)[3][4];

5.f(floata,char*p),(*pf)(floata,char*p);

6.0x0012FF18

7.int*p,p=newint[6],for(intk=0;k<6;k++)p[k]=k+1;

8.deletep1,*p2,p2;

9.赋值运算、一个指针可以加减一个整数,包括加1和减1运算、在一定条件下,两个指针可以相减、在一定条件下,两个指针可以比较。

10.指针是变量,而引用不是变量;

定义指针可以进行初始化,也可以不进行初始化,创建引用时必须进行初始化;

指针可以被

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 表格模板 > 合同协议

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2