全国高等教育自学考试C++程序设计试题Word文档格式.docx
《全国高等教育自学考试C++程序设计试题Word文档格式.docx》由会员分享,可在线阅读,更多相关《全国高等教育自学考试C++程序设计试题Word文档格式.docx(12页珍藏版)》请在冰豆网上搜索。
C.构造函数不能重载D.任何一类必定有缺省的构造函数
6.下面关于类和对象说法不正确是
A.类由数据与函数组成B.一个对象必属于某个类
C.对象是类的实例D.一个类的对象只有一个
7.下面选项中不是类成员函数的是
A.构造函数B.析构函数
C.友元函数D.静态函数
8.在C++中类之间的继承关系具有
A.自反性B.对称性
C.传递性D.反对称性
9.C++中类的成员默认为
A.publicB.private
C.protectedD.static
10.C++中要实现动态联编,调用虚函数时必须使用
A.基类指针B.类名
C.派生类指针D.对象名
11.下面对析构函数的正确描述是
A.系统不能提供默认的析构函数B.析构函数必须由用户定义
C.析构函数没有参数D.析构函数可以设置默认参数
12.在下面的二维数定义正确的是
A.intary[5][];
B.intary[][5]={{0,1,2}};
C.intary[][5];
D.intary[5,5];
13.以下说法中正确的是
A.C++程序总是从第一个定义的函数开始执行
B.C++程序总是从main函数开始执行
C.C++中函数必须有返回值
D.C++中函数名必须唯一
14.对C++中主函数描述正确的是
A.名称为main,可为多个B.名称不限,可为多个
C.名称为main,必须有且只能有—个D.名称不限,必须有且只能有—个
15.下面声明纯虚函数语句正确的是
A.voidfun()=0;
B.virtualvoidfun()=0;
C.virtualvoiclfun();
D.virtualvoidfun(){};
16.对于拷贝构造函数和赋值操作的关系,正确的描述是
A.拷贝构造函数和赋值操作是完全一样的操作
B.进行赋值操作时,不会调用类的构造函数
C.当调用拷贝构造函数时,类的对象正在被建立并被初始化
D.拷贝构造函数和赋值操作不能在同一个类中被同时定义
17.使用重载函数的目的是
A.共享函数数据B.减少代码量
C.优化运行效率D.提高可读性
18.C++语言对C语言做了很多改进,C++语言相对于C语言的最根本的变化是
A.增加了一些新的运算符
B.允许函数重载,并允许设置缺省参数
C.规定函数说明符必须用原型
D.引进了类和对象的概念
19.假定有“char*p="
Hello"
;
”,若要输出这个字符串的地址值正确的写法为
A.cout<
<
*p;
B.cout<
p;
C.cout<
&p;
D.cout<
(void*)p;
20.从本质上看,引用变量是被引用变量的
A.拷贝B.别名
C.复制D.克隆
非选择题部分
用黑色字迹的签字笔或钢笔将答案写在答题纸上,不能答在试题卷上。
二、填空题(本大题共20小题,每小题1分,共20分)
21.C++程序的编译是以_____为单位进行的。
22.C++语言支持的两种多态性分别是编译时的多态性和____的多态性。
23.重载的运算符保持其原有的操作符个数、_____和结合性不变。
24.在C++中,函数的参数有两种传递方式,它们分别是值传递和____。
25.含有_____的类称为抽象类。
26.C++程序运行时的内存空间可以分成全局数据区,堆区,栈区和_____。
27.对于无返回值函数,定义函数时要用_____修饰函数类型。
28.定义重载函数必须在参数的个数或参数的_____上与其它同名函数不同。
29.拷贝构造函数是在用一个对象初始化另一个对象时被调用,系统缺省的拷贝构造函数
的工作方法是_____。
30.以面向对象方法构造的系统,其基本单位是_____。
31.C++中定义友元函数使用的关键字为____。
32.当一个成员函数被调用时,该成员函数的____指向调用它的对象。
33.类可将实现细节隐藏起来,这种机制称为____。
34.在面向对象的程序设计中,通过封装实现数据隐藏;
通过_____实现代码的复用。
35.在公有继承的中基类数据成员在派生类中的访问权限____。
36.复杂对象可以由简单对象构成,这种现象称为____。
37.如有“char*p="
”,则语句“cout<
*(p+1);
”输出值是_____。
38.基类和派生类的关系称为_____。
39.C++对其对象的数据成员和成员函数的访问是通过_____来限制的。
40.假定x=10,则表达式x<
=10?
20:
30的值为_____。
三、改错题(本大题共5小题,每小题4分,共20分)
下面的每题中有一处错误,请在“答题纸”上将错误所在行写出并给出修改意见。
41.#include<
iostream.h>
classpoint{
private:
floatx,y;
public:
point(floata,floatb){x=a;
y=b;
}
voidf(){x=0;
y=0;
voidgetx(){cout<
x<
endl;
voidgety(){cout<
y<
};
main(){
pointa(3.5);
a.getx();
}
42.#include<
iostream.h>
intx=7;
constint*p=&
x;
*p=99;
cout<
*p<
endl;
43.#include<
classtest{
intx;
y;
voiclf(inta,intb){x=a;
y=b;
intmax(){return(x>
y)?
x:
};
testa;
a.f(1,3);
a.max()<
44.#include<
iostreamh>
test(inta){x=a;
voidset(inta){x=a;
voidget(){cout<
x<
classtestl:
publictest{
public:
testl(inta){x=a;
voidset(inta){x=a;
′′<
45.#include<
classf{
intx,y;
fl(inta,intb){x=a;
voidprint(){cout<
--<
y<
fa;
floatx=1.0,y=2.0;
a.fl(x,y);
a.print();
四、完成程序题(本大题共5小题,每题4分,共20分)
46.在答题纸上填上缺少的部分。
源程序如下:
#include<
iostream>
usingnamespacestd;
classbase
{
inta,b;
public:
base(intx,inty){a=x;
b=y;
voidshow()
cout<
p.a<
″,″<
p.b<
}
voidmain()
{
baseb(78,87);
b.show(b);
47.在答题纸上填上缺少的部分。
#include<
fstream>
myf("
ab.txt"
);
//定义输出流文件,并初始化
<
"
ThisiaaTXTfile"
//向文件输入字符串
myf.close();
48.在下面程序中的答题纸上填上适当的程序,使程序的输出结果如下:
67,90
源程序如下:
pnvate:
priblic:
voidinitxy(inta,intb){x=a;
voidshow(base*p);
inlinevoidbase:
:
show()
p->
"
p->
voidprint(base*p)
p->
show(p);
voidmain()
basea;
a.initxy(67,90);
print();
49.下面程序给出了一个从普通的基类派生出一个模板类的方法,在答题纸上填上缺少的
部分。
usingnamespacestd;
classBase
Base(inta){x=a;
intGetx(){returnx;
voidshowb(){cout<
private:
intx;
};
template<
classT>
classderived:
publicBase
derived(Ta,intb):
____
{y=a;
TGety(){returny;
voidshowd(){cout<
Gets()<
};
voidmain()
{BaseA(458);
A.showb();
derived<
char*>
B("
Itis"
1357);
B.showd();
50.下面程序的运行结果如下:
20,22
60,22
在答题纸上填上缺少的部分。
iostream>
constinta;
staticconstintb;
base(int);
voidShow();
=22;
:
a(i){}//初始化
voidbase:
:
Show()
{cout<
a<
"
b<
baseal(20),a2(60);
al.Show();
a2.Show();
五、程序分析题(本大题共2小题,每小题5分,共10分)
51.给出下面程序的输出结果
usingnamespacestd;
voidsetx(inta){x=a;
intgetx(){returnx;
int*p;
a.setx(15);
p=newint(a.getx());
*p;
52.给出下面程序的输出结果
voidsetx(inta){x=a;
intgetx(){returnx;
basea,b;
a.setx(89);
b=a;
a.getx()<
b.getx()<
六、程序设计题(本大题共10分)
53.在字符串类string中实现一个判断函数,该函数功能是统计某一字符串类对象(仅有单词和空格组成)有多少个单词,同时保存所有单词在字符串中的起始地址(设该字符串不超过100个单词)
#include<
string>
classstr{
strings;
intn,a[100],j,1;
str(string&a){s=a;
n=0;
j=0;
l=0;
....test(....);
int*geta(){returna;
请写出test函数的过程(如果需要形式参数,请给出形参类型和数量,以及返回值类型)