C++面向对象程序设计模拟试题五参考答案
一、单项选择题(本大题共15小题,每小题2分,共30分)在每小题列出的四个备选项中,只有一个是苻合题目要求的。请将其代码填写在题后的括号内。错选,多选或未选均无分。
1.A) 6.D) 11.D)
2.B) 7.C) 12.D)
3.C) 8.B) 13.B)
4.C) 9.A) 14.C)
5.A) 10.C) 15.A)
二、判断正误题(本大题共5小题,每小题2分,共10分)判断正误,在题后的括号内,正确的划上“√”错误的划上”×”。
1.参考答案:“√”
2.参考答案:“×” 3.参考答案:“×” 4.参考答案:“×” 5.参考答案:“×”
三、 填空题(本大题共5小题,每小题2分,共10分)不写解题过程, 将正确的答案写在每小题的空格内,错填或不填均无分
1.参考答案:oprator- 2.参考答案:继承 3.参考答案:pb=&b 4.参考答案:重载 5.参考答案:delete
四、程序分析题(本大题共8小题,每小题3分,共24分)给出下面各程序的输出结果。
1.输出结果为: Destructor B! 7 Destructor A! 6 Destructor B! 0 Destructor A! 5
2.输出结果为: x=5, y=12
3.输出结果为: 7
4.输出结果为: 1 2
5.输出结果为:
d=88i=88
6.程序的输出结果为: 0 1 2 3 4
7.程序的输出结果为: constructor,i=0,destructor
8.程序的输出结果为: 2 3
五、 程序改错题(本大题共3小题,共3处错, 每改一错2分,共6分)指出下面程序中错误, 说明错误原因, 并加以改正。
1.参考答案: 第7行应从右自左默认,应改为 A(int i,int j=0 ): mi( i ), mj( j ) { } 或改为
A(int i = 0,int j = 0): mi(i), mj(j) { }
2.参考答案: 第7行,改为A(int a): m_a(a) {}
3.参考答案: 第9行,析构函数无返回值类型(void类型也不行),应改为~CTest(){…}
六、 编程题(本大题共2小题,每小题10分,共20分)
1.参考程序:
#include
class DateInfo { private: public:
DateInfo(): year(2010), month(6), day(8){ }
DateInfo(int y, int m, int d): year(y), month(m), day(d){ } void Set(int y, int m, int d) {
year = y; month = m;
int year, month, day;
};
}
day = d;
void Show() { cout << year << \年\月\日\
int main() { }
DateInfo d1, d2(1988, 8, 18); d1.Show(); d2.Show(); d2.Set(1999, 9, 19); d2.Show(); return 0;
2.参考程序:
#include
class Complex { private: public: }; int main() { }
Complex c1(3.5, 4.5), c2(2.5, 5.5), c3(0.0, 0.0); c3 = c1 + c2; c3.Show(); return 0;
Complex(double a, double b): r(a), i(b) {} void Show() { cout << r << \ \Complex operator +(Complex obj) { return Complex(r + obj.r, i + obj.i); }
double r, i;