《C++程序设计》模拟试题二含 答案.docx

上传人:b****2 文档编号:2605859 上传时间:2023-05-04 格式:DOCX 页数:16 大小:18.83KB
下载 相关 举报
《C++程序设计》模拟试题二含 答案.docx_第1页
第1页 / 共16页
《C++程序设计》模拟试题二含 答案.docx_第2页
第2页 / 共16页
《C++程序设计》模拟试题二含 答案.docx_第3页
第3页 / 共16页
《C++程序设计》模拟试题二含 答案.docx_第4页
第4页 / 共16页
《C++程序设计》模拟试题二含 答案.docx_第5页
第5页 / 共16页
《C++程序设计》模拟试题二含 答案.docx_第6页
第6页 / 共16页
《C++程序设计》模拟试题二含 答案.docx_第7页
第7页 / 共16页
《C++程序设计》模拟试题二含 答案.docx_第8页
第8页 / 共16页
《C++程序设计》模拟试题二含 答案.docx_第9页
第9页 / 共16页
《C++程序设计》模拟试题二含 答案.docx_第10页
第10页 / 共16页
《C++程序设计》模拟试题二含 答案.docx_第11页
第11页 / 共16页
《C++程序设计》模拟试题二含 答案.docx_第12页
第12页 / 共16页
《C++程序设计》模拟试题二含 答案.docx_第13页
第13页 / 共16页
《C++程序设计》模拟试题二含 答案.docx_第14页
第14页 / 共16页
《C++程序设计》模拟试题二含 答案.docx_第15页
第15页 / 共16页
《C++程序设计》模拟试题二含 答案.docx_第16页
第16页 / 共16页
亲,该文档总共16页,全部预览完了,如果喜欢就下载吧!
下载资源
资源描述

《C++程序设计》模拟试题二含 答案.docx

《《C++程序设计》模拟试题二含 答案.docx》由会员分享,可在线阅读,更多相关《《C++程序设计》模拟试题二含 答案.docx(16页珍藏版)》请在冰点文库上搜索。

《C++程序设计》模拟试题二含 答案.docx

《C++程序设计》模拟试题二含答案

《C++程序设计》模拟试题

(二)

一、选择题(本大题共10小题,每小题2分,共20分)

1.下列关于析构函数描述正确的是(D)。

A.可以重载B.函数体中必须有delete语句

C.返回类型是void类型D.不能指定返回类型 

2.下面有关重载函数的说法中正确的是(C)。

A.重载函数必须具有不同的返回值类型

B.重载函数形参个数必须不同

C.重载函数必须有不同的形参列表

D.重载函数名可以不同

3.下列关于单目运算符++、--的叙述中正确的是(D)。

A.它们的运算对象可以是任何变量和常量

B.它们的运算对象可以是char型变量和int型变量,但不能是float型变量

C.它们的运算对象可以是int型变量,但不能是double型变量和float型变量

D.它们的运算对象可以是char型变量、int型变量和float型变量

4.关于异常处理,下列说法中错误的是(B)。

A.在C++程序中,由throw表达式抛出异常,throw抛出的可以是任何类型的数据

B.在一个try-catch结构中,只能有一个try语句块和一个catch语句块

C.当抛出异常后,系统会寻找匹配的catch语句,转到离出现异常最近的try-catch结构去处理

D.当某条语句抛出异常时,跟在其后的语句将被跳过转到catch语句处,此时在try块中抛出异常前创建的对象将被自动释放

5.对于公有继承,基类中的私有成员在派生类中将(A)。

A.仍然是基类的私有成员B.成为派生类的私有成员

C.可以被派生类的成员函数直接访问D.可以被派生类的对象直接访问

6.下面关于抽象类的说法中错误的是(C)。

A.抽象类是包含有纯虚函数的类

B.抽象类是一种特殊的类

C.抽象类可以定义自己的对象

D.抽象类可以派生新类

7.假定一条定义语句为“inta[10],x,*pa=a;”,若要把数组a中下标为3的元素值赋给x,则不正确的语句为(D)。

A.x=pa[3];B.x=*(a+3);

C.x=a[3];D.x=*pa+3;

8.若类X是类Y的友元类,则下列说法中正确的是(A)。

A.类X的所有成员都可以访问类Y的私有成员

B.类Y的所有成员都可以访问类X的私有成员

C.只有类Y的公有成员才能访问类X的私有成员

D.只有类X的公有成员才能访问类Y的私有成员

9.派生类的成员函数可以直接访问基类的(B)成员。

A.所有B.公有和保护

C.保护和私有D.公有和私有

10.C++中函数返回值的类型是由(B)决定的。

A.return语句中表达式的类型B.该函数定义时的类型

C.调用函数时的调用语句D.系统根据结果

二、填空题(本大题共10小题,每小题2分,共20分)

1.在C++程序中使用的cin标识符是系统类库中定义的istream类中的一个对象。

2.假定一个二维数组的定义语句为“inta[3][4]={{3,4},{2,8,6}};”,则元素a[2][1]的值为0。

3.在一个类的定义中,包含有数据成员和成员函数的定义。

4.C++的基类指针可以访问派生类对象,但不能访问派生类对象的private成员。

5.假定A为一个类,inta()为该类的一个成员函数,若该成员函数在类定义体外定义,则函数头为intAA:

:

a()。

6.执行语句“chara[10]={"abcd"},*p;p=a;”后,*(p+4)的值是'/0'。

7.假定变量x定义为“intx=5;”,要将rx定义为x的引用(别名),应使用的语句为int&rx=x;。

8.假定指针变量p定义为“int*p=newint;”,要释放p所指向的动态内存,应使用的语句是deletep;。

9.有如下类声明:

classFoo{intbar;};

则Foo类的成员bar的访问属性是private。

10.有二维字符数组“chars[4][6]={"zhang","gao","tang","wang"};”,执行程序“cout<

三、阅读下列程序,写出执行结果(本大题共5小题,每小题4分,共20分)

1.#include

classSample

{

intx,y;

public:

Sample(){x=y=0;}

Sample(inta,intb){x=a;y=b;}

voiddisp()

{

cout<<"x="<

}

};

voidmain()

{

Samples(2,3),*p=&s;

p->disp();

}

运行结果:

x=2,y=3

2.#include

classSample

{

intx;

public:

Sample(){};

Sample(inta){x=a;}

Sample(Sample&a){x=a.x+1;}

voiddisp(){cout<<"x="<

};

voidmain()

{

Samples1

(2),s2(s1);

s1.disp();

s2.disp();

}

运行结果:

x=2

x=3

3.#include

classSample

{

charc1,c2;

public:

Sample(chara){c2=(c1=a)-32;}

voiddisp()

{

cout<

}

};

voidmain()

{

Samplea('a'),b('b');

a.disp();

b.disp();

}

运行结果:

a转换为A

b转换为B

4.#include

classSample

{

intx,y;

public:

Sample(){x=y=0;}

Sample(inta,intb){x=a;y=b;}

voiddisp()

{

cout<<"x="<

}

};

voidmain()

{

Samples1,s2(1,2),s3(10,20);

Sample*pa[3]={&s1,&s2,&s3};

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

pa[i]->disp();

}

运行结果:

x=0,y=0

x=1,y=2

x=10,y=20

5.#include

voidswap(int&,int&);

voidmain()

{

inta=15,b=22,c=9,d=30;

cout<<"1522930";

if(a

if(b

if(c

if(a

if(b

if(a

cout<

}

voidswap(int&x,int&y)//自定义函数代码从这里开始

{

inttemp;

temp=x;

x=y;

y=temp;

}

运行结果:

1522930

3022159

四、完成程序题(本大题共5小题,每小题4分,共20分)

1.下面是一个实现两个数相加的程序,在下划线处填上正确的语句。

#include

intadd(intx,inty)

{

returnx+y;

}

doubleadd(doublex,doubley)

{

returnx+y;

}

voidmain()

{

inta=4,b=6;

doublec=2.6,d=7.4;

cout<

}

2.设计一个函数用于计算两点之间的距离,,在下划线处填上正确的语句。

#include

#include

classPoint

{

intx,y;

public:

Point(inti,intj){x=i;y=j;}

intgetx(){returnx;}

intgety(){returny;}

voiddisp()

{

cout<<"("<

}

};

floatdistance(Point&p1,Point&p2)

{

floatd;

d=sqrt((p1.getx()-p2.getx())*(p1.getx()-p2.getx())+

(p1.gety()-p2.gety())*(p1.gety()-p2.gety()));

returnd;

}

voidmain()

{

Pointp1(2,2),p2(5,5);

p1.disp();

cout<<"与";p2.disp();

cout<<"之间距离="<

}

3.根据程序的运行结果,在下划线处填上正确的语句。

#include

classSample

{

protected:

intx;

public:

Sample(){x=0;}

Sample(intval){x=val;}

voidoperator++()

{x++;}

};

classDerived:

publicSample

{

inty;

public:

Derived()

{

x=0;

y=0;

}

Derived(intval1,intval2)

{

x=val1;

y=val2;

}

voidoperator--()

{

x--;

y--;

}

voiddisp()

{

cout<<"x="<

}

};

voidmain()

{

Derivedd(3,5);

d.disp();

d++;

d.disp();

d--;

d.disp();

}

运行结果:

x=3y=5

x=4y=5

x=3y=4

4.定义函数模板用于计算一个数的绝对值,在下划线处填上正确的语句。

#include

template

Tabs(Tx)

{

return(x>0?

x:

-x);

}

voidmain()

{

cout<

}

5.将下面程序补充完整,使程序执行结果为9。

#include

classClass

{

public:

Class(int);

intget();

private:

intx;

};

Class:

:

Class(inta)

{

x=a;

}

intClass:

:

get()

{

returnx*x;

}

voidmain()

{

Classa(3);

cout<

}

五、编程题(本大题共2小题,每小题10分,共20分)

1.设计一个立方体类Box,计算并输出立方体的体积和表面积。

解:

Box类包含三个私有数据成员a(立方体边长)、volume(体积)和area(表面积),另有两个构造函数以及seta()(设置立方体边长)、getvolume()(计算体积)、getarea()(计算表面积)和disp()(输出结果)。

本题程序如下:

#include

classBox

{

floata;

floatvolume;

floatarea;

public:

Box(){}

Box(floatr){a=r;}

voidseta(floatr){a=r;}

voidgetvolume(){volume=a*a*a;}

voidgetarea(){area=6*a*a;}

voiddisp()

{

cout<<"体积:

"<

"<

}

};

voidmain()

{

Boxobj1(3.5),obj2;

obj2.seta(5.4);

obj1.getvolume();

obj1.getarea();

cout<<"obj1=>";

obj1.disp();

obj2.getvolume();

obj2.getarea();

cout<<"obj2=>";

obj2.disp();

}

运行结果:

obj1=>体积:

42.875,表面积:

73.5

obj2=>体积:

157.464,表面积:

174.96

2.设计一个学生类student,包括学生姓名、成绩,设计一个友元函数,输出成绩对应的等级:

大于等于90:

优;80~90:

良;70~79:

中;60~69:

及格;小于60:

不及格。

解:

#include

#include

#include

classstudent

{

charname[10];

intdeg;

charlevel[7];

public:

student(charna[],intd)

{

strcpy(name,na);

deg=d;

}

char*getname(){returnname;}

friendvoidtrans(student&s)

{

if(s.deg>=90)

strcpy(s.level,"优");

elseif(s.deg>=80)

strcpy(s.level,"良");

elseif(s.deg>=70)

strcpy(s.level,"中");

elseif(s.deg>=60)

strcpy(s.level,"及格");

else

strcpy(s.level,"不及格");

}

voiddisp()

{

cout<

}

};

voidmain()

{

studentst[]={student("王华",78),student("李明",92),student("张伟",62),student("孙强",88)};

cout<<"输出结果:

"<

cout<

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

{

trans(st[i]);

st[i].disp();

}

}

运行结果:

输出结果:

姓名成绩等级

王华78中

李明92优

张伟62及格

孙强88良

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

当前位置:首页 > 解决方案 > 学习计划

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

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