|
第 1 页 (共 4 页)
学习中心/函授站_
姓 名 学 号
西安电子科技大学网络与继续教育学院
2020 学年下学期
《面向对象程序设计(C++)》期末考试试题
(综合大作业)
题号 一 二 三 四 五 总分
题分 10 20 20 20 30
得分
考试说明:
1、大作业试题于2020 年10 月15 日公布:
(1)毕业班学生于2020 年10 月15 日至2020 年11 月1 日在线上传大作业答卷;
(2)非毕业班学生于2020 年10 月22 日至2020 年11 月8 日在线上传大作业答卷;
(3)上传时一张图片对应一张A4 纸答题纸,要求拍照清晰、上传完整;
2、考试必须独立完成,如发现抄袭、雷同均按零分计;
3、资料须用《西安电子科技大学网络与继续教育学院标准答题纸》手写完成,要
求字迹工整、卷面干净。
一、更多资料下载:谋学网(www.mouxue.com)(10 分)
1、运算符 new 和 delete 的功能分别是什么?(3 分)
2、C++中的函数调用有哪几种方式?它们有什么区别?(3 分)
3、在使用 C++语言中的运算符重载机制时,什么情况下适合使用成员函数过载方式,
什么情况下适合使用友元函数过载方式?(4 分)
二、填空题(每空 2 分,共 20 分)
1、在调用一个函数的过程中可以直接或间接地调用函数,这种调用称为 调
用,该函数称为 。
2、C++支持两种类型的多态,编译时多态和运行时多态。 多态是通过虚
函数来实现的, 多态是通过函数重载来实现的。
3、在 C++中,模板可以分为 和 。
4、 如 果 类 A继 承 了 类 B, 则 类 A 称 为 , 类 B 称
为 。
5、对于派生类的构造函数,在定义对象时构造函数的执行顺序为:先调用
的构造函数,再调用子对象类的构造函数,最后调用 的构造函数。
第 2 页 (共 4 页)
三、选择题(更多资料下载:谋学网(www.mouxue.com) 2 分,共 20 分)
1、下列 if 语句中,条件为真的语句是 。
A.if(0) B.if(3) C.bool bFlag = ture; if(!bFlag) D.if(a)
2、在 C++语言中,下列变量命名正确的是 。
A.char 89_name; B.bool is-loan; C.int class; D.int _abc;
3、“catch(int a)”语句的功能是 。
A.定义一个 int 型变量 a B.捕获程序中的 a
C.捕获程序被抛出的整型异常 D.抛出一个整型异常
4、下面程序的输出结果为 。
#include <iostream.h>
void main( ) {
char *s = "123456";
s += 3;
cout << s << endl;
}
A.456 B.字符 4 的 ASCII 码值 C.出错 D.23456
5、一个函数没有返回值的时候,应该选择的函数类型是 。
A.bool B.int C.void D.char
6、对于重载函数来说,不允许它们的 。
A.参数的个数、类型、顺序都相同,函数的返回值类型不同 B.参数的类型不同
C.参数的顺序不同 D.参数的个数不同
7、类的析构函数是 时被自动调用的。
A.创建类 B.创建对象 C.引用对象 D.释放对象
8、假设 A 是一个类,那么执行语句“A a, b(3), *p;”,调用了 次构造函数。
A.2 B.3 C.4 D.5
9、下列关于运算符重载的描述中,正确的是 。
A.不能改变运算符的优先级 B.能够改变操作数的数目
C.所有运算符都可以重载 D.通过重载“()”能够改变运算符的结合性
10、如果一个类中,至少有一个纯虚函数,那么称该类为 。
A.虚类 B.抽象类 C.派生类 D.友元类
四、读程题(更多资料下载:谋学网(www.mouxue.com) 5 分,共 20 分)
1.给出下述源程序的运行结果。
#include <iostream.h>
void sub(int x, int y, int *z) {
*z = y + x;
}
void main() {
int a, b, c;
sub(8, 4, &a);
sub(6, a, &b);
sub(a, b, &c);
cout << a << "," << b << "," << c << endl;
}
2、给出下述源程序的运行结果。
第 3 页 (共 4 页)
#include <iostream.h>
int add(int a, int b = 5);
void main()
{ int m = 5;
cout << "sum1 = " << add(m) << endl;
cout << "sum2 = " << add(m, add(m)) << endl;
cout << "sum3 = " << add(m, add(m, add(m))) << endl;
}
int add(int x, int y)
{ return x + y; }
3、给出下述源程序的运行结果。
#include <iostream.h>
class A {
private:
int a, b;
public:
A(int i, int j) { a = i; b = j; }
void Move(int x, int y) { a += x; b += y; }
void Show() { cout << "( " << a << ", " << b << " )" << endl; }
};
class B : private A {
public:
B(int i, int j, int k, int l) : A(i, j) { x = k; y = l; }
void Show() { cout << x << " ," << y << endl; }
void fun() { Move(3,5); }
void f1() { A :: Show(); }
private:
int x, y;
};
void main() {
A e(1, 2);
B d(3, 4, 5, 6);
e.Show();
d.fun();
d.Show();
d.f1();
}
4、指出下列程序中有错误的语句,并说明错误原因。
#include <iostream.h>
class Sample {
int n;
public:
Sample(int i) { n = i; }
void setValue(int i) { n = i; }
第 4 页 (共 4 页)
void display() { cout << "n = " << n << endl; };
void main() {
const Sample a(10);
a.setValue(5);
a.display();
}
五、编程题(30 分)
1、定义两个重载函数,分别能求矩形和圆的周长,然后在 main 函数中对这两个函数进
行调用并测试其功能。求矩形的周长时需要输入矩形的长和宽;求圆的周长时需要输入圆的
半径。(10 分)
2、定义一个时间类 Time,它能表示 24 小时制的时、分、秒,具体要求如下:(20 分)
(1)提供默认构造函数 Time(),将时、分、秒都初始化成 0。
(2)提供构造函数 Time(int h, int m, int s)。
(3)提供成员函数 set(int h, int m, int s),功能是调整时间。
(4)能够分别获取时、分、秒信息。
(5)提供成员函数 display(),显示时间值。
(6)提供成员函数 equal(Time &other_time),比较是否与时间 other_time 相等。
(7)提供成员函数 increment(),使时间增加一秒。
(8)提供成员函数 less_than(Time &other_time),比较是否早于时间 other_time。 |
|