2023年10月25日来源:信管网 作者:cnitpm
2023年下半年软件设计师实行机考,考试时间为11月4日、5日开考(分批考试,不同批次考试时间不同),临近考试,每天刷刷题保持题感是有必要的,同时遇到不会的也可以查漏补缺,信管网将在考前为大家提供一些试题,供大家刷题练习。
2023年下半年软件设计师案例分析真题模拟试题演练(5)
试题一:
【说明】
某发票(lnvoice)由抬头(Head)部分、正文部分和脚注(Foot)部分构成。现采用装饰( Decorator)模式实现打印发票的功能,得到如图5-1所示的类图。
【C++代码】
#include
using namespace std;
class Invoice{ public:
(1) {
cout<<"This is the content of the invoice!"<
};
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 printInvoice() {
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.printInvoice();
cout<<”------------------------”<
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!
查看答案
试题二:阅读下列说明和C代码,回答问题1至问题3,将解答写在答题纸的对应栏内。
【说明】
n-皇后问题是在n行n列的棋盘上放置n个皇后,使得皇后彼此之间不受攻击,其规则是任意两个皇后不在同一行、同一列和相同的对角线上。
拟采用以下思路解决n-皇后问题:第i个皇后放在第i行。从第一个皇后开始,对每个皇后,从其对应行(第i个皇后对应第i行)的第一列开始尝试放置,若可以放置,确定该位置,考虑下一个皇后;若与之前的皇后冲突,则考虑下一列;若超出最后一列,则重新确定上一个皇后的位置。重复该过程,直到找到所有的放置方案。
【C代码】
下面是算法的C语言实现。
(1)常量和变量说明
pos:一维数组,pos[i]表示第i个皇后放置在第i行的具体位置
count:统计放置方案数
i,j,k:变量
N:皇后数
(2)C程序
#include
#include
#define N4
/*判断第k个皇后目前放置位置是否与前面的皇后冲突*/
in isplace(int pos[], int k) {
int i;
for(i=1; i
return 0;
}
}
return 1;
}
int main() {
int i,j,count=1;
int pos[N+1];
//初始化位置
for(i=1; i<=N; i++) {
pos[i]=0;
}
(2) ;
while(j>=1) {
pos[j]= pos[j]+1;
/*尝试摆放第i个皇后*/
while(pos[j]<=N&& (3)_) {
pos[j]= pos[j]+1;
}
/*得到一个摆放方案*/
if(pos[j]<=N&&j══ N) {
printf("方案%d: ",count++);
for(i=1; i<=N; i++){
printf("%d ",pos[i]);
}
printf("\n");
}
/*考虑下一个皇后*/
if(pos[j]<=N&& (4) ) {
j=j+1;
} else{ //返回考虑上一个皇后
pos[j]=0;
(5) ;
}
}
return 1;
}
【问题1】(10分)
根据以上说明和C代码,填充C代码中的空(1)~(5)。
【问题2】(2分)
根据以上说明和C代码,算法采用了 (6) 设计策略。
【问题3】(3分)
上述C代码的输出为:
(7) 。
查看答案
参考答案:
参考解析:www.cnitpm.com/st/3815415695.html
信管网考友试题答案分享:
信管网cnitpm493877469991:
(1)pos[k]==pos[i] (2)pos[1]=1 (3)isplace(pos,j)==1(4)isplace(pos,j)==0 (5)j=j-1
(6)回溯 (7)1
阅读推荐:
【考后估分/对答案收藏】2023年下半年软件设计师真题及答案(综合、案例)
温馨提示:因考试政策、内容不断变化与调整,信管网提供的以上信息仅供参考,如有异议,请考生以权威部门公布的内容为准!
相关推荐