04737全国高等教育自学考试C++程序设计试题.docx
《04737全国高等教育自学考试C++程序设计试题.docx》由会员分享,可在线阅读,更多相关《04737全国高等教育自学考试C++程序设计试题.docx(14页珍藏版)》请在冰豆网上搜索。
04737全国高等教育自学考试C++程序设计试题
全国2011年10月高等教育自学考试
C++程序设计试题
课程代码:
04737
一、单项选择题(本大题共20小题,每小题1分,共20分)
在每小题列出的四个备选项中只有一个是符合题目要求的-请将其代码填写在题后的括号内。
错选、多选或未选均无分。
1.C++中注释“/*”的有效范围是()
A.从“/*”开始到行尾B.从“/*”开始后不终止
C.从“/*”开始到“//”为止D.从“/*”开始到“*/”为止
2.如想使用std命名空间,正确的程序语句是( )
A.usingstd;B.namespacestd,
C.usingnamespace;D.usingnamespacestd;
3.下列选项中不是C++关键字的是( )
A.boolB.int
C.floatD.var
4.用于标识长整型常量的前缀或后缀是( )
A.无前后缀B.后缀L或l
C.前缀零D.前缀0x
5.对于new类型名[size]描述正确的是( )
A.申请可以存储size个字节的空间
B.申请可以存储1个该数据类型的空间
C.申请可以存储size个该数据类型对象的空间
D.申请可以存储1个字节的空间
6.使用下列哪个流格式控制符可以设置转换基数为十六进制( )
A.decB.oct
C.hexD.endl
7.构造函数用于()
A.定义对象B.初始化对象
C.清除对象D.普通计算
8.设函数voidswap(int,int)将交换两形参数值,如有两整型变量inta=10;intb=15,则执行swap(a,b);之后,a,b值分别为( )
A.15,10B.15,15
C.10,15D.10,10
9.设函数voidsubone(int)将形参值减1,如有整形变量intb=10;则执行subone(b)后,b的值为( )
A.9B.10
C.11D.未知
10.C++中函数返回值类型不可以是( )
A.引用B.指针
C.结构D.数组
11.声明函数intFunc(inta=0,intb=3,intc=4)相当于声明了几个函数形式( )
A.1B.2
C.3D.4
12.C++中专门定义一个仅在模板中使用的参数类型的关键字是( )
A.constB.inline
C.shortD.typename
13.对于类中的成员,使用private修饰,表明该成员的访问权限是( )
A.公有的B.私有的
C.保护的D.不可见的
14.使用new创建的对象,对其生命周期描述正确的是( )
A.由系统决定B.由用户控制
C.全局生命周期D.永久存在
15.析构函数被调用的时间点是( )
A.对象被创建时B.对象被销毁时
C.不会被调用D.主函数被调用时
16.对象的构造函数调用顺序取决于( )
A.对象成员在初始化列表中给出的顺序
B.对象成员在类中声明的顺序
C.对象成员与在初始化列表中顺序和类中声明顺序均有关
D.随机顺序
17.下列对静态成员函数描述正确的是( )
A.静态成员函数中可使用1个this指针
B.静态成员函数中不能使用this指针
C.静态成员函数中可使用多个this指针
D.静态成员函数中只可使用1个that指针
18.友元的声明可出现在()
A.类的私有部分B.类的公有部分
C.类的保护部分D.类的任何部分
19.在下列派生中,子类和父类间是isa关系的是( )
A.privateB.protected
C.publicD.publish
20.面向对象不仅进行功能抽象,还要进行( )
A.动态抽象B.消息抽象
C.数据抽象D.算法抽象
二、填空题(本大题共20小题,每小题1分,共20分)
请在每小题的空格中填上正确答案。
错填、不填均无分。
21.在调用函数f1()的过程中,又调用了函数f1(),这种调用称为________调用。
22.C++中重载“+”运算符的函数名是________。
23.设为类A添加一个纯虚函数Fun,其第一个参数类型为整型,第二个参数类型为字符型,函数返回值类型为整型。
实现此操作的语句是________。
24.C++程序的头文件和源程序文件扩展名分别为________和.cpp。
25.在C++中,利用向量类模板定义一个具有20个int类型的向量B,实现此操作的语句是:
________。
26.通过私有派生,基类的私有和不可访问成员在派生类中是不可访问的,而公有和保护成员这时就成了派生类的________。
27.字符串类型的变量一般用________和字符数组类型的变量表示。
28.在一个C++程序中,每个变量都必须遵循________的原则。
29.在常成员函数里不能更新对象的数据成员,也不能调用该类中没用________关键字修饰的成员函数。
30.UML是一种可视化建模语言,主要用于面向对象的________和建模。
31.复制构造函数采用拷贝方式使用已有对象来建立新对象,又称为________函数。
32.对于C++类中的成员,若未使用访问权限关键字进行说明,默认的权限是________。
33.对象的行为是定义在对象属性上的一组________的集合。
34.设intmax(int,int)表示计算两个整数中的最大值,则执行语句“cout<35.函数fun的返回值是字符指针类型,该函数有两个参数,其中一个参数是字符类型,另一个参数是int类型引用,声明函数fun的原型的语句为________。
36.string类中用于交换两个字符串对象的值的成员函数为________。
37.无论变量x和y是整型还是浮点类型,x*y都表示这两个变量的积,这是典型的________的例子。
38.执行下列代码
inta=29,b=1001;
cout<程序输出结果是:
________。
39.在C++中,赋值表达式y=x++的含义是________。
40.设有如下定义:
intx;若要将整型变量y定义为变量x的引用,则应使用的语句是________。
三、改错题(本大题共5小题,每小题4分,共20分)
下面的每题中有一处错误,请用下横线标出错误所在行并给出修改意见
41.#include
voidmain(){
float*p;
p=newfloat[5];
for(i=0;i<5;i++)
{cin>>*(p+i);cout<<*(p+i)<delete[]p;
}
42.#include
template
classf{
private:
Tx,y;
public:
voidfl(Ta,Tb){x=a;y=b;}
Tmax(){retum(x>y)?
x:
y;}
};
voidmain(){
fa;
a.fl(3.5,3.8);
cout<}
43.#include
classtest{
private:
staticintx;inty;
public:
voidtestl(inta,intb){x=a;y=b;}
};
voidmain(){
testa;
a.testl(2,3);
}
44.#include
classf{
private:
floatx,y;
public:
voidfl(floata,floatb){x=a;y=b;}
f(){x=0;y=0;}
voidmove(floata,floatb){x=x+a;y=y-b;}
voidget(){cout<};
voidmain(){
f*p,a;
a.f1(1.6,3.8);
p=&a;
p.get();
}
45.#include
classpoint{
intx;
public:
voidinit(inta){x=a;}
intgetx(){returnx;}
voidsetx(inta){x=a;}
};
voidmain(){
pointa;
a.init(20,30);
cout<}
四、完成程序题(本大题共5小题,每小题4分,共20分)
46.完成下面类中成员函数的定义。
classtest
{
private:
intnl;
floatfl;
public:
test(int,floatf);
test(test&);
};
test:
:
test(________)
{nl=n;fl=f;}
test:
:
test(test&t)
{nl=t.nl;
fl=________;}
47.在下面程序中的下划线处填上适当的语句,使程序的输出结果如下:
11,77
11,77
源程序如下:
#include
usingnamespacestd;
classbase
{
private:
intx,y;
public:
voidinitxy(inta,intb){x=a;y=b;}
voidshow()
{________}
};
voidmain()
{
basea,b;
__________
a.show();
b=a;
b.show();
}
48.在下面程序中的下划线处填上适当的程序,使程序的输出结果如下:
x=1,y=2
x=30,y=40
源程序如下:
#include
classSample
{
intx,y;
public:
Sample(){x=y=0;}
Sample(inti,intj){x=i;y=j;}
voidcopy(Sample&s);
voidsetxy(inti,intj){x=i;y=j;}
voidprint(){cout<<"x="<};
voidSample:
:
copy(________)
{
x=s.x;y=s.y;
}
voidfunc(________)
)
{
s1.setxy(10,20);
s2.setxy(30,40);
}
voidmain()
{
Samplep(1,2),q;
q.copy(p);
func(p,q);
p.print();
q.print();
}
Sample&s
}
49.在下面程序的下划线处填上正确的语句,使其得到下面的输出结果。
20
21
22
a[0]=20
a[1]=21
a[2]=22
程序清单如下:
#include
usingnamespacestd;
classbase
{
private:
intx;
public:
voidsetx(inta){x=a;}
intgetx(){returnx;}
};
voidmain()
{
basea[3],*p;
a[0].setx(20);
a[1].setx(21);
a[2].setx(22);
for(p=a;p____________
for(inti=0;i<=2;i++)
____________
}
50.在下面程序中的下划线处填上适当的程序,使程序的输出结果如下:
x=2,y=3
源程序如下:
#include
classSample
{
intx,y;
public:
Sample(){x=y=0;}
Sample(________){x=a;y=b;}
voiddisp()
{
cout<<"x="<}
};
voidmain()
{
Samples(2,3),________
P->disp();
}
五、程序分析题(本大题共2小题,每小题5分,共10分)
51.请给出下面程序的输出结果
#include
usingnamespacestd;
voidfun()
{
staticintn=25;
n--;
cout<<"n="<}
voidmain()
{
for(inti=0;i<=2;i++)
fun();
}
52.请给出下面程序的输出结果
#include
usingnamespacestd;
classpoint
{
intnum;
public:
point(intn)
{cout<<"Initializing"<};
voidmain()
{
pointA(88);
cout<<"Enteringmain"<}
六、程序设计题(本大题共l小题,共10分)
53.给定两个字符串对象S,P(P的长度小于S),实现一判断函数find,检测S是否完全包含P(串P是S的子串),若包含则返回P第一个字符在串S中的起始地址,否则返回-1。
#include
#include
classstr{
strings,p;
public:
str(string&a,string&b){s=a;p=b;}
...find(...);
};
请写出函数的过程(如果需要形式参数,请给出形参类型和数量,以及返回值类型)