自考C++试题及答案(9套合集) 3-4.

则下列语句中对该函数模板错误的使用是() A. Sum(10,2);

B. Sum(5.0,6.7); C. Sum(15.2f,16.0f); D. Sum(“AB”,”CD”);

5. 类B是类A的公有派生类,类A和类B中都定义了虚函数func(),p是一个指向类A对象的指针

,则p->A::func()将() A. 调用类A中的函数func()

B. 调用类B中的函数func()

C. 根据p所指的对象类型而确定调用类A中或类B中的函数func() D. 既调用类A中函数,也调用类B中的函数

6. 在面向对象的程序设计中,首先在问题域中识别出若干个 () A. 函数 B. 类 C. 文件 D. 过程

7. 已知f1和f2是同一类的两个成员函数,但f1不能直接调用f2,这说明() A. f1和f2都是静态函数

B. f1不是静态函数,f2是静态函数 C. f1是静态函数,f2不是静态函数 D. f1和f2都不是静态函数

8. 下列有关模板和继承的叙述正确的是 () A. 模板和继承都可以派生出一个类系

B. 从类系的成员看,模板类系的成员比继承类系的成员较为稳定 C. 从动态性能看, 继承类系比模板类系具有更多的动态特性

D. 相同类模板的不同实例一般没有联系,而派生类各种类之间有兄弟父子等关系 9. 有关C++编译指令,以下叙述正确的是() A. C++每行可以写多条编译指令

B. #include指令中的文件名可含有路径信息 C. C++的编译指令可以以#或//开始

D. C++中不管#if后的常量表达式是否为真,该部分都需要编译 10. 在C++中不返回任何类型的函数应该说明为() A. int B. char C. void D. double

11. 若Sample类中的一个成员函数说明如下:

void set(Sample& a),则Sample& a的含义是() A. 指向类Sample的名为a的指针

B. a是类Sample的对象引用,用来作函数Set()的形参 C. 将a的地址赋给变量Set

D. 变量Sample与a按位与的结果作为函数Set的参数 12. 下列关于静态数据成员的描述中正确的是()

A. 静态数据成员是类的所有对象所共有的 B. 静态数据成员要在构造函数内初始化 C. 类的每个对象有自己的静态数据成员 D. 静态数据成员不能通过类的对象调用

13. 在编译指令中,宏定义使用哪个指令() A. #if

B. #include C. #define D. #error

14. 类的析构函数是对一个对象进行以下哪种操作时自动调用的是() A. 建立 B. 撤销 C. 赋值 D. 引用

15. 关于new运算符的下列描述中,错误的是() A. 它可以用来动态创建对象和对象数组

B. 使用它创建的对象或对象数组可以使用运算符delete删除 C. 使用它创建对象时要调用构造函数 D. 使用它创建对象数组时必须指定初始值 16. 如果类A被说明成类B的友元,则() A. 类B不一定是类A的友元 B. 类B的成员即类A的成员 C. 类A的成员即类B的成员

D. 类A的成员函数不得访问类B的成员

17. 假定一个类的构造函数为A(int aa,int bb){a=aa++;b=a*++bb;},则执行A x(4,5);语句

后,x.a和x.b的值分别为() A. 4和5

B. 4和20 C. 4和24 D. 20和5

18. 下列运算符中,在C++语言中不能重载的是() A. * B. >= C. :: D. /

19. C++语言建立类族是通过() A. 类的嵌套 B. 类的继承 C. 虚函数 D. 抽象类

20. 在C++语言中,数据封装要解决的问题是() A. 数据的规范化 B. 便于数据转换

C. 避免数据丢失

D. 防止不同模块之间数据的非法访问

二、填空题(本大题共20小题,每小题1分,共20分)请在每小题的空格中填上正确答案 。错填、不填均无分。

1. 若要使用string类,需要引入的头文件是_string.h__。

2. 在函数前面用_inline__保留字修饰时,则表示该函数表为内联函数。 3. 向量操作方法中___方法返回向量中的第一个对象。

4. C++派生类使用两种基本的面向对象技术:第一种称为性质约束,即对基类的性质加以限制

;第二种称为_性质扩展__,即增加派生类的性质。

5. 重载的运算符保持其原有的_操作数__、优先级和结合性不变。

6. 编译时的多态性通过_重载__函数实现。

7. 预处理语句有三种,分别是宏定义、文件包含和_条件编译__。

8. 构造函数、析构函数和友元函数中,不是该类成员的是_友元函数__。

9. 控制格式输入输出的操作中,函数_setw(int)__是设置域宽的。要求给出函数名和参数类型)。 10. 派生类的成员一般分为两部分,一部分是_从基类继承的成员__,另一部分是自己定义的新成员。 11. C++中ostream的直接基类_ios__。

12. vector的___方法返回向量中的最后一个对象。 13. 执行下列代码

int i=230;

cout <<\程序的输出结果为_i=E6__。

14. 在C++中有两种参数传递方式即值传递和_引用__传递。

15. 使用new为int数组动态分配10个存储空间是_new int [10];__。 16. 面向对象的四个基本特性是多态性、继承性、和封装性_抽象__。 17. 定义虚函数所用的关键字是_virtual__。 18. 执行下列代码

cout<<“oct:”<

19. 在C++中要创建一个文件输入流对象fin,同时该对象打开文件“Test.txt”用于输入,则 正确的声明语句是_ifstream fin(“Test.txt”);__。

20. 如果一个派生类只有一个唯一的基类,则这样的继承关系称为_单继承__。

三、改错题(本大题共5小题,每小题2分,共10分)下面的类定义中有一处错误,请用下 横线标出错误所在行并给出修改意见。 1. class ABC

{int a; public:

ABC(int aa)a(aa){} ABC(int aa):a(aa){} };

2. #include

class T {protected: int p; public:

T(int m){p=m;} };

void main() { T a(10);

cout<

3. #include using namespace std; class Date; class Time {public:

Time(int h,int m,int s) {hour=h,minute=m,sec=s;} void show(Date & d); private:

int hour,minute,sec; };

class Date {public:

Date(int m,int d,int y) {month=m,day=d,year=y;}

friend void Time::show(Date &); private:

int month,day,year; };

void Time::show(Date & d)

{cout<

void main()

{Time t1(9,23,50); Date d1(12,20,2008); t1.show(d1);

4. 输出最小值,有一处错误。

#include class Test {int a,b; int getmin()

{return (a

void setValue(int x1,int x2,int x3) {a=x1;b=x2;c=x3;} int GetMin();

};

int Test::GetMin() {int d=getmin(); return (d=d

void main() {Test t1;

t1.setValue(34,6,2);

cout<

5. 实现数值、字符串的交换。

#include #include using namespace std; template void Swap(T& a,T& b) {T temp;

temp=a,a=b,b=temp; }

void main() {int a=5,b=9;

char s1[]=\[]=\Swap(a,b); Swap(s1,s2);

cout<<\cout<<\}

四、完成程序题(本大题共5小题,每小题4分,共20分) 1. 在下划线处填上缺少的部分。

#include class A {int a,b; public:

A(int i=0,int j=0)_____;//定义构造函数,使参数i和j的默认值为0 {a=i;b=j;}//在函数体中用i初始化a,用j初始化b };

main() {A *p;

p=new A(4,5)_____;//调用带参构造函数生成由p指向的动态对象 //使a和b成员分别被初始化为4和5 }

2. 在下面程序横线处填上适当内容,使程序执行结果为:

联系客服:779662525#qq.com(#替换为@) 苏ICP备20003344号-4