信管网试题库
软件设计师 - 试题库 导航

2023年下半年软件设计师案例分析真题模拟试题演练(5)

2023年10月25日来源:信管网 作者:cnitpm

2023年下半年软件设计师实行机考,考试时间为11月4日、5日开考(分批考试,不同批次考试时间不同),临近考试,每天刷刷题保持题感是有必要的,同时遇到不会的也可以查漏补缺,信管网将在考前为大家提供一些试题,供大家刷题练习。

2023年下半年软件设计师案例分析真题模拟试题演练(5)

  • 试题一:阅读下列说明和C++代码,将应填入  (n)  处的字句写在答题纸的对应栏内。
    【说明】
    某发票(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<<”------------------------”< 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!

    查看答案

    参考答案:

    参考解析:www.cnitpm.com/st/3817318035.html

    信管网考友试题答案分享:

  • 试题二:阅读下列说明和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 if(  (1)  || fabs(i-k)  ══ fabs(pos[i] - pos[k])) {
    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年下半年软件设计师准考证打印时间

【考后估分/对答案收藏】2023年下半年软件设计师真题及答案(综合、案例)

软件设计师历年真题[答题及pdf下载]

考试中心在线刷题[章节习题/模拟试题/每日一练]

信管网app随时随地在线刷题

温馨提示:因考试政策、内容不断变化与调整,信管网提供的以上信息仅供参考,如有异议,请考生以权威部门公布的内容为准!

分享至:

信管网 - 信息系统项目管理专业网站

下载APP-在线学习

培训课程

0元畅享

考试题库

免费资料

客服咨询