全国自学考试C++程序设计试题及答案.docx
《全国自学考试C++程序设计试题及答案.docx》由会员分享,可在线阅读,更多相关《全国自学考试C++程序设计试题及答案.docx(15页珍藏版)》请在冰豆网上搜索。
![全国自学考试C++程序设计试题及答案.docx](https://file1.bdocx.com/fileroot1/2023-2/2/30310f5f-672d-4957-9773-37d76162416a/30310f5f-672d-4957-9773-37d76162416a1.gif)
全国自学考试C++程序设计试题及答案
全国2010年10月自学考试C++程序设计试题
课程代码:
04737
一、单项选择题(本大题共20小题,每小题1分,共20分)
在每小题列出的四个备选项中只有一个是符合题目要求的,请将其代码填写在题后的括号内。
错选、多选或未选均无分。
1.C++中注释“∥”的有效范围是()
A.从“∥”开始到行尾B.从“∥”开始到下一个“∥”
C.“∥”及其后一个字符D.从“∥”开始到程序尾
2.假定MyClass为一个类,则该类的复制构造函数的声明语句为()
A.MyClass&(MyClassx);B.MyClass(MyClassx);
C.MyClass(MyClass&x);D.MyClass(MyClass*x);
3.下列选项不是C++关键字的是()
A.typedefB.void
C.boolD.inc
4.用于标识十进制常量的前缀或后缀是()
A.无前后缀B.后缀L或l
C.前缀0D.前缀0x
5.设intx=56;intr=x;若cout<<&x;显示0012FF7A,则cout<<&r;输出值为()
A.56B.00l2FF7A
C.0012FF7BD.未知
6.使用下列哪个流格式控制符可设置转换基数为八进制()
A.decB.oct
C.hexD.endl
7.C++中是否允许在类结构中定义函数()
A.不允许B.允许
C.仅允许定义构造函数D.只不允许定义构造函数
8.设函数voidsubone(int&)将形参减1,如有整型变量intk=10,则执行subone(k);后,k的值为()
A.9B.10
C.11D.未知
9.对函数intmax(inta,intb=0,intc=0,intd=0,inte=0);下列调用方式正确的是()
A.intm=max(10,11,12,13,14);B.intm=max(10,,12,13,14);
C.intm=max(10,1l,,13,14);D.intm=max(10,11,12,,14);
10.类MyClass的定义如下:
classMyClass
{
public:
MyClass(){}
MyClass(inti){value=newint(i);}
int*value;
};
若要对value赋值,则下面语句正确的是()
A.MyClassmy;my.value=10;B.MyClassmy;*my.value=10;
C.MyClassmy;my.*value=10;D.MyClassmy(10);
11.包含哪种语句的函数不能声明为内联函数()
A.变量定义B.if……else
C.位操作D.switch
12.声明函数模板的关键字是()
A.inlineB.template
C.constD.short
13.对于类中的成员,使用public修饰,表明该成员的访问权限是()
A.公有的B.私有的
C.保护的D.不可见的
14.一个类中是否可以允许一个无参数构造函数和一个全部都是默认参数的构造函数共存()
A.不允许B.允许
C.无法确定D.视构造函数的函数,可确定
15.析构函数的参数个数为()
A.0个B.1个
C.至少1个D.多于1个
16.非静态成员函数都会有一个隐含指针,它是()
A.self指针B.this指针
C.current指针D.one指针
17.下列访问公有静态成员的方式,错误的是()
A.类名:
:
静态成员名B.对象名.静态成员名
C.对象指针->静态成员名D.对象指针.静态成员名
18.声明友元使用下列哪个关键字()
A.classB.const
C.friendD.virtual
19.派生类继承了基类的()
A.所有成员B.部分成员
C.数据成员D.成员函数
20.基类private成员,通过public派生,其在派生类中为()
A.privateB.protected
C.publicD.不可访问
二、填空题(本大题共20小题,每小题1分,共20分)
请在每小题的空格中填上正确答案。
错填、不填均无分。
21.执行下列代码
doublepi=3.141592;
cout<(1)<程序的输出结果是_________。
22.要使用STL库提供的对数组进行升幂排序算法,在源程序中需要包含的头文件是_________。
23.C++语言中动态回收内存的关键字是_________。
24.执行下列代码
intb=100;
cout<<”Oct:
”<程序的输出结果是_________。
25.C++语言中用于定义一个类的关键字是_________。
26.为了使用C++语言标准程序库提供的string类,在程序中必须使用的文件包含命令是_________。
27.在程序中执行int*a=newint之后,若a为空指针,则表明_________。
28.C++函数中传递对象地址值是使用_________作为参数。
29.将指向对象的指针作为函数参数,形参是对象指针,实参是对象的_________。
30.C++函数有库函数(标准函数)和_________两类。
31.C++中通过_________对类的对象进行初始化。
32.UML中实例连接反映对象之间的静态关系,消息连接描述对象之间的_________关系。
33.若将一个对象说明为常对象,则通过该对象只能调用它的_________成员函数,不能调用其它成员函数。
34.静态成员函数是_________的成员,不是对象的成员。
35.私有继承时,在派生类中基类的protected权限变为_________。
36.若使用一个表达式的含义能解释为访问多个基类中的成员,则这种对基类成员的访问就是不确定的,称这种访问具有_________。
37.如果在类模板的定义中有一个静态数据成员,则在程序运行中会产生_________静态变量。
38.vector类中用于获取向量可以容纳最多对象的个数的方法是_________。
39.C++用于运算符重载的关键字是_________。
40.含有___________的类称为抽象类,它只能作为基类来使用。
三、改错题(本大题共5小题,每小题4分,共20分)
下面的每题中有一处错误,请用下横线标出错误所在行并给出修改意见
41.#include
classtestl{
private:
intx;
public:
testl(){x=2;}
voidset(inta){x=a;}
voidget(){cout<};
classtest2{
private:
intx;
public:
test2(){x=3;}
voidset(inta){x=a;}
voidget(){cout<};
classtest:
publictestl,publictest2{
private:
intx;
public:
voidset(inta){x=a;}
voidgettest(){cout<};
voidmain(){
testa;a.get();
}
42.#include
classtest{
private:
intx,y;
public:
voidtestl(inta,intb){x=a;y=b;}
intmax();
};
inttest:
max(){if(x>y)returnx;elsereturny;}
voidmain(){
testa;
a.testl(1,3);
cout<}
43.#include
voidmain(){
intx=5;
constint*constp=&x;
*p=88;
cout<<*p<}
44.#include
classpoint
{
private:
floatx,y;
public:
f(floata,floatb){x=a;y=b;}
f(){x=O;y=O;}
voidgetx(){cout<voidgety(){cout<}
classpointl
}
private:
floatx,y;
public:
f(floata,floatb){x=a;y=b;}
f(){x=l;y=l;}
voidgetx(){cout<voidgety(){cout<};
main()I
pointa;
a.f();
a.getx();a.gety();
}
45.#include
voidmain(){
stringstrl("wearehere");
cout<}
四、完成程序题(本大题共5小题,每题4分,共20分)
46.在下面程序的下划线处填上正确的数据类型,保证程序具有如下输出结果:
0
17
17,17,17
源程序如下:
#include
usingnamespacestd;
classbase
{
public:
______________num;
base(){}
};
intbase:
:
hum=0;
voidmain()
{
cout<:
num<_________________*p=&base:
:
num;
*p=17;
cout<:
num<basea,b;
cout<<*p<<","<47.在下面横线处填上正确的内容,完成类的定义。
classBase
{
intx;
staticconstintb;
public:
Base(int,int);
constint&a;
};
______________b=15;
Base:
:
Base(inti,intj):
___________{}
48.完成下面程序中的show函数的定义,使其运行结果如下:
Inbase
Inderived
程序清单如下:
#include
usingnamespacestd;
classbase
{
pubhc:
virtualvoidprint()
{
cout<<"Inbase"<}
};
classderived:
publicbase
{
public:
voidprint(){cout<<"Inderived"<};
voidshow(base*pb,void(base:
:
*pf)())
{
_________
}
voidmain()
{
baseb;
derivedd;
show(&b,base:
:
print);
show(&d,base:
:
print);
}
49.在下面程序的下划线处填上正确的语句。
#include
usingnamespacestd;
template
Tf(T&a,T&b,intn)
{
for(inti=0;ia[i]=a[i]+b[i];
returna;
}
voidmain()
{
Inta[5]={1,2,3,4,5};
intb[5]={100,200,3,4,51,*p;
for(inti=0;i<2;i++)
p=_________//调用函数f
for(;pcout<<_________<}
50.下列程序将x,y,z按从小到大的顺序排列并将结果返回给实参,在横线处填入正确的内容。
template
voidorder(_________)
{
_________;
if(x>y){a=x;x=y;y=a;}
if(y>z){a=y;y=z;z=a;}
if(x>y){a=x;x=y;y=a;}
}
五、程序分析题(本大题共2小题,每小题5分,共10分)
51.给出下面程序的输出结果
#include
usingnamespacestd;
template
TF(Tx)
{
returnx>5;
}
voidmain()
{
inta=15;
cout<doubleb=-5.8976;
cout<cout<}
52.给出下面程序的输出结果
#include
usingnamespacestd;
classA
{
private:
intX,Y;
public:
A(intmyx,intmyy){X=myx;Y=myy;}
voidshow(){cout<<"X="<};
classB:
publicA
{
private:
intH,W;
public:
B(intmyx,intmyy,intmyh,intmyw):
A(myx,myy)[H=myh;W=myw;}
voidshow(){cout<<"H="<};
voidmain()
{
Bd(1,2,3,4);
d.show();
}
六、程序设计题(本大题共1小题,共10分)
53.定义队列类模板queue(先进先出),队列的大小由使用者确定。
要求该类模板对外提供如下二种基本操作:
(1)insert(入队列)
(2)front(出队列),用数组来实现
#include
usingnamespacestd;
template
classqueue{
Tx[size];
intcurrent,front,rear;
public:
queue(){current=0;front=0;rear=0;}
....insert(....);
....front(....);
};
请写出两个函数的过程(如果需要形式参数,请给出形参类型和数量,以及返回值类型)