admin 发表于 2019-11-14 15:41:15

西安电子科技大学网络与继续教育学院 2019 学年下学期 《面向对象程序设计(C++.

>第 1 页 (共 4 页)

学习中心/函授站_



姓 名 学 号



西安电子科技大学网络与继续教育学院
2019 学年下学期
《面向对象程序设计(C++)》期末考试试题
(综合大作业)
题号 一 二 三 四 五 总分
题分 10 20 20 20 30
得分





考试说明:
1、大作业试题于2019 年10 月17 日公布,2019 年10 月18 日至2019 年11 月3 日
在线上传大作业答卷(最多上传10 张图片,一张图片对应一张A4 纸答题纸),要求拍照清晰、
上传完整;
2、考试必须独立完成,如发现抄袭、雷同均按零分计;
3、答案须用《西安电子科技大学网络与继续教育学院标准答题纸》手写完成,要
求字迹工整、卷面干净。



一、简答题(10 分)
1.(3 分)C++提供了哪些循环语句?它们各自的特点是什么?
2.(3 分)C++中的函数调用有哪几种方式?它们有什么区别?
3.(4 分)类的成员按照访问权限的不同可以分为哪几类?分别有什么特点?
二.填空题(20 分,每空 2 分)
1. break 语句在循环结构中的功能是 ,continue 语句的功能
是                      。
2. 包含纯虚函数的类称为       。纯虚函数是                  。
3. C++语言引入了异常处理机制,用         语句“抛出”异常,然后用相应的语句_         
捕获被“抛出”的异常,并做出相应的处理。
4. 在 C++中,类A 的每一个非静态成员函数都有一个隐藏的指针类型的形参 ,它指
向当前正在操作的对象,其类型为             。
5. 有一段程序为:while(表达式)
语句 1 语句 2
……
当表达式的值为非 0 时,执行 ;当表达式为 0 时,执行 。


第 2 页 (共 4 页)

三、选择题(20 分,每题 2 分)
1.在下列给字符数组赋值语句中,   是错误的。已知,char s。
A.s = 'm'; B. s = 'n';
C. s = 'a'; D. s = 'b';
2.下列对结构变量赋值的描述中,   是错误的。
A.结构变量可以使用初始值表对它初始化
B.可以给一个结构变量的各个成员赋值
C.可将任意已知的结构变量名赋给一个结构变量
D.可将一个已知结构变量名赋给相同结构类型的另一个结构变量
3.下列语句中,没有语法错误的是          。
A. const c = 7;
B. int a = { 0, 1, 2, 3 ,4};
C. int static = 20;
D. int a = 10L, *p = &a; int &r = *p;
4.若 i 的初值为 1, 能输出 1 到 10 的整数。
A. if(i++ < 10) cout << i;
B. do cout << i; while(++i <= 10);
C. while(i++ < 10) cout << i;
D. switch(++i <= 10) cout << i;
5.虚函数使用关键字         。
A. virtual B. static C. public D. private
6.关于静态成员的描述中,      是错误的。。
A. 静态成员可分为静态数据成员和静态成员函数
B. 静态数据成员定义后必须在类体内进行初始化
C. 静态数据成员初始化不使用其构造函数
D. 静态成员函数中不能直接引用非静态成员
7. 下列关于 C++的类的叙述中,错误的是 。
A. 类的构造函数在创建对象时自动执行
B. 析构函数不能够重载
C. 一个类中只能有一个构造函数
D. 在类中,成员缺省的访问权限是 private
8. 内联函数使用关键字         来定义。
A. inline B. online
C. void D. static
9. 在C++的类与对象关系的叙述中,错误的是      。
A. 对象是类的一个实例
B. 一个类只能有一个实例
C. 类与对象的关系和数据类型与变量的关系相似
D. 任何一个对象都属于一个已知的类
10.下列关键字中,    不是类定义中使用的关键字。
A. class B. public
C. case D. protected
四、读程题(20 分,每题 5 分)
1. 给出下述源程序的运行结果。


第 3 页 (共 4 页)

#include <iostream.h>
void main() {
static int x[] = {5, 4, 3, 2, 1};
int *p = &x;
int a = 10, b;
for(int i = 3; i >= 0; i--)
b = (*(p+i) < a) ? *(p+i) : a;
cout << b << endl;
}
2. 给出下述源程序的运行结果。
#include <iostream.h>
#include <string>
void main( ) {
   char *p1, *p2, s = "xyz";
   p1 = "abcd";
   p2 = "ABCD";
   strcpy(s+2, strcat(p1+2, p2+1));
   cout << s << 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>
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();
}
五 编程题(每题 15 分,共 30 分)
1.(10 分)编写能统计某个字符在字符串中出现次数的函数,该函数能利用引用调用的方
式将统计结果带回给主调函数。编写该函数,利用 main 函数调用并测试它。
2.(20 分)利用运算符重载,定义复数类的加法与减法,使之能够执行下列运算。
Complexa(4.0, 6), b(7.4, 2), c(0, 0);
c = a + b;
c = 4.1 + a;
c = b + 2.3;
页: [1]
查看完整版本: 西安电子科技大学网络与继续教育学院 2019 学年下学期 《面向对象程序设计(C++.