整理版-北邮面向对象C++试题(房鸣、赵晶玲) - 图文 下载本文

第1学年 <23 ≥23分 第2学年 ≥27分 第一次<27 第二次<27 肄业 第一次<30 第二次<30 第一次<30 第二次<30 第3学年 ≥30分 第4学年 ≥30分 毕业

课程复习--补充题:

一盏信号灯在三种不同的外电压作用下可呈现出不同的颜色:外电压为0V 时信号灯不亮;外电压为50V 时信号灯呈红色;外电压为100V 时信号灯呈黄色;外电压为150V 时信号灯呈绿色。在不改变外电压的条件下,该信号灯在呈现黄色或绿色20 秒后会分别自动变回红色或黄色。若此时改变其外电压则信号灯的颜色仍会呈现为对应电压的颜色(如100V外电压的作用下变为黄色;在150V 外电压的作用下会变为绿色)。试绘出该信号灯颜色变化的状态图。

解:(设时间条件为Time)本题的状态图如下:

6. 已知下图所示的某系统中关于A和B的顺序图,图中给出了关于class A的3个不同状态,试绘制与该类对应的状态图,设没有明示的状态迁移视为可通达。

: A1: 状态13: 状态24: 状态15: 6: 状态27: 8: 9: 10: 11: 状态312: 13: : B2:

解:经过对图中已知的消息逻辑,绘制出如下图所示的状态图:

61状态1Entry/410状态2Entry/8状态3Entry/11

五、改写、补做与纠错题

1. 下述C++程序结构为类B继承类A的派生结构,以不改变对象关系结构为前提,试在源程序的右侧写出只将基类变为类模板结构的全部C++代码,并修改程序内与其相关的其他部分的配套语句。

课程复习--补充题:

设下述C++程序运行于字长为32位的硬件环境中,请在以下C++程序的右侧写出将该源程序变为类模板的对应程序代码。

修改前: 修改后:

10-11考试题

#include using namespace std;

template class A { T1 flag; public: A(){} A(T1 n){flag=n;} void operator=(T1 x){flag=x;} };

template class B {

T2* p;

static int sum; public: B(int n){p=new T2[n];sum=n;} T2& operator[](int m){return p[m];} static int count(){return sum;} };

int B >::sum=0;

void main() { int x; cin>>x; B >b(x); for (int i=0;i >::count()<

2. 下述C++程序存在若干处错误,以不改变程序结构为前提,请在出错的行首做一标记(如*),并将改动最少的正确语句写在所在行下方或出错部位的右侧。

更正错误如下:

No.1 $ :

No.2 $ :在标志处下一行添加如下语句

No.3 $ :

No.4 $ :

No.5 $ :

课程复习--补充题:

1. +程序存在若干处错误,以不改变程序结构为前提,请在出错的行首做一标记(如*),并将改动最少的正确语句写在所在行或出错部位的右侧。 例1:

#include using namespace std; class A { protected:

int i;

public: