全国自考C++程序设计试题带答案文档格式.docx
《全国自考C++程序设计试题带答案文档格式.docx》由会员分享,可在线阅读,更多相关《全国自考C++程序设计试题带答案文档格式.docx(13页珍藏版)》请在冰豆网上搜索。
A.intmax(inta,intb,intc,intd=0);
B.intmax(inta,intb,intc=0,intd=0);
C.intmax(inta=0,intb,intc=0,intd=0);
D.intmax(inta,intb=0,intc=0,intd=0);
9.设int&
max(int&,int&
)返回两参数中较大者,如有两整型变量inta=10;
intb=15;
在执行max(a,b)++后,a,b值分别为(C)
A.10,15B.11,15
C.10,16D.1l,16
10.包含哪种语句的函数不能声明为内联函数(A)
A.循环B.变量自增自减
C.if...else…D.变量声明
11.定义函数模板中使用的参数类型标识符需使用下列哪组符号括起来(A)
A.<
>
B.“”
C.()D.{}
12.一个类拥有多个构造函数,则这些构造函数间为(A)
A.重载关系B.重复关系
C.拷贝关系D.无关系
13.对于拷贝构造函数point:
:
point(point&
p),下列说明正确的是(C)
A.该函数只能访问P的私有成员B.该函数不能访问P的公有成员
C.该函数可以访问P的私有和公有成员D.该函数不能访问P的成员
14.使用delete[]删除对象数组时,描述正确的是(A)
A.数组中各元素都调用析构函数B.数组中各元素都调用构造函数
C.不调用析构函数D.只有首元素调用析构函数
Point*p=newPoint[5];
=>
B
15.下列哪个指令属于条件编译指令(A)
A.#elifB.#error
C.#pragmaD.#include
16.设类Test中存在成员staticintx,则下列哪种初始化方式是正确的(C)
A.Test:
intx=25;
B.intx=25;
C.intTest:
x=25;
D.intTestx=25;
17.下列关于友元的描述错误的是(A)
A.成员函数不可作友元B.类可以作友元
C.普通函数可以作友元D.静态函数可以作友元
18.在继承中,派生类拥有的基类个数为(D)
A.0个B.1个
C.多个D.至少1个
19.基类中的protected成员,通过public派生,其在派生类中的可见性为(C)
A.不可访问B.private
C.protectedD.public
20.下列哪个不是面向对象的关键要素(B)
A.抽象性B.结构性
C.封装性D.多态性
二、填空题(本大题共20小题,每小题1分,共20分)
请在每小题的空格中填上正确答案。
错填、不填均无分。
21.在STL库中用于实现数组内容反转的函数是__reverse____。
P14
22.若要使用C++标准类库,需要指定相应的命名空间,所用的语句是___usingnamespacestd;
___。
23.C++语言中的整数常量有4种描述类型:
十进制常量、长整型常量、八进制常量和__十六进制常量____。
24.声明一个名为a的整型引用变量所使用的语句是___int&
a;
类外?
25.重载的运算符仍保留原有的优先级、_结合性_____和语法结构。
26.执行代码
intb=100;
cout<
<
hex<
b:
程序的输出结果是__64____。
27.带有纯虚函数的类称为抽象类,它只能作为___基类___来使用。
28.使用__对象引用____作为函数参数,实参对象和形参对象代表同一对象,改变形参对象的值就是改变实参对象的值。
29.UML中对象之间的静态关系是通过对象属性之间的连接反映的,称之为__实例连接____。
30.如果一个模板声明列出多个参数,则多个参数之间必须使用逗号隔开,每个参数都必须重复使用关键字__class____。
(或typename)
31.C++类的构造函数名与___类___名称一样,且没有返回值。
32.C++规定,当一个成员函数被调用时,系统自动向它传递一个隐含的参数,该参数是一个指向调用该函数的对象的指针,该指针被称为__this____指针。
33.声明一个常成员函数Fun,其返回类型为char,第一个参数类型为int,第二个参数类型为double,函数Fun的声明原型是__charFun(int,double)const;
____。
34.C++语言中的“聚合”隐含了两种实现方式,一种是__独立的定义____,另一种是用一个类的对象作为一种广义的数据类型来定义整体对象的一个属性。
35.简单成员函数是指声明中不含const、_volatile_____和static关键字的函数。
36.在派生类中继承的基类成员的初始化,需要由派生类的构造函数调用基类的__构造函数____来完成。
37.在C++中,利用向量类模板定义一个具有20个int的向量,其所有元素被置为1,实现此操作的语句是__vector<
int>
v(20,1);
38.vector类中用于获取无需再次分配内存就能容纳的对象个数的方法是__capacity()____。
P156
39.动态联编是程序运行到需要的语句处才动态确定的,这称为___运行时___多态性。
(注意:
动态联编)
40.C++重载“=”运算符的函数名是__operator=____。
三、改错题(本大题共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{
______{
x=a;
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{
cout<
″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);