C++程序设计自考题模拟7
(总分100,考试时间90分钟)
第Ⅰ部分 选择题
一、单项选择题
1. 在C++中,源文件经编译后生成的文件扩展名为______
A. .cpp        B. .h
C. .lib        D. .obj
2. 下列字符串中不能作为C++标识符使用的是______
A. WHILE        B. user
C. _lvar        D. 9star
3. 与C语言printf("Hello, World\n"); 语句功能相同的C++语句是______
A. cout>>"Hello, World\n";
B. cout<<"Hello, World\n";
C. cin>>"Hello, World\n";
D. cin<<"Hello, World\n";
4. 用于标识十进制常量的前缀或后缀是______
A. 无前后缀        B. 后缀L或l
C. 前缀0        D. 前缀0x
5. 使用下列哪个流格式控制符可设置转换基数为十六进制______
A. dec        B. oct
C. hex        D. endl
6. 若Sample类中的一个成员函数说明如下:
void Set(Sample&a),则Sample&a的含义是______
A. 指向类Sample的名为a的指针
B. a是类Sample的对象引用,用来作函数Set()的形参
C. 将a的地址赋给变量Set
D. 变量Sample与a按位与的结果作为函数Set的参数
7. 关于类的析构函数调用的说法正确的是______
A. 类创建时        B. 创建对象时
C. 删除对象时        D. 不自动调用
8. 下列关于静态数据成员的描述中正确的是______
A. 静态数据成员是类的所有对象所共有的
B. 静态数据成员要在构造函数内初始化
C. 类的每个对象都有自己的静态数据成员
D. 静态数据成员不能通过类的对象调用
9. 函数int sum(int a=1, int b=1, int c=3); 可与下列哪个函数同时声明______
A. double sum(int);
B. char sum(int, int);
C. int sum(double);
D. int sum(int, int, int);
10. 以下叙述错误的是______
A. 基类的保护成员在公有派生类中仍然是保护成员
B. 基类的保护成员在派生类中仍然是保护成员
C. 基类的保护成员在私有派生类中是私有成员
D. 基类的保护成员在私有派生类中能够被访问
11. 设函数void inc(int)的功能是将形参加1,如有整型变量int i=10; ,则执行inc(i); 后,i的值为 ______
A. 9        B. 10
C. 11        D. 12
12. 假设Class Y:public X,即类Y是类X的派生类,则说明一个Y类的对象时和删除Y类对象时,调用构造函数和析构函数的次序分别为______
A. X,Y;Y,X        B. X,Y;X,Y
C. Y,X;X,Y        D. Y,X;Y,X
13. 实现两个相同类型数加法的函数模板的声明是______
A. add(T x, T y)        B. T add(x, y)
C. T add(T x, y)        D. T add(T x, T y)
14. 在int a=3; int *p=&a; 中,*p的值是______
A. 变量a的地址值        B. 无意义
C. 变量p的地址值        D. 3
15. 在公有继承的情况下,基类的公有或保护成员在派生类中的访问权限______
A. 受限制        B. 保持不变
C. 受保护        D. 不受保护
16. 在没有为一个类定义任何构造函数的情况下,下列描述正确的是______
A. 编译器总是自动创建一个不带参数的构造函数        B. 这个类没有构造函数
C. 这个类不需要构造函数        D. 该类不能通过编译
17. 在派生类中定义虚函数时,可以与基类中相应的虚函数不同的是______
A. 参数类型        B. 参数个数
C. 函数名称        D. 函数体
18. 关于类的静态成员函数描述错误的是______
A. 在创建对象之前不存在        B. 不能说明为虚函数
C. 不能直接访问非静态函数        D. 不是对象的成员
19. 在构造向量时,不正确的叙述是______
A. 可以使用基本数据类型        B. 可以使用类
C. 可以使用向量        D. 不可以使用容器
20. 使用函数setprecision(int n)必须包含的头文件是______
A. iostream        B. fstream
C. ifstream        D. iomanip
第Ⅱ部分 非选择题
二、填空题
1. 下列程序段的输出结果是______。
cout.setf(ios::showpos);
cout<<509.3<<endl;
2. 将对象作为函数参数,是将实参对象的______传递给形参对象,这种传递是单向的。
3. 结构体中,没有使用private定义的成员函数,默认为______。
4. 局部对象和全局对象中,在同一程序中______生存期最长。
5. 类的定义以class开始,以______结束。
6. 类的构造函数可以重载,类的析构函数______重载。
7. this指针始终指向调用成员函数的______。
8. 派生类可以定义其______中不具备的数据和操作。
9. C++的______允许一个派生类继承多个基类。
10. 派生类的成员一般分为两部分,一部分是______,另一部分是自己定义的新成员。
11. C++语言中的“聚合”隐含了两种实现方式,一种是______,另一种是用一个类的对象作为一种广义的数据类型来定义整体对象的一种属性。
12. 在C++中,利用向量类模板定义一个具有10个int的向量V,其元素均被置为字符2,实现此操作的语句是______。
13. 派生类继承基类的虚函数后______不重新定义该函数。
14. 通过一个对象调用虚函数时,C++系统对该调用采用______。
15. 下列程序段的输出结果是______。
for(i=0. j=10, k=0; i<=j; i++, j-=3, k=i+j); cout<<k;
16. ______规则是指在公有派生情况下,一个派生类的对象可以作为基类的对象来使用。
17. 用______修饰的函数称为虚函数。
18. 重载的运算符仍保留原有的______、结合性和语法结构。
19. 对已有的运算符赋予多重含义,使同一运算符能够对不同类型的数据进行操作,称为______。
20. 设要把一个文件输出流对象outfile与文件“d:\”相关联,设置以二进制形式打开。所用的C++语句是______。
三、改错题
1. #include<iostream.h>
class Test
{private:
int x, y=20;
public:
Test(int i, int j){x=i; y=j; }
int getx(){return x; }
int gety(){return y; }
};
void main()
{Test mt(10, 20);
cout<<mt.getx()<<endl;
cout<<mt.gety()<<endl;
}
2. 以下程序实现交换a,b变量的值,请用下横线标出错误所在行并给出修改意见。
#include < iostream.h >
void swap( int &a, int &b)
{a=a+b;
b=a-b;
a=a-b;
void main()
{int a = 19, b = 15;
cout << "a = " << a << ", b = " << b << endl;
swap ( &a, &b);
cout << "a = " << a << ", b = " << b << endl;
}
3. #include < iostream >
using namespace std;
class CMax {
private:
int xx;
int yy;
public:
CMax(int x, int y)
{ xx = x; yy = y; }
void setValue ( int x, int y)
{ xx = x; yy = y;}
int max() {
return xx > yy? xx:yy;
}
};
void main() {
CMax m();
m.setValue(20,30);
cout << "Max = " << m.max() << endl;
}
4. #include < iostream.h >
void main()
{int i(3), j(8);
int * constp=&i;
cout << * p << endl;
p =&j;
cout << * p << endl;
}
5. #include < iostream.h >
class test {
private:
int x, y;
public:
void test1 (int a, int b) {x = a; y = b;}
int max();
};
int test:max()
{if(x>y) return x;
else return y; }
void main() {
指针调用成员函数
test a;
a.test1 (1,3);
cout << a.max() << endl;
}
四、完成程序题
1. 完成下面类中构造函数的定义。
#include < iostream.h >
class A
{ private:
int y;
int x;
public:
A ( int, int);
A (const A &);
void show()
{ cout << "x = " << x << ", y = " << y << endl;
}
};
A::A(int i, int j):______