从下列的 3 道试题(试题六至试题八)中任选 1 道解答。如果解答的试题数超过 1 道,则题号小的 1 道解答有效。 |
试题六(共 15 分)
阅读以下说明和 C++程序代码,将应填入 (n) 处的字句写在答题纸的对应栏内。
[说明]
在下面的C++代码中,类 SalesTicket 能够完成打印票据正文的功能,类 HeadDecorator 与 FootDecorator 分别完成打印票据的台头和脚注的功能。
已知该程序运行后的输出结果如下所示,请填补该程序代码中的空缺。
这是票据的台头!
这是票据正文!
这是票据的脚注!
------------------------
这是票据的台头!
这是票据的脚注!
[C++程序代码]
#include <iostream>
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() {
cout << "这是票据的台头!" << 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();
}
试题七(共 15 分)
阅读以下应用说明以及用 Visual Basic 编写的程序代码,将应填入 (n) 处的字句写在答题纸的对应栏内。
[应用说明]
某应用程序用于监测某种设备的工作温度(20~200 度),其运行窗口中,包括一个 温度计(矩形形状 shpMeter)以及其中指示当前设备温度的水银柱(矩形形状 shpT), 文字标签标记了温度刻度;另有一个图片框 picCurve,用于动态描述检测到的温度曲线(用户见到的曲线与水银柱等高变化);命令按钮“开始检测”(cmdStart)用于启动温 度检测,命令按钮“暂停检测”(cmdStop)用于暂停检测。
矩形形状 shpT(水银柱)属性 visible 初始设置为不可见,属性 Filltype 设置为solid(实心),FillColor 设置为红色;图片框 picCurve 的属性 AutoRedraw 设置为 True;再创建一个定时器 TimT,属性 Enabled 初始设置为 False(不起作用),属性 Interval(定时间隔)设置为 500 毫秒。
为模拟设备温度的检测,程序中利用了(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).Y1 = H * (2) 'Ls(i)起点纵坐标
Ls(i).X2 = 50 'Ls(i)终点横坐标
Ls(i).Y2 = Ls(i).Y1 'Ls(i)终点纵坐标
Ls(i).BorderColor = &HC0C0C0 '设置水平线颜色
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.Cls '清除图片框内以前画的曲线
x = 0 '设置重画曲线的初值
ElseIf x > 0 Then '除左边点外
PicCurve.Line (x-1,Lasty)-(x,y),vbRed '由前 1 点到当前点画红色线段
End If
x = x + 1 '准备下一点坐标
Lasty = y '保存当前坐标供下次使用
End Sub
试题八(共 15 分)
阅读以下说明和 Java 程序代码,将应填入 (n) 处的字句写在答题纸的对应栏内。
[说明]
在下面的 Java 程序代码中,类 SalesTicket 能够完成打印票据正文的功能,类 HeadDecorator 与 FootDecorator 分别完成打印票据的台头和脚注的功能。
已知该程序运行后的输出结果如下所示,请填补该程序代码中的空缺。
这是票据的台头!
这是票据正文!
这是票据的脚注!
------------------------
这是票据的台头!
这是票据的脚注!
[Java 程序代码]
public class SalesTicket {
public void printTicket() {
System.out.println("这是票据正文!");
}
}
public class Decorator extends SalesTicket{
SalesTicket ticket;
public Decorator(SalesTicket t){
ticket = t;
}
public void printTicket(){
if(ticket != null)
ticket.printTicket();
}
}
public class HeadDecorator extends Decorator{
public HeadDecorator(SalesTicket t) {
(1) ;
}
public void printTicket() {
System.out.println("这是票据的台头!");
super.printTicket();
}
}
public class FootDecorator extends Decorator{
public FootDecorator(SalesTicket t) {
(2) ;
}
public void printTicket() {
super.printTicket();
System.out.println("这是票据的脚注!");
}
}
public class Main {
public static void main(String[] args) {
T = new HeadDecorator( (3) );
T. (4) ;
System.out.println("------------------------");
T = new FootDecorator( (5) ); T.printTicket();
}
}
责任编辑:小草