1、福 建 师 范 大 学 软 件 学 院 2008级软件工程专业2009-2010学年第一学期期末考试卷(A卷) Final Examination Paper For Grade 2008 Faculty of Software, Fujian Normal University Semester 1, 2009-2010 Academic Year (120 minutes) Course C++ Programming Score from this exam 70﹪ Module C++ Programming Score from daily-perform
2、ance 30﹪ Student No. Final Score Student Name PART Ⅰ Ⅱ Ⅲ Ⅳ Ⅴ Total-Score Score 一、选择题(每题2分,共30分) 1.d 2.c 3.b 4.a 5.b 6.b 7.d 8.a 9.c 10.d 11.c 12.a 13.b 14.c 15.b Score Marker Checker I. 选择题(每题2分,共30分) 1. 下列符
3、号中,不可以作为变量名的是 d 。 A. list_p_9 B. PA123 C. ready D. for 2. 下面的哪个保留字不能作为函数的返回类型? A. void B. int C. new D. long 3. 执行下面程序段的输出结果是 。 int x=4,y=-55; if (x>0)
4、 if (x>10) cout <<”AA”; else cout <<”BB”; else if (y<-8) if (y>-20) cout <<”CC”; else cout <<”DD”; A. AA B. BB C. CC D. DD 4. 一个函数功能不太复杂,但要求被频繁调用,选用 A. 内联函数 B. 重载函数 C. 递归函数 D. 嵌套函数 5. 假定AB为一个类,则执行“AB a(4) , b[3] , * p[2]
5、语句时,自动调用该类构造函数的次数为 。 A. 3 B. 4 C. 6 D. 9 6. 在公有继承的情况下,基类成员在派生类中的访问权限 A. 受限制 B. 保持不变 C. 受保护 D. 不受保护 7. 已知一函数的原型是:int f(int ,int =0,double =0.0);则下列函数中可以加以重载的是 A. int f(int); B. int f(int,
6、int); C. f(int,int,double); D. f(int double); 8. 下列关于静态数据成员的描述中正确的是 A.静态数据成员是类的所有对象所共有的 B.静态数据成员要在构造函数内初始化 C.类的每个对象有自己的静态数据成员 D.静态数据成员不能通过类的对象调用 9. 派生类的构造函数的成员初始化列表中,不能包含 A.基类的构造函数。 B.派生类中对象成员的初始化。 C.基类中对象成员的初始化。 D.派生类中一般数据成员的初始化。 1
7、0. 关于虚析构函数的下述描述中, 是错误的。 A.基类中析构函数为虚析构函数,则派生类中的析构函数也为虚析构函数。 B.虚析构函数能保证delete运算符有效的释放基类及派生类对象。 C.将析构函数定义为虚析构函数是因为类中有虚函数。 D.虚析构函数并不能实现动态联编。 11. 一个_____ ____允许用户为类定义一种模式,使得类中的某些数据成员及某些成员函数的返回值能取任意类型。 A.函数模板 B.模板函数 C.类模板 D.模板类 12. 通过 调用虚函数时,采用动态绑定。
8、 A. 对象指针 B. 对象名 C. 成员名限定 D. 派生类名 13. 下列虚基类的说明中,正确的是___ ______ 。 A.class virtual B:public A B.class B:virtual public A C.virtual class B:public A D.class B:public A virtual 14. 下面是关于一个类的友元的说法,其中不正确的是 。 A.友元函数可以访问该类的私有数据成员 B.友元的声明必须放在类的内部 C.友元函数可以是类
9、的成员函数 D.类与类之间的友元关系不能被继承 15. 假定要对类AB定义加号操作符重载成员函数,实现两个AB类对象的加法,并返回相加结果,则该成员函数的声明语句为: A. AB operator+(AB & a , AB & b) B. AB operator+(AB & a) C. operator+(AB a) D. AB & operator+( ) Score Marker Checker II. 填空题(每空2分,共20分) 1. 模板时构成
10、 的基石。 2. C++的异常处理机制是通过关键词try、 和 实现的。 3. 一个 const 对象只能访问 __ ____ 成员函数。 4. 重载“<<”操作符时,应声明为 __ _____ 函数。 5. 利用应用程序向导AppWizard生成的单文档应用程序,一般包括四个基本类 、主框架窗口类、 和 。 6. Visual C++创建的基于MFC的应用程序可以分为单文档应用程序、 和
11、 。
Score
Marker
Checker
III. 程序填空(每空2分,共20分)
1 int*[row]
2 int[column]
3 *(*(p+i)+j)
4 []p[i]
5 template
12、 13、0;j 14、T sum();
private:
T x , y;
};
template 15、 complex
{
public:
complex(){real = image =0;}
complex(float a,float b)
{
real =a;
image = b;
}
complex operator+( complex &c1 ) //重载为成员函数
{
return complex( real+c1.real,image+c1.image );
}
friend complex operator-( complex &c1 16、complex &c2 ) //重载为友元函数
{
return complex(c1.real-c2.real,c1.image-c2.image);
}
private:
float real;
float image;
};
IV. 写出下列程序的运行结果(每题5分,共10分)
Score
Marker
Checker
1.#include 17、or"< 18、}
void Display()
{
cout<<"n="< 19、
public:
virtual ~A0()
{cout<<"Destructor Function A0::~A0 is called"< 20、 delete []pid;
cout<<"Destructor Function C0::~C0() is called"< 21、据到数组中存放,并用冒泡法进行排序,把排序后的结果分别输出到显示器屏幕和write.txt文件中。
2. 设计一个类point,表示二维坐标体系中的任意一点,把point类设计为基类,含有虚函数Area(),用来计算面积,在此基础上设计一个矩形类Rectangle。
要求用以下两种方法实现:
(1)Rectangle类使用point类作为它的数据成员,定义point类的两个坐标点作为矩形对角坐标,假设矩形是和坐标轴平行或垂直的,请在main函数中输出矩形的面积。
(2)Rectangle以point类作为基类,Rectangle类的数据成员仍然是两个对角的坐标点。假设矩形是和坐标轴平行或垂直的,请在main函数中用多态调用输出矩形的面积。
第 13 页 共 13 页






