全国高等教育自学考试 C++程序设计试题及答案Word文档格式.docx
《全国高等教育自学考试 C++程序设计试题及答案Word文档格式.docx》由会员分享,可在线阅读,更多相关《全国高等教育自学考试 C++程序设计试题及答案Word文档格式.docx(14页珍藏版)》请在冰豆网上搜索。
intb=15;
在执行max(a,b)++后,a,b值分别为()
A.10,15B.11,15
C.10,16D.1l,16
10.包含哪种语句的函数不能声明为内联函数()
A.循环B.变量自增自减
C.if...else…D.变量声明
11.定义函数模板中使用的参数类型标识符需使用下列哪组符号括起来()
A.<
>
B.“”
C.()D.{}
12.一个类拥有多个构造函数,则这些构造函数间为()
A.重载关系B.重复关系
C.拷贝关系D.无关系
13.对于拷贝构造函数point:
:
point(point&
p),下列说明正确的是()
A.该函数只能访问P的私有成员B.该函数不能访问P的公有成员
C.该函数可以访问P的私有和公有成员D.该函数不能访问P的成员
14.使用delete[]删除对象数组时,描述正确的是()
A.数组中各元素都调用析构函数B.数组中各元素都调用构造函数
C.不调用析构函数D.只有首元素调用析构函数
15.下列哪个指令属于条件编译指令()
A.#elifB.#error
C.#pragmaD.#include
16.设类Test中存在成员staticintx,则下列哪种初始化方式是正确的()
A.Test:
intx=25;
B.intx=25;
C.intTest:
x=25;
D.intTestx=25;
17.下列关于友元的描述错误的是()
A.成员函数不可作友元B.类可以作友元
C.普通函数可以作友元D.静态函数可以作友元
18.在继承中,派生类拥有的基类个数为()
A.0个B.1个
C.多个D.至少1个
19.基类中的protected成员,通过public派生,其在派生类中的可见性为()
A.不可访问B.private
C.protectedD.public
20.下列哪个不是面向对象的关键要素()
A.抽象性B.结构性
C.封装性D.多态性
二、填空题(本大题共20小题,每小题1分,共20分)
请在每小题的空格中填上正确答案。
错填、不填均无分。
21.在STL库中用于实现数组内容反转的函数是______。
22.若要使用C++标准类库,需要指定相应的命名空间,所用的语句是______。
23.C++语言中的整数常量有4种描述类型:
十进制常量、长整型常量、八进制常量和______。
24.声明一个名为a的整型引用变量所使用的语句是______。
25.重载的运算符仍保留原有的优先级、______和语法结构。
26.执行代码
intb=100;
cout<
<
hex<
b:
程序的输出结果是______。
27.带有纯虚函数的类称为抽象类,它只能作为______来使用。
28.使用______作为函数参数,实参对象和形参对象代表同一对象,改变形参对象的值就是改变实参对象的值。
29.UML中对象之间的静态关系是通过对象属性之间的连接反映的,称之为______。
30.如果一个模板声明列出多个参数,则多个参数之间必须使用逗号隔开,每个参数都必须重复使用关键字______。
31.C++类的构造函数名与______名称一样,且没有返回值。
32.C++规定,当一个成员函数被调用时,系统自动向它传递一个隐含的参数,该参数是一个指向调用该函数的对象的指针,该指针被称为______指针。
33.声明一个常成员函数Fun,其返回类型为char,第一个参数类型为int,第二个参数类型为double,函数Fun的声明原型是______。
34.C++语言中的“聚合”隐含了两种实现方式,一种是______,另一种是用一个类的对象作为一种广义的数据类型来定义整体对象的一个属性。
35.简单成员函数是指声明中不含const、______和static关键字的函数。
36.在派生类中继承的基类成员的初始化,需要由派生类的构造函数调用基类的______来完成。
37.在C++中,利用向量类模板定义一个具有20个int的向量,其所有元素被置为1,实现此操作的语句是______。
38.vector类中用于获取无需再次分配内存就能容纳的对象个数的方法是______。
39.动态联编是程序运行到需要的语句处才动态确定的,这称为______多态性。
40.C++重载“=”运算符的函数名是______。
三、改错题(本大题共5小题,每小题4分,共20分)
下面的每题中有一处错误,请用下横线标出错误所在行并给出修改意见
41.#include<
iostream.h>
#definePI3.14;
voidmain()
{
doublei;
intr;
″输入圆形半径:
″;
cin>
r;
i=2*PI*r;
″圆形周长=″<
i<
endl;
i=PI*r*r;
″圆形面积=″<
}
42.#include<
classA
private:
intx,y;
public:
A(inta=0,b=1);
voidShow();
};
A:
A(inta,intb)
x=a;
y=b;
voidA:
Show()
″x=″<
x<
″y=″<
y<
43.#include<
unsignedcharvar;
A(unsignedcharx){
var=x:
voidprint(){
″var=″<
var;
};
Aa(″x″);
a.print();
44.#include<
iostream.h>
classClass
voidprint(inta,intb){
<
″int:
″<
a<
endl;
cout<
b<
voidprint(char*a,char*b){
″string:
″string:
voidprint(char*a,unsignedintb){
Classcls;
cls.print(10,20);
cls.print(′c′,1);
cls.print(′x′,′y′);
cls.print(″Hello!
″,0);
45.#include<
iostream.h>
intval;
voidfunc(inta)
val=a;
Class*cls;
cls->
func(10);
四、完成程序题(本大题共5小题,每题4分,共20分)
46.将下面程序补充完整,使程序计算100以内所有可被7整除的自然数之和。
#include<
intx=1;
intsum=0;
while(true)
if(x>
100){
______;
if(______){
sum=sum+x;
x++;
sum<
47.将下面程序补充完整,使程序执行结果为9。
classClass{
______{
returnx*x;
intx;
Classa(3);
a.get()<
48.将下面程序补充完整,使程序正确的初始化私有变量var及释放资源。
int*var;
Class(intnum);
~Class();
Class:
Class(intnum)
_______;
~Class()
49.将下面程序补充完整,使程序的输出结果为:
ClassA:
Print
ClassB:
程序如下:
#include<
classBase
virtualvoidPrint()const{
″Base:
Print″<
classClassA:
publicBase
voidPrint()const{cout<
″ClassA:
}
classClassB:
″ClassB:
voidPrint(______)
______;
ClassAa;
ClassBb;
Print(a);
Print(b);
50.下列程序的运行结果如下:
x=22,y=22
根据结果将程序补充完整。
template<
______>
voidf(______)
if(sizeof(T1)>
sizeof(T2))
x=(T1)y;
else
y=(T2)x;
voidmain(){
doublex=134.2;
inty=22;
f(x,y);
″,y=″<
y;
五、程序分析题(本大题共2小题,每小题5分,共10分)
请给出下面程序的输出结果
51.#include<
public:
staticintvar;
Class()
var++;
intClass:
var=0;
″Class:
var=″<
Class:
:
var<
endl;
Classcl;
″cl.var=″<
cl.var<
endl;
Classc2,c3;
″c2.var=″<
c2.var<
52.#include<
A();
voidShow();
~A();
private:
staticintc;
intA:
c=0;
A:
:
A()
″constructor.″<
c+=10;
voidA:
″c=″<
c<
~A()
″destructor.″<
Aa,b;
a.Show();
b.Show();
六、程序设计题(本大题共l小题,共10分)
53.利用LOCATION类,使用继承定义圆类CIRCLE,圆由圆心和半径构成。
提供得到圆心坐标和半径的成员函数、以及计算圆的周长和面积的成员函数。
在主程序中创建两个圆A和B,圆心坐标分别为(0,3)、(3,7),按如下格式输出两个圆的圆心坐标、周长和面积,并计算和输出两个圆的圆心之间的距离。
(xl,y1,r1),Girth=g1,Area=a1
B:
(x2,y2,r2),Girth=g2,Area=a2
A(xl,y1),B(x2,y2),Distance=d
定义LOCATION类,该类没有“继承”等现象。
注意二维坐标点之间的距离公式。
classLOCATION{
doublex,y;
virtualdoublegetx()const{returnx;
};
virtualdoublegety()const{returny;
virtualdoubledist(LOCATION&
s)const;
LOCATION(doublex,doubley):
x(x),y(y){};
doubleLOCATION:
dist(LOCATION&s)const{
doublexd=s.x—x,yd=s.y—y;
returnsqrt(xd*xd+yd*yd);
2010.1答案
一、选择题
12345678910
BDBDDDBCCA
11121314151617181920
AACAACADCB
二、填空题
21reverse22usingnamespacestd;
23十六进制常量24intx;
int&
a=x;
25运算数
266427基类28对象的引用29实例连接30class31类32this
33charFun(int,double);
34独立定义35volatile36构造函数
37vector<
int>
v(20,1);
38capacity()39运行时40operator=
三、改错题
41#definePI3.14;
错误原因:
宏定义中PI原样代替3.14;
使i=2*PI*r;
语句错误
修改意见:
将该命令修改为:
#definePI3.14
A(inta=0,b=1)错误原因:
第二个参数b定义未给出参数类型
A(inta=0,intb=1)
43Aa(“x”);
a对象定义,需调用A类构造函数,
而该函数形参为char类型,实参是字符串,类型不一致
将Aa(‘x’);
44本题可以正确编译、执行,估计欲考察内容cls.print(‘c’,1);
与cls.print(‘x’,‘y’);
此时print函数调用对应的定义为voidprint(inta,intb){...}
45Class*cls
;
cls->
func(10)
cls是指针变量,未指向任何对象,不能调用func函数
定义一个Class对象,用cls指向该对象,如:
Classc;
Class*cls=&
c;
四、完成程序
46breakx%7==047Class(inta)intget()
48var=newint(num);
deletevar;
49Base&
tt.print();
50classT1,classT2T1x,T2y
五、程序分析题
51Class:
var=0
c1.var=1
c2.var=2
52constructor
constructor
c=20
destructor
六、程序设计题
53本题答案略