|
第 1 页 (共 4 页)
学习中心/函授站_
姓 名 学 号
西安电子科技大学网络与继续教育学院
2022 学年上学期
《面向对象程序设计(C++)》期末考试试题
(综合大作业)
题号 一 二 三 四 五 总分
题分 10 20 20 20 30
得分
考试说明:
1、大作业试题公布时间:2022 年 4 月 22 日;
2、考试必须独立完成,如发现抄袭、雷同均按零分计;
3、资料须用《西安电子科技大学网络与继续教育学院 2022 春期末考试答题纸》(个
人专属答题纸)手写完成,要求字迹工整、卷面干净、整齐;
4、拍照要求完整、清晰,一张图片对应一张个人专属答题纸(A4 纸),正确上传。
一、更多资料下载:谋学网(www.mouxue.com)(共 10 分)
1.(3 分)什么是引用?它与指针有什么区别?
2.(3 分)C++提供了哪些循环语句?它们各自的特点是什么?
3.(4 分)构造函数的作用是什么?在创建派生类的对象时,应按照怎样
的顺序调用构造函数?
二、填空题(每空 2 分,共 20 分)
1. C++程序中的数据可以分为两大类,其中 是指在程序执行过程中值不改变的数据;
是程序中用于存储信息的单元,并对应于某个内存空间。
2. C++中函数之间传递参数有 和 两种方式。
3. 假设 x = 5,y = 0,z = 3,则表达式 !x || y++ && z 的值为 ,执行表达式后 y
的值为 。
4. 下列程序在构造函数和析构函数中申请和释放类的私有成员,请完成该类的实现。
class MyClass {
private:
int *x;
public:
MyClass(int a);
第 2 页 (共 4 页)
~MyClass();
};
MyClass :: MyClass(int a) { ; }
MyClass :: ~MyClass() { ;}
5. 在 C++中,类 A 的每一个非静态成员函数都有一个隐藏的指针类型的形参 ,它
指向当前正在操作的对象,其类型为 。
三、选择题(每题 2 分,共 20 分)
1. 下列常量中, 不是字符常量。
A.'\007' B. 'a' C. '\n' D. "x"
2. 类的析构函数是 时被自动调用的。
A. 创建类 B. 创建对象
C. 引用对象 D. 释放对象
3. 在 C++语言中,下列变量名正确的是 。
A. char 89_name; B. bool is-loan;
C. int class D. int _abc;
4. 正确的 for 语句是 。已知 int i, a;
A. for(i < 10) a--;
B. for(i = 0, i < 10, i++) a--;
C. for(i = 0; i < 10; i++, a--);
D. for(i = 0; i < 10; a--);
5. 下列关键字中, 不是类定义中使用的关键字。
A. class B. public
C. switch D. protected
6. 关于对象的描述中, 是错误的。
A. 对象就是 C 语言中的结构变量
B. 对象是状态和操作的封装体
C. 对象之间的信息传递是通过消息进行的
D. 对象是某个类的实例
7.下列关于运算符重载的描述中, 是正确的。
A. 运算符重载可改变其优先级
B. 运算符重载不改变其语法结构
C. 运算符重载可改变其结合性
D. 运算符重载可改变其操作数的个数
8. 虚函数使用关键字 。
A. virtual B. static C. public D. private
9. 下面的函数中,静态成员函数不能访问的是 。
A. 静态数据成员 B. 静态成员函数
C. 类以外的函数和数据 D. 非静态数据成员
10. 假定 A 是一个类,那么执行语句“A a, b(3), *p;”调用了 次构造函数。
A. 2 B. 3 C. 4 D. 5
四、读程题(每题 5 分,共 20 分)
1.给出下述源程序的运行结果。
#include <iostream.h>
void fun(int i, int &j)
第 3 页 (共 4 页)
{ j = i * 3; }
void main()
{ int a, b;
fun(3, a);
fun(9, b);
cout << "a + b = " << a + b << endl;
}
2.给出下述源程序的运行结果。
#include <iostream.h>
void main() {
int a = 5;
do {
a++;
cout << ++a << endl;
if(a == 10) break;
}while(a == 9 )
cout << "ok\n"; }
3.给出下述源程序的运行结果。
#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;
}
4.给出下述源程序的运行结果。
#include <iostream.h>
class A {
public:
A() { a1 = a2 = 0; cout << "Default constructor called.\n"; }
A(int i, int j) { a1 = i; a2 = j; cout << "Constructor called.\n"; }
void print() { cout << "a1 = " << a1 <<" , " << "a2 = " << a2 << endl; }
private:
int a1, a2;
};
void main() {
A x, y(3,9);
x.print();
y.print();
}
五 编程题(每题 15 分,共 30 分)
第 4 页 (共 4 页)
5.1 有 n 个整数已按由小到大的顺序排列好,要求输入一个整数,把它插入到原有数列中,
而且仍然保持有序,同时输出新的数列。(插入时应考虑到插入的数的各种可能性,比所有
的数都小;比所有的数都大;在最大数和最小数之间)
5.2 定义并实现一个类 Myst,使下列语句能够正常运行。
Myst x(3.2), y(5,5), z(0.0);
z = 8.9 – y;
y = x – 6.3; |
|