|
学习中心/函授站_
姓 名 学 号
西安电子科技大学网络与继续教育学院
2019学年上学期
《面向对象程序设计(C++)》期末考试试题
(综合大作业)
题号 一 二 三 四 五 总分
题分 10 20 20 20 30
得分
考试说明:
1、大作业试题于2019年4月25日公布,2019年4月26日至2019年5月12日在线上传大作业答卷(最多上传10张图片);
2、考试必须独立完成,如发现抄袭、雷同均按零分计;
3、资料须用《西安电子科技大学网络与继续教育学院综合大作业答题纸》手写完成,要求字迹工整、卷面干净。
一、谋学网(www.mouxue.com)(10分)
1.(3分)什么是引用?它与指针有什么区别?
2.(3分)运算符重载有哪两种形式?这两种形式有何区别?
3.(4分)构造函数的作用是什么?在创建派生类的对象时,应按照怎样的顺序调用构造函数?
二.谋学网(www.mouxue.com)(20分,每空2分)
1. C++程序中的数据可以分为两大类,其中 是指在程序执行过程中值不改变的数据; 是程序中用于存储信息的单元,并对应于某个内存空间。
2. 表示逻辑关系“a大于等于8或者a小于等于5”的C++表达式是 。
3. C++语言的流程控制语句的基本控制结构有三种,分别是 、 和 。
8. 假设x = 5,y = 0,z = 3,则表达式 !x || y++ && z 的值为 ,执行表达式后y的值为 。
10. 若要把类bClass定义为类aClass的友元类,则应在类 的定义中加入语句 。
三、选择题(20分,每题2分)
1. 在下列选项中,合法的C++变量名是 。
A. long B. _2Test C. 3Dmax D. A.dat
2. 下列语句中,错误的是 。
A. int i, *ptr = &i; B. int i; int *ptr; i = *ptr;
C. int *ptr; ptr = 0; D. int i = 5; int *ptr; *ptr = &i;
3. 已知枚举类型enum Day {Monday, Tuesday, Wednesday, Friday = 2};
下列语句中, 是合法的。
A. Wednesday == Friday ? 1 : 0 B. Day day; day = 3;
C. Day day; day = Monday + 3; D. Tuesday = 4;
4. 在“int a = 10, *p = &a;”语句中,p的值是 。
A. 10 B. 变量p的地址 C. 变量a的地址 D. 随机数
5. 下列有关设置函数参数默认值的描述中, 是正确的。
A. 对设置函数参数默认值的顺序没有任何规定
B. 函数具有一个参数时不能设置默认值
C. 默认参数要设置在函数的定义语句中,而不能设置在函数说明语句中
D. 设置默认参数可使用表达式,但表达式中不可用局部变量
6.下列关于运算符重载的描述中, 是正确的。
A. 运算符重载可改变其优先级
B. 运算符重载不改变其语法结构
C. 运算符重载可改变其结合性
D. 运算符重载可改变其操作数的个数
7. 为了使类中的成员能够被类的对象通过成员运算符访问,则应该把成员的访问权限定义为 。
A. public B. protected
C. private D. packaged
8. 下列各函数的说明中,表示纯虚函数的是 。
A. virtual int vf(int); B. int vf(int) = 0;
C. virtual int vf(int) = 0; D. virtual int vf(int) {}
9. 假设类AB用成员函数的方式重载加法运算符,以实现两个AB类对象的加法,并返回相加的结果,则该成员函数的声明为 。
A. AB operator + (AB &a, AB &B); B. AB operator + (AB&);
C. operator + (AB a); D. AB & operator + ();
10. 下列对C++中静态数据成员的描述中,正确的是 。
A. 静态数据成员是类的所有对象共享的数据
B. 类的每个对象都有自己的静态数据成员
C. 类的不同对象有不同的静态数据成员值
D. 静态数据成员不能通过类的对象来调用
四、读程题(20分,每题5分)
1.给出下列源程序的输出结果。
#include <iostream.h>
void main( ) {
int x = 5, y = 2;
cout << !(y == x/2) << ",";
cout << (y != x%3) << ",";
cout << (x > 0 && y < 0) << ",";
cout << (x != y || x >= y) << endl;
}
2. 给出下述源程序的运行结果。
#include <iostream.h>
int add(int *x, int n)
{ int sum , i;
for(sum = 0, i = 0; i < n; i++) sum += *(x+i);
return sum;
}
void main(){
int arr[] = {1, 3, 5, 7};
cout << add(arr, 4) << endl;
}
3. 给出下述源程序的运行结果。
#include <iostream.h>
class Base {
public:
void fun() { cout << "1"; }
};
class Derived : public Base {
public:
void fun() {
cout << "2" << endl;
}
};
void main() {
Derived a;
Base *p = &a;
(*p).fun();
a.fun();
}
4. 给出下述源程序的运行结果。
#include <iostream.h>
#include <string.h>
void main() {
char a[] = “changuage”, t, m;
int i, j, k;
k = strlen(a);
for(i = 0; i <= k - 2; i += 2) {
m = i;
for(j = i + 2; j <= k; j += 2)
if (a[m] > a[j]) m = j;
if(m != i) {
t = a[i]; a[i] = a[m]; a[m] = t;
}
}
cout << a << endl;
}
五 编程题(每题15分,共30分)
1. 定义并实现一个类Myst,使下列语句能够正常运行。
Myst x(3.2), y(5,5), z(0.0);
z = 8.9 – y;
y = x – 6.3;
2. 在一个程序中,类Person定义了name和age两个数据成员;由类Person派生出类Student和Teacher,其中类Student定义了学号数据,类Teacher定义了职称数据。每个类均有构造函数、析构函数和打印类中数据的函数。给出类Person、Student、Teacher的定义与实现。
|
|