0
点赞
收藏
分享

微信扫一扫

面向对象C++编程与实践考试题目

一、选择题(每题2分,共2×20=40分)

(1) 以下不能对数组 a 进行正确初始化的语句是( )。
A. int a[2][3] = { 0 };
B. int a[ ][3] = { {0,1}, {0} };
C. int a[2][3] = { {0,1}, {2,3}, {4,5} };
D. int a[ ][3] = { 0, 1, 2, 3, 4, 5 };


(2) 用 const 声明的变量()。
A. 不能被读取
B. 在声明时可定义也可不定义
C. 只能被读取
D. 其值在程序中可以被改变


(3) 有语句 int a[ ] = { 0, 2, 4, 6, 8, 10 },*p = a + 1; 其值等于 0 的表达式是()。
A. * (p++)
B. *(++p)
C. *(p--)
D. *(--p)


(4) 下列的描述中()是错误的。
A. 使用全局变量可以从被调用函数中获取多个操作结果
B. 局部变量可以初始化,若不初始化,则系统默认它的值为 0
C. 当函数调用完后,静态局部变量的值不会消失
D. 全局变量若不初始化,则系统默认它的值为 0


(5) C++ 语言的跳转语句中,对于 break 和 continue 说法正确的是()。
A. break 语句只能用于循环体中
B. continue 语句只能用于循环体中
C. break 是无条件跳转语句,continue 不是
D. break 和 continue 的跳转范围不够明确,容易产生问题


(6) S 是字符数组,用于存储字符串,下面不能够判断字符串 S 是空串的是()。
A. if (S[0] == 0 )
B. if (strlen(S) == 0)
C. if (strcmp(S, "") == 0)
D. if (S == '\0')


(7) C++ 函数的参数传递方式有()。
A. 地址传递
B. 引用传递
C. 双向值传递
D. 由用户指定传递方式


(8) 下面判断是否构成重载函数的条件中,错误的判断条件是()。
A. 参数类型不同
B. 参数个数不同
C. 参数顺序不同
D. 函数返回值不同


(9) 设 a 和 b 是两个结构体变量,下面正确的表达式是()。
A. a = b
B. a = b + 1
C. a > b
D. a == b


(10) 派生类对象只能访问基类中的()。
A. 公有继承的公有的成员
B. 公有继承的私有成员
C. 公有继承的保护成员
D. 私有继承的公有成员


(11) 关于构造函数的叙述中,错误的说法是()。
A. 构造函数的名称必须为类名
B. 构造函数最多只能有一个
C. 创建对象时自动执行构造函数
D. 构造函数无任何函数类型


(12) ()只能访问静态成员变量。
A. 静态成员函数
B. 虚函数
C. 构造函数
D. 析构函数


(13) C++ 中类有两种用法,一种是类的实例化,即生成类对象;另一种是通过()派生出新的类。
A. 复用
B. 继承
C. 重载
D. 封装


(14) 下面描述中,正确的是()。
A. 虚函数是没有实现的函数
B. 纯虚函数的实现在派生类定义
C. 抽象类是具有纯虚函数的类
D. 抽象类指针可以指向不同的派生类


(15) 一个类的友函数能够访问该类的()。
A. 私有成员
B. 保护成员
C. 公有成员
D. 所有成员


(16) 下列关于构造函数说法不正确的是()。
A. 构造函数必须与类同名
B. 构造函数可以省略不写
C. 构造函数必须有返回值
D. 在构造函数中可以对类中的成员进行初始化


(17) 关于 new 运算符的下列描述中,()是错误的。
A. 它可以用来动态创建对象和对象数组
B. 使用它创建对象或对象数组,可以使用 delete 删除
C. 使用它创建对象时要调用构造函数
D. 使用它调用对象数组时不许指定初始值


(18) 建立包含有类对象成员的派生类对象时,自动调用构造函数的执行顺序依次为()的构造函数。
A. 基类、自己所属类、成员对象成员所属类
B. 对象成员所属类、基类、自己所属类
C. 自己所属类、对象成员所属类、基类
D. 基类、对象成员所属类、自己所属类


(19) 下列说法正确的是()。
A. 内联函数在运行时是将该函数的目标代码插入每个调用该函数的地方
B. 内联函数在编译时是将该函数的目标代码插入每个调用该函数的地方
C. 类的内联函数必须在类体内定义
D. 类的内联函数必须在类体外通过关键字 inline 定义


(20) 执行语句:

int a = 10, b;
int &pa = a, &pb = b

后,下列正确的语句是()。
A. &pb = a
B. pb = pa
C. &pb = &pa
D. *pb = *pa


二、判断题(每题 1 分,共10×1 =10分)

(1) 函数的形参时局部变量。

(2) 有语句 #define n 10 ,则 int a[n] ; 定义数组是合法的。

(3) 赋值运算符只能作为成员函数进行重载。

(4) 条件编译的作用是根据不同条件进行编译不同程序段,以提高程序的兼容性。

(5) 静态数据成员必须在类外定义和初始化。

(6) 可以对类成员变量直接赋值。

(7) 在 class 定义一个类时,数据成员函数的默认访问权限是私有的。

(8) 抽象类通常应用派生类。

(9) 指针可以做任何类型的强制转换。

(10) 对象不能作为数组元素。


三、编程题

1、编写程序,输入 100 个数值,从小到大排序后输出。(10分)


2、输入一行字符,按输入字符的反序建立一个单向链表存储这些字符,并输出该链表中的字符。(10分)
节点的结构:

struct node{
char ch;
node *next;
};


3、设计三角形类 CTriangle ,写出下面 6 个成员函数。三角形类的部分定义如下:(30分)

class CTriangle{
float a, b, c; //三角形的三条边长
float area; //保存三角形的面积
public:
// (1)默认构造函数
// (2)有初始值的构造函数
// (3)拷贝函数
// (4)设置三角形的三条边长度
// (5)得到三角形的三条边长度
// (6)“+” 运算符重载,实现 2 个三角形的面积之和
};

参考答案

未经作者授权,禁止转载 THE END

举报

相关推荐

0 条评论