全国高等教育自学考试C++程序设计试题Word格式文档下载.docx
《全国高等教育自学考试C++程序设计试题Word格式文档下载.docx》由会员分享,可在线阅读,更多相关《全国高等教育自学考试C++程序设计试题Word格式文档下载.docx(16页珍藏版)》请在冰点文库上搜索。
10.关于对象的性质,下列描述错误的是()
A.同一类对象之间可相互赋值B.不能使用对象数组
C.对象可以用作函数参数D.一个对象可以用作另一个类的成员
11.类的私有成员可在哪里被赋值()
A.类体中B.该类的成员函数中C.A和BD.以上都不是
12.设存在数组a,其长度为Len,则下列哪个泛型算法用于反转a中各元素()
A.reverse(a,a+Len);
B.sort(a,a+Len);
C.find(a,a+Len,value);
13.用于标识八进制常量的前缀或后缀是()
A.无B.后缀L或1C.前缀零D.前缀Ox
14.派生类中继承的基类成员初始化如何进行()
A.由派生类构造函数调用基类的构造函数进行B.由派生类构造函数进行
C.由基类构造函数进行,无需派生类构造函数调用D.以上皆不正确
15.对于多重继承,下列描述正确的是()
A.所有基类使用相同的派生方式B.每个基类可使用不同派生方式
C.只能是public派生D.只能是protected派生
16.下列关于类的权限描述错误的是()
A.类本身的成员函数可以访问自身的任何成员
B.类的对象可以访问该类的所有成员
C.普通函数不能直接访问类的公有成员,必须通过成员函数对其访问
D.一个类可以将另一个类的对象作为成员
17.运算符delete与哪个函数一起运行()
A.构造函数B.析构函数C.主函数D.不与任何函数一起工作
18.一个类可以获得另一个类的特性的机制称为()
A.抽象B.封装C.继承D.多态性
19.使用下列哪个格式控制符可设置转换十六进制为十进制()
A.decB.octC.hexD.endl
20.对引用调用描述正确的是()
A.分配新存储空间B.修改已存储空间的名称为引用名
C.引用名与已存在存储空间无任何关联
D.将引用名标识符与一块已存在储区域相关联,没有分配新存储空间
二、填空题(本大题共20小题,每小题1分,共20分)
21.公共派生中,基类的公有成员在派生类中是______。
22.若要使用标准输入流机制从键盘输入一个整数赋给整型变量a,相应的C++语句是______。
23.UML中对象行为之间的动态关系是通过对象行为之间的依赖关系表现的,称之为______。
24.C++函数中按引用调用传递参数时使用______作为参数。
25.在C++中除具有______语句和switch语句的函数外,其它函数都可以说明为内联函数。
26.C++中规定模板以______关键字和一个形参表示开头。
27.构造函数不能被继承,一个派生类只能调用它的______基类的构造函数。
28.vector类中用于获取存放的元素个数的方法是______。
29.C++中istream类的直接基类是______。
30.要关闭一个文件输出流对象myFile,所用的C++语句是______。
31.执行下列代码
doublepi=3.141592
cout<
<
setprecision
(2)<
pi;
程序的输出结果是______。
32.在私有派生中,基类的权限为private的成员,在派生类中______。
33.C++总共有3种文件流,分别是输入文件流、输出文件流和______。
34.C++使用流进行输入输出,其中能捕获键盘输入的对象是______。
35.在vector类中删除向量中最后一个对象的方法是______。
36.函数重载可使一个函数名具有多种功能,称这种特性为______。
37.C++语言对C语言做了很多改进,C++语言相对于C语言的最根本的变化是引进了______概念。
38.______指令定义一个标识符及串,在源程序中每次遇到该标识符时,编译器均用定义的串代替之。
39.在C++标准输出方式中,要设置输出数据字段宽度width所使用的操控符是______。
40.设有定义intx;
floaty;
,则10+x+y值的数据类型是______。
三、改错题(本大题共5小题,每小题2分,共10分)
下面的类定义中有一处错误,请用下横线标出错误所在行并给出修改意见。
41.#include<
iostream.h>
main(){
intx=9,y=8,z=7;
constint*p=z;
*p<
endl;
}
42.#include<
intx=8,y=6;
constint*constp=&x;
p=&y;
*p<
43.#include<
folatp;
p=newfolat[5];
for(inti=0;
i<
5;
i++)
{cin>
>
*(p+i);
*(p+i)<
deletep;
44.template<
classT>
Tf(Tx){
Ty;
y=x+T;
returny;
45.#include<
classpoint{
intx;
public:
voidinit(inta){x=a;
intgetx(){returnx;
voidsetx(inta){x=a;
};
pointa;
a.init(20,30);
a.getx()<
四、完成程序题(本大题共5小题,每小题4分,共20分)
46.在下面程序的下划线处填上正确的语句,使其得到下面的输出结果。
x=2,y=3
#include<
classSample
{
intx,y;
Sample(){
x=y=0;
Sample(inta,intb){
x=a;
(__________)
voiddisp()
"
x="
x<
,y="
y<
}(___________)
voidmain()
Samples(2,3),*p=&s;
p->
disp();
47.在下划线处填上适当的语句,使程序的输出结果如下:
n=30
iostream.h>
template<
classT>
Tn;
Sample(){}
Sample(Ti){_________}
Sample<
T>
&
operator+(constSample<
);
voiddisp(){cout<
n="
n<
:
&s)
staticSample<
temp;
returntemp;
int>
s1(10),s2(20),s3;
s3=s1+s2;
s3.disp();
48.在下划线处填上适当的语句,使程序的输出结果如下:
12345678910
intA[10][10];
int&
operator()(int,int);
Sample:
:
operator()(intx,inty)
returnA[x][y];
voidmain()
Samplea;
inti,j;
_________
for(j=0;
j<
10;
j++)
for(i=0;
l0;
a(i,1)<
"
;
49.在下划线处填上适当的句子,完成函数的定义。
Sample(){};
_________{x=a;
_________{x=a.x+++10;
Samples1
(2),s2(s1);
s1.disp();
s2.disp();
50.输入一个字符串,将其逆序后输出。
iostream>
usingnamespacestd;
chara[50];
memset(a,0,sizeof(a));
inti=0,j;
chart;
cin.getline(a,50,'\n';
for(i=0,j=strlen(a)-1;
_________;
i++,j――)
t=a[i];
a[j]=t;
a<
五、程序分析题(本大题共4小题,每小题5分,共20分)
51.(给出下面程序的输出结果
classexample
inta;
example(intb){a=b++;
voidprint(){a=a+1;
voidprint()const{cout<
examplex(3);
constexampley
(2);
x.print();
y.print();
52.给出下面程序的输出结果
Sample(){x=y=0;
Sample(inta,intb){x=a;
y=b;
~Sample()
if(x==y)
x=y"
else
x!
=y"
voiddisp()
Samplesl(2,3);
s1.disp();
53.给出下面程序的输出结果
intn;
staticintsum;
Sample(intx){n=x;
voidadd(){sum+=n;
,sum:
sum<
intSample:
sum=0;
Samplea
(2),b(3),c(5);
a.add();
a.disp();
b.add();
b.disp();
c.add();
c.disp();
54.给出下面程序的输出结果
classA{
private:
friendclassB;
A(intval=0):
data(val),use
(1){}
intuse,data;
classB{
A*pa;
B(intval=0):
pa(newA(val)){}
~B(){if(--pa->
use==0)deletepa;
B(B&rhs){++rhs->
use;
pa=rhs.pa;
B&operator=(B&rhs);
A*operator->
(){returnpa;
voidDisplay(){
data="
pa->
data
,use="
use<
B&B:
operator=(B&rhs)
if(this==&rhs)return*this;
if(--pa->
use==0)deletepa;
++rhs->
return*this;
intmain(){
Bb1
(1),b2(b1),b3(3);
b1.Display();
b2.Display();
b3.Display();
b3=b1;
return0;
六、程序设计题(本大题共1小题,每小题10分,共10分)
55.已知一个student类,包括学姓名,成绩和等级,不含任何成员函数.process为学生信息处理类.
classstudent{
charname[10];
intdeg;
charlevel[7];
friendclassprocess:
student(charna[],intd){strcpy(name,na);
deg=d;
};
classprocess{
voidtrans(students[]){…}//根据学生成绩计算学生等级(优大于89分,良大于79分,中大于69分,及格大于59分,不及格小于60分).
voiddisp(students[]){...}//根据成绩降序打印所有学生信息
要求实现process类中的两个函数: