《面向对象程序设计》试题(补考)
(闭卷考试)
班级:学号:姓名:
1. 单项选择题(每小题3分,共60分)
1)C++语言对C语言做了很多改进。
C++语言相对于C语言的最根本的变化是
( )。
A.增加了一些新的运算符
B.允许函数重载,并允许设置缺省参数
C.规定函数说明符必须用原型
D.引进了类和对象的概念
2)下列描述中,不属于面向对象思想主要特征的是( )。
A.封装性B.跨平台性
C.继承性D.多态性
3)每个C++程序中都必须有且仅有一个( )。
A. 类
B. 预处理命令
C. 主函数
D. 语句
4)sizeof(float)是( )。
A. 一个双精度型表达式
B. 一个整型表达式
C. 一种函数调用
D. 一个不合法的表达式
5)设有int x=11;,则表达式(x++*2/3)的值是( )。
A. 7
B. 8
C. 11
D. 12
6)在下面的二维数组定义中,正确的是( )。
A. int a[5][];
B. int a[][5];
C. int a[][3]={{1,3,5},{2}};
D. int a[](10);
7)设有程序代码:
int k=10;
while(k=0) k=k-1;
则下面描述中正确的是( )。
A. 循环执行10次
B. 无限循环
C. 循环体语句一次也不执行
D. 循环体语句执行一次
8)对表达式for(表达式1; ; 表达式3)可理解为( )。
A. for(表达式1; 0; 表达式3)
B. for(表达式1; 1; 表达式3)
C. for(表达式1 ; 表达式3;)
D. for( ; ; 表达式3)
9)下面的哪个选项不能作为函数的返回类型? ( )。
A.void B.int C.new D.long
10)有如下说明:
int a[ ]= {1, 2, 3, 4, 5, 6, 7, 8, 9, 10}, *p=a;
则下面哪一个表达式的值为9 ( )。
A. *p+9
B. *(p+8)
C. (*p += 9)
D. p+8
11)有如下函数定义:
void func(int a, int &b) {a++; b++;}
若执行代码段:
int x=0, y=1;
func(x, y);
则变量x和y值分别是( )。
A.0和1 B.1和1 C.0和2 D.1和2
12)下列写法正确的是( )。
A. int *p = 15;
B. const int a; a=15;
C. int& b;
D. int b = 15; int* a = &b;
13)下列选项中,与实现运行时多态性无关的是( )。
A.重载函数B.虚函数C.指针D.引用
14)拷贝构造函数的参数一般是( )。
A. 某对象名
B. 某对象成员名
C. 某对象的引用名
D. 指向对象的指针名
15)对类的构造函数和析构函数描述正确的是( )。
A.构造函数可以重载,析构函数不能重载
B.构造函数不能重载,析构函数可以重载
C.构造函数可以重载,析构函数也可以重载
D.构造函数不能重载,析构函数也不能重载
16)关于静态数据成员的描述中正确的是( )。
A. 类的静态数据成员不是类的所有对象共享的数据
B. 类的静态数据成员不能被类的成员函数调用
C. 类的静态数据成员不能被类的构造函数调用
D. 类的静态数据成员必须进行初始化
17)在公有派生情况下,有关派生类对象和基类对象的关系,下列叙述不正确的
是( )。
A.派生类的对象可以赋给基类的对象
B.派生类的对象可以初始化基类的引用
C.派生类的对象可以直接访问基类中的成员
D.派生类的对象的地址可以赋给指向基类的指针
18)定义派生类时,若不使用关键字显示地规定采用何种继承方式,则默认方式
为( )。
A.私有继承B.非私有继承C.保护继承D.公有继承
19)建立派生类对象时,三种构造函数分别是:a(基类的构造函数)、b(成员对象
的构造函数)、c(派生类的构造函数)。
这3种构造函数的调用顺序为( )。
A.abc B.acb C.cab D.cba
20)下面关于虚函数的描述,错误的是( )。
A.在成员函数声明的前面加上virtual修饰,就可把该函数声明为虚函数B.基类中说明了虚函数后,派生类中对应的函数也必须说明为虚函数
C.虚函数可以是另一个类的友元函数,但不能是静态成员函数
D.基类中说明的纯虚函数在其任何派生类中都必须实现
2. 读程序,并写出运行结果(3小题,共40分)
1)写出下面这段程序的运行结果。
(10分)
#include <iostream>
using namespace std;
int main()
{
int a = 4;
int &b = a;
a *= a;
cout << "a = " << a << " and b = " << b << endl;
b /= 2;
cout << "a = " << a << " and b = " << b << endl;
return 0;
}
运行结果:
2)写出下面这段程序的运行结果。
(10分)
#include <iostream>
using namespace std;
class Box
{
public:
Box(int h = 2, int w = 2, int len = 2) : height(h), width(w), length(len) { } int volume() { return (height*width*length);}
private:
int height, width, length;
};
int main()
{
Box box1, box2(2, 3, 4);
cout << "The volume of box1 is " << box1.volume() << endl;
cout << "The volume of box2 is " << box2.volume() << endl;
Box box3 = box1;
cout << "The volume of box3 is " << box3.volume() << endl;
return 0;
}
运行结果:
3)写出下面这段程序的运行结果。
(20分)
运行结果:。