2009年全国自考C++程序设计模拟试卷(一)
一、单项选择题(本大题共20小题,每小题1分,共20分)在每小题列出的四个备选项中 只有一个是符合题目要求的,请将其代码填写在题后的括号内。错选、多选或未选均无 分。
1. 编写C++程序一般需经过的几个步骤依次是() A. 编辑、调试、编译、连接 B. 编辑、编译、连接、运行 C. 编译、调试、编辑、连接 D. 编译、编辑、连接、运行
2. 决定C++语言中函数的返回值类型的是() A. return语句中的表达式类型
B. 调用该函数时系统随机产生的类型 C. 调用该函数时的主调用函数类型 D. 在定义该函数时所指定的数据类型 3. 下面叙述不正确的是() A. 派生类一般都用公有派生
B. 对基类成员的访问必须是无二义性的 C. 赋值兼容规则也适用于多重继承的组合 D. 基类的公有成员在派生类中仍然是公有的
4. 所谓数据封装就是将一组数据和与这组数据有关操作组装在一起,形成一个实体,这实体
也就是() A. 类 B. 对象 C. 函数体 D. 数据块
5. 在公有派生类的成员函数不能直接访问基类中继承来的某个成员,则该成员一定是基类中 的()
A. 私有成员 B. 公有成员 C. 保护成员
D. 保护成员或私有成员
6. 对基类和派生类的关系描述中,错误的是() A. 派生类是基类的具体化 B. 基类继承了派生类的属性 C. 派生类是基类定义的延续 D. 派生类是基类的特殊化
7. 关于this指针使用说法正确的是()
A. 保证每个对象拥有自己的数据成员,但共享处理这些数据的代码 B. 保证基类私有成员在子类中可以被访问。 C. 保证基类保护成员在子类中可以被访问。 D. 保证基类公有成员在子类中可以被访问。 8. 所谓多态性是指 ()
A. 不同的对象调用不同名称的函数 B. 不同的对象调用相同名称的函数 C. 一个对象调用不同名称的函数 D. 一个对象调用不同名称的对象
9. 一个函数功能不太复杂,但要求被频繁调用,则应把它定义为 () A. 内联函数 B. 重载函数
C. 递归函数 D. 嵌套函数
10. 下面函数模板定义中不正确的是() A. A B. B C. C D. D
11. 假设ClassY:publicX,即类Y是类X的派生类,则说明一个Y类的对象时和删除Y类对象时
,调用构造函数和析构函数的次序分别为() A. X,Y;Y,X B. X,Y;X,Y C. Y,X;X,Y D. Y,X;Y,X
12. 适宜采用inline定义函数情况是() A. 函数体含有循环语句 B. 函数体含有递归语句 C. 函数代码少、频繁调用 D. 函数代码多、不常调用
13. 假定一个类的构造函数为A(int aa,int bb) {a=aa--;b=a*bb;},则执行A x(4,5);语句后 ,x.a和x.b的值分别为() A. 3和15 B. 5和4 C. 4和20 D. 20和5
14. 在类中说明的成员可以使用关键字的是() A. public B. extern C. cpu
D. register
15. 下列不能作为类的成员的是() A. 自身类对象的指针 B. 自身类对象
C. 自身类对象的引用 D. 另一个类的对象
16. 使用地址作为实参传给形参,下列说法正确的是() A. 实参是形参的备份 B. 实参与形参无联系 C. 形参是实参的备份
D. 实参与形参是同一对象
17. 下列程序的输出结果是() #include
{int n[][3]={10,20,30,40,50,60}; int (*p)[3]; p=n;
cout<
C. 20,40,60 D. 10,30,60
18. 在C++中,使用流进行输入输出,其中用于屏幕输入() A. cin B. cerr C. cout D. clog
19. 假定AA为一个类,a()为该类公有的函数成员,x为该类的一个对象,则访问x对象中函数
成员a()的格式为() A. x.a B. x.a() C. x->a
D. (*x).a()
20. 关于对象概念的描述中,说法错误的是() A. 对象就是C语言中的结构变量
B. 对象代表着正在创建的系统中的一个实体 C. 对象是类的一个变量
D. 对象之间的信息传递是通过消息进行的
二、填空题(本大题共20小题,每小题1分,共20分)请在每小题的空格中填上正确答案 。错填、不填均无分。
1. C++的流库预定义了4个流,它们是cin、cout、clog和 cerr___。 2. 每个对象都是所属类的一个实例___。
3. 在已经定义了整型指针ip后,为了得到一个包括10个整数的数组并由ip所指向,应使用语
句_ip=new int[10];__。
4. 函数模板中紧随template之后尖括号内的类型参数都要冠以保留字___。
5. 定义类的动态对象数组时,系统只能够自动调用该类的_无参__构造函数对其进行初始化。 6. 表达式cout< 7. 在C++中,访问一个指针所指向的对象的成员所用的指向运算符是->___。 8. 假如一个类的名称为MyClass,使用这个类的一个对象初始化该类的另一个对象时,可以调 用_拷贝__构造函数来完成此功能。 9. 对赋值运算符进行重载时,应声明为_成员__函数。 10. 如果要把A类成员函数f()且返回值为void声明为类B的友元函数,则应在类B的定义中加 入的语句 friend void A::f()___。 for(i=0,j=10,k=0;i<=j;i++,j-=3,k=i+j);cout< 12. String 类的_find()__方法返回查找到的字符串在主串的位置。 13. int n=0; while(n=1)n++; while循环执行次数是_无限次__。 14. 控制格式输入输出的操作中,函数_setfill(char)__是用来设置填充字符。要求给出函数名和参数类型 15. C++语言支持的两种多态性分别是编译时的多态性和_运行时__的多态性。 16. 设函数sum是由函数模板实现的,并且sum(3,6)和sum(4.6,8)都是正确的函数调用,则函 数模板具有___个类型参数。 17. 执行下列代码 string str(\cout< 18. 在面向对象的程序设计中,将一组对象的共同特性抽象出来形成类___。 19. 定义类动态对象数组时,元素只能靠自动调用该类的_无参构造函数__来进行初始化。 20. 已知有20个元素int类型向量V1,若用V1初始化为V2向量,语句是___。 三、改错题(本大题共5小题,每小题2分,共10分)下面的类定义中有一处错误,请用下 横线标出错误所在行并给出修改意见。 1. #include class Test {private: int x,y=20; int x,y; 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< 2. #include class Test {int x,y; public: fun(int i,int j) fun(int i=0,int j=0) {x=i;y=j;} show() {cout<<\if(y) cout<<\cout< void main() {Test a; a.fun(1); a.show(); a.fun(2,4); a.show(); } 3. #include class A {int i; public: virtual void fun()=0; A(int a) {i=a;} }; class B:public A {int j; public: void fun() {cout<<\\n\ B(int m,int n=0):A(m),j(n){} B(int m=0,int n=0) }; void main() {A *pa; B b(7); pa=&b; } 4. #include class X {public: int x; public: X(int x) {cout< cout< void fun(X); }; void fun(X t) {cout< 5. #include #include Bas(char *s=\\0\void show(); frined void show(); protected: char name[20]; }; Bas b; void show() {cout<<\void main() {Bas d2(\show(); } 四、完成程序题(本大题共5小题,每小题4分,共20分) 1. 在下面程序横线处填上适当字句,以使该程序执行结果为: 50 4 34 21 10 0 7.1 8.1 9.1 10.1 11.1 #include