自考C++试题及答案9套合集34.docx
《自考C++试题及答案9套合集34.docx》由会员分享,可在线阅读,更多相关《自考C++试题及答案9套合集34.docx(30页珍藏版)》请在冰豆网上搜索。
自考C++试题及答案9套合集34
自考C++试题及答案9套合集34.
全国自考C++程序设计模拟试卷(三)
一、单项选择题(本大题共20小题,每小题1分,共20分)在每小题列出的四个备选项中
只有一个是符合题目要求的,请将其代码填写在题后的括号内。
错选、多选或未选均无
分。
1.设有定义inti;doublej=5;,则10+i+j值的数据类型是()
A.int
B.double
C.float
D.不确定
2.要禁止修改指针p本身,又要禁止修改p所指向的数据,这样的指针应定义为()
A.constchar*p=“ABCD”;
B.char*constp=“ABCD”;
C.charconst*p=“ABCD”;
D.constchar*constp=“ABCD”;
3.类的构造函数被自动调用执行的情况是在定义该类的()
A.成员函数时
B.数据成员时
C.对象时
D.友元函数时
4.已知类A是类B的友元,类B是类C的友元,则()
A.类A一定是类C的友元
B.类C一定是类A的友元
C.类C的成员函数能够访问类B的对象的任何成员
D.类A的成员函数能够访问类B的对象的任何成员
5.假定一个类的构造函数为“A(inti=4,intj=0){a=i;b=j;}”,则执行“Ax
(1);”语
句后,x.a和x.b的值分别为()
A.1和0
B.1和4
C.4和0
D.4和1
6.关于this指针使用说法正确的是()
A.保证每个对象拥有自己的数据成员,但共享处理这些数据的代码
B.保证基类私有成员在子类中能够被访问。
C.保证基类保护成员在子类中能够被访问。
D.保证基类公有成员在子类中能够被访问。
7.所谓多态性是指()
A.不同的对象调用不同名称的函数
B.不同的对象调用相同名称的函数
C.一个对象调用不同名称的函数
D.一个对象调用不同名称的对象
8.友元关系不能()
A.提高程序的运行效率
B.是类与类的关系
C.是一个类的成员函数与另一个类的关系
D.继承
9.语句ofstreamf(“TEMP.DAT”,ios:
:
app|ios:
:
binary)?
的功能是建立流对象f,试图打
开文件TEMP.DAT并与之连接,而且()
A.若文件存在,将文件写指针定位于文件尾;若文件不存在,建立一个新文件
B.若文件存在,将其置为空文件;若文件不存在,打开失败
C.若文件存在,将文件写指针定位于文件首;若文件不存在,建立一个新文件
D.若文件存在,打开失败;若文件不存在,建立一个新文件
10.构造函数不具备的特征是()
A.构造函数的函数名与类名相同
B.构造函数能够重载
C.构造函数能够设置默认参数
D.构造函数必须指定类型说明
11.在公有继承的情况下,基类的公有或保护成员在派生类中的访问权限()
A.受限制
B.保持不变
C.受保护
D.不受保护
12.假定一个类的构造函数为A(intaa,intbb){a=aa--;b=a*bb;},则执行Ax(4,5);语句后
,x.a和x.b的值分别为()
A.3和15
B.5和4
C.4和20
D.20和5
13.C++对C语言做了很多改进,即从面向过程变成为面向对象的主要原因是()
A.增加了一些新的运算符
B.允许函数重载,并允许设置缺省参数
C.规定函数说明符必须用原型
D.引进了类和对象的概念
14.在类中说明的成员能够使用关键字的是()
A.public
B.extern
C.cpu
D.register
15.C++语言中所有在函数中定义的变量,连同形式参数,都属于()
A.全局变量
B.局部变量
C.静态变量
D.函数
16.在私有继承的情况下,基类成员在派生类中的访问权限()
A.受限制
B.保持不变
C.受保护
D.不受保护
17.使用地址作为实参传给形参,下列说法正确的是()
A.实参是形参的备份
B.实参与形参无联系
C.形参是实参的备份
D.实参与形参是同一对象
18.C++的继承性允许派生类继承基类的()
A.部分特性,并允许增加新的特性或重定义基类的特性
B.部分特性,但不允许增加新的特性或重定义基类的特性
C.所有特性,并允许增加新的特性或重定义基类的特性
D.所有特性,但不允许增加新的特性或重定义基类的特性
19.对于int*pa[5];的描述,正确的是()
A.pa是一个指向数组的指针,所指向的数组是5个int型元素
B.pa是一个指向某个数组中第5个元素的指针,该元素是int型变量
C.pa[5]表示某个数组的第5个元素的值
D.pa是一个具有5个元素的指针数组,每个元素是一个int型指针
20.以下基类中的成员函数表示纯虚函数的是()
A.virtualvoidtt()=0
B.voidtt(int)=0
C.virtualvoidtt(int)
D.virtualvoidtt(int){}
二、填空题(本大题共20小题,每小题1分,共20分)请在每小题的空格中填上正确答
案。
错填、不填均无分。
1.单目运算符作为类成员函数重载时,形参个数为__0_个。
2.抽象类中至少要有一个_纯虚__函数。
3.设类A有成员函数voidf(void);若要定义一个指向类成员函数的指针变量pf来指向f,该
指针变量的声明语句是:
_void(A:
:
*pf)(void);__。
4.执行下列程序
doublea=3.1415926,b=3.14;
cout<程序的输出结果是3.1416,3.14___。
5.vector类中用于删除向量中的所有对象的方法是___。
6.重载的运算符保持其原有的_操作数__、优先级和结合性不变。
7.编译时的多态性经过_重载__函数实现。
8.基类的公有成员在派生类中的访问权限由_继承方式__决定。
9.假设类X的对象x是类Y的成员对象,则“YObj”语句执行时,先调用类_X__的构造函数。
10.下列程序段的输出结果是___。
11.下列程序段的输出结果是___。
12.C++中ostream的直接基类_ios__。
13.intn=0;
while(n=1)n++;
while循环执行次数是_无限次__。
14.C++中有两种继承:
单继承和_多重继承__。
15.在C++中,利用向量类模板定义一个具有10个int的向量A,其元素均被置为1,实现此操作
的语句是___。
16.vector类中向向量尾部插入一个对象的方法是___。
17.C++语言中如果调用函数时,需要改变实参或者返回多个值,应该采取引用___方式。
18.若函数的定义处于调用它的函数之前,则在程序开始能够省去该函数的_声明__语句。
19.在C++中有两种参数传递方式:
传值和_引用__。
20.将指向对象的引用作为函数的形参,形参是对象的引用,实参是_对象名__。
三、改错题(本大题共5小题,每小题4分,共20分)
1.classABC
{inta;
public:
ABC(intaa)a(aa){}ABC(intaa):
a(aa){};
};
2.#include
classAton
{intX,Y;
protected:
intzx,zy;
public:
voidinit(inti,intj){zx=i;zy=j;}
Aton(inti,intj,intn=0,intm=0)
{X=i,Y=j,zx=m,zy=n;
}
添加inlineintX(){returnX};
};
voidmain()
{AtonA(25,20,3,5);
A.init(5,9);
cout<
3.#include
classBas
{public:
~Bas(){cout<<"Basconstruct"<virtualvoidf()=0;
};
classDev:
publicBas
{public:
~Dev(){cout<<"Basconstruct"<virtualvoidf(){cout<<"Dev:
:
f"<};
voidmain()
{Bas*a=newBas();Bas*a;
Devp;
a=&p;
a->f();
}
4.以下程序实现交换a,b变量的值,请用下横线标出错误所在行并给出修改意见。
#include
voidswap(int&a,int&b)
{a=a+b;
b=a-b;
a=a-b;
}
voidmain()
{inta=19,b=15;
cout<<"a="<swap(&a,&b);swap(a,b);
cout<<"a="<}
5.#include
voidmain()
{inti(3),j(8);
int*constp=&i;int*p=&i;
cout<<*p<p=&j;
cout<<*p<}
四、完成程序题(本大题共5小题,每小题4分,共20分)
1.在下面程序横线处填上适当内容,使程序执行结果为:
"hello,andylin"。
#include
#include
usingnamespacestd;
classmystring
{public:
char*pdata;
mystring(intlen)
{pdata=newchar[len+1];
}
~mystring()
{deletepdata;}
voidshow(){cout<};
voidfun(mystring**array,intlen)
{mystring*old=*array;
_*array=newmystring(len)______;
memcpy(*array,old,len);
}
voidmain()
{mystringstr(20);
mystring*pstr=&str;
mystring**ppstr=&pstr;
strcpy(str.pdata,"hello,andylin");
fun(ppstr,20);
str.show();_______
}
2.在下面程序横线处填上适当字句,完成类的定义。
classline;
classbox
{private:
intcolor;
intupx,upy;
intlowx,lowy;
public:
friendintsame_color(linel,boxb);
voidset_color(intc){color=c;}
voiddefine_