问答题

试题六
阅读以下说明和C++程序代码,将应填入 (n) 处的字句写在答题纸的对应栏内。
【说明】
在下面的C++代码中,类SalesTicket能够完成打印票据正文的功能,类HeadDec- orator与FootDecorator分别能够完成打印票据的台头和脚注的功能。
已知该程序运行后的输出结果如下所示,请填补该程序代码中的空缺。
这是票据的台头!
这是票据正文!
这是票据的脚注!
---------------
这是票据的台头!
这是票据的脚注!
【C++程序代码】
#include
using namespace std;
class SalesTicket{
public:
(1) printTicket() cout << " 是票据正文!" << endl;}
};
class Decorator : public SalesTicket{
SalesTicket *ticket;
public:
Decorator(SalesTicket *t) ticket = t;}
void printTicket(){
if(ticket != NULL)
ticket->printTicket();
}
};
class HeadDecorator : public Decorator{
public:
HeadDecorator(SalesTicket *t): (2){}
void printTicket(){
sour << "这是票据的台头!" << endl;
Decorator::printTicket();
}
};
class FootDecorator :public Decorator{
public:
FootDecorator(SalesTicket *t): (3){}
void printTicket(){
Decorator::printTicket();
cout << "这是票据的脚注!" << endl;
}
};
void main(void){
SalesTicket t;
FootDecorator f(&t);
HeadDecorator h( (4) );
h.printTicket();
cout << "-------------------------"<< endl;
FootDecorator a(NULL);
HeadDecorator b( (5) );
b.printTicket();

}

【参考答案】

(1)virtual void
(2)Decorator(t)
(3)Decorator(t)
(4)&f
(5)&a

热门 试题

问答题
试题七 阅读以下应用说明以及用Visual Basic编写的程序代码,将应填入 (n) 处的字句写在答题纸的对应栏内。 【应用说明】 某应用程序用于监测某种设备的工作温度(20~200℃),其运行窗口中,包括一个温度计(矩形形状shpMeter)以及其中指示当前设备温度的水银柱(矩形形状shpT),文字标签标记了温度刻度;另有一个图片框picCurve,用于动态描述检测到的温度曲线 (用户见到的曲线与水银柱等高变化);命令按钮“开始检测”(cmdStart)用于启动温度检测,命令按钮“暂停检测”(emdStop)用于暂停检测。 矩形形状shpT(水银柱)属性visible初始设置为不可见,属性Filltype设置为solid (实心),FillColor设置为红色;图片框picCurve的属性AutoRedraw设置为Tree 再创建一个定时器TimT,属性Enabled初始设置为False(不起作用),属性Interval(定时间隔)设置为500ms。 为模拟设备温度的检测,程序中利用了(0,1)之间均匀分布的伪随机数获得[20,200]之间的随机温度T。为了便于在图片框picCurve中绘制曲线,程序中对该图片框建立了坐标系统,左上角为原点(0,0),水平向右方向为X轴,垂直向下方向为Y轴,右下角坐标为(50,180)。为了便于观察记录的温度值,图片框中从上到下创建了5条水平线Ls(i),i=0,1,…,4,并在程序中按等间隔排列进行位置设置。程序中每隔半秒算出曲线点(x,y),其中x=0,1,2,…,再用线段连接各相邻曲线点形成温度曲线,如下所示。 【 Visual Basic程序代码 】 Dim (1) As Integer *声明全局变量* Private Sub CmdStart_Click( ) TimT.Enabled = True ShpT.Visible = True End Sub Private Sub CmdStop_Click( ) TimT.Enabled = False End Sub Private Sub Form Load( ) Dim i, H As Integer PicCurve.Scale(0,0)-(50,180) ’设置图片框坐标系:左上角—右下角 H=30 ’H等于图片框高度的六分之一 For i=0 To 4 ’设置5条水平线Ls(i)的位置 Ls(i).X1=0 ’Ls(i)起点横坐标 Ls(i).n=n* (2) ’Ls(±)起点纵坐标 Ls(i).x2=50 ’Ls(i)终点横坐标 Ls(i).Y2=Ls(i).Y1 ’Ls(i)终点纵坐标 Ls(i).BorderColor=&HCOCOC0 &rsquo;设置水平线颜色 Next i x=0 ’设置曲线坐标初值 End Sub Private Sub timT_Timer() Dim T,H As Integer ’T为即时温度,H为图片框中温度点显示高度 T=Int(Rnd*181)+20 ’模拟随机产生设备温度(20~200℃) ’按当前温度显示水银柱 H=ShpMeter.Height* (3) ’算出水银柱的高度 ShpT.Top= (4) -H ’设置水银柱顶部位置 ShpT.Height=H ’设置水银柱的高度 ’绘制温度曲线 y= (5) ’算出曲线上当前点的纵坐标 If x=51 Then ’当超出图片框时 PicCurve.Cis ’清除图片框内以前画的曲线 x=0 ’设置重画曲线的初值 Elself x>0 Then ’除左边点外 PicCurve.Line (x-1,Lasty)-(x,y),vbRed ,由前1点到当前点画红色线段 End If x=x+1 ’准备下一点坐标 Lasty=y ’保存当前坐标供下次使用 End Sub
问答题
试题四 阅读以下应用说明以及用Visual Basic语言编写的程序代码,将应填入 (n) 处的字句写在答题纸的对应栏内。 【应用4.1】 设应用程序的运行窗口内有一个文字标签(Label)以及一个框架,其中有三个复选框(chk1,chk2,chk3),各个复选框单击事件过程的程序代码如下: Private Sub chkl_Click() Label.fontBold=chkl.Value End Sub Private Sub chk2_Click() Label.fontltalic=chk2.Value End Sub Private Sub chk3_Click() Label.fontUnderLine=chk3.Value End Sub 三个复选框chkl、chk2、chk3的功能分别是: (1) 。 【应用4.2】 设应用程序的运行窗口内有两个文本框Txt1和Txt2,其初始内容为空。在Txt1文本框中输入一个数值,当光标离开此文本框(例如进入文本框Txt2)时,执行的程序代码如下: Private Sub Txt1_LostFocus() dim x aS double x=Val(Txtl.Text) 工f x<0 Or x>100 Then Txtl.Text = MsgBox$( 请重新输入! ) Txtl.SetFocus Else Txt2.Text=Txt1.Text End If End Sub 该程序代码的功能是:若在文本框Txtl中输入的数值小于0或大于100,当光标离开此文本框时, (2) ;否则,将其值复制到文本框Txt2中。 【应用4.3】 在下面的应用中,当窗口内发生C1ick事件时,窗口内将显示如图2-4所示的杨辉三角(每一行都是二项式展开的系数)。请完善程序代码。 Private Sub Form Click() Dim i,j,c As Integer,StrTemp AS String Dim a(9)As Integer a(0)=0=a(1)=l:StrTemp=Str(a(1))+Space(3) CurrentX=(ScaleWidth-TextWidth(StrTemp)) 2 Print StrTemp For j=2 TO 9 a(j)=1 For C=j-1 TO 2 Step-1 a(c) = (3) Next (4) = For c = 1 To j StrTemp = StrTemp & Str( (5) ) & Space(5 - Len(Str(a(c)))) Next CurrentX = (ScaleWidth - TextWidth(StrTemp)) 2 Print StrTemp Next End Sub