A.正确
B.错误
A.10天
B.15天
C.30天
D.90天
试题五(共15分)
阅读下列说明和C++-代码,将应填入 (n) 处的字句写在答题纸的对应栏内。
【说明】
某发票(lnvoice)由抬头(Head)部分、正文部分和脚注(Foot)部分构成。现采用装饰(Decorator)模式实现打印发票的功能,得到如图5-1所示的类图。
【C++代码】
include <iostream>
using namespace std;
class invoice{
public:
(1) {
cout《 "This is the content of the invoice!"《 endl;
}
};
class Decorator : public invoice {
Invoice *ticket;
public:
Decorator(lnvoice *t) { ticket = t; }
void printinvoice(){
if(ticket != NULL)
(2);
}
};
class HeadDecorator : public Decorator{
public:
HeadDecorator(lnvoice*t): Decorator(t) { }
void printinvoice0 {
cout《 "This is the header of the invoice! "<< endl;
(3) ;
}
};
class FootDecorator : public Decorator{
public:
FootDecorator(invoice *t): Decorator(t) { }
void printlnvoice() {
(4) ;
cout《 "This is the footnote of the invoice!"《 endl;
}
};
int main(void) {
Invoice t;
FootDecorator f(&t);
HeadDecorator h(&f);
H.printlnvoice();
cout< < “_____”< < endl;
FootDecorator a(NULL);
HeadDecorator b((5) );
B.printinvoice();
return 0;
}
程序的输出结果为:
This is the header of the invoice!
This is the content of the invoice!
This is the footnote of the invoice!
----------------------------
This is the header of the invoice!
This is the footnote of the invoice!
阅读下列说明、流程图和算法,将应填入(n)处的字句写在对应栏内。
【流程图说明】
下图所示的流程图5.3用N-S盒图形式描述了数组Array中的元素被划分的过程。其划分方法;以数组中的第一个元素作为基准数,将小于基准数的元素向低下标端移动,而大于基准数的元素向高下标端移动。当划分结束时,基准数定位于Array[i],并且数组中下标小于i的元素的值均小于基准数,下标大于i的元素的值均大于基准数。设数组A的下界为low,上界为high,数组中的元素互不相同。
【算法说明】
将上述划分的思想进一步用于被划分出的数组的两部分,就可以对整个数组实现递增排序。设函数int p(int Array[],int low,int high)实现了上述流程图的划分过程并返回基准数在数组Ar ray中的下标。递归函数void sort(int Array[],int L,int H)的功能是实现数组Array中元素的递增排序。
【算法】
void sort(int Array[],int L,int H){
if (L<H) {
k=p(Array,L,H);/*p()返回基准数在数组Array中的下标*/
sort((4));/*小于基准数的元素排序*/
sort((5));/*大于基准数的元素排序*/
}
}
有关系模式A(C,T,H,R,s),根据语义有如下函数依赖集:F={C→T,(H,R)→C,(H,T)→R,(H,S)→R},则关系模式A的码是()。
A)C
B)(H,T)
C)(H,R)
D)(H,S)
A.C
B.(H,R)
C.(H,T)
D.(H,S)
关系模式R(C,T,H,R,S),有如下函数依赖集: F={C→T,(H,R)→C,(H,T)→R,(H,S)→R} 关系模式R的码是______。
A.C
B.(H,R)
C.(H,T)
D.(H,S)