当前位置: 首页icon 51CTO软考 > 软考资讯 >考试科目 >软件设计师2020试题 2020软件设计师试题 pdf

软件设计师2020试题 2020软件设计师试题 pdf

作者:mb62147e277964a2023-10-08 10:39:24
备考咨询 刷题指导
添加专属学姐
下载资料 2024上半年软考备考资料+考试大纲
下载按钮 下载
引号

软件设计师下午考试科目为案例分析,考试题型为主观题,4道必答题,2道(5、6题)选答题,考试时长2个半小时,共75分。 阅读以下说明和c代码,将应填入 (n) 处。 [说明] 在一公文处理系统中,开发者定义了一个公文结构officedoc,其中定义了公文应该具有的属性(字段)。当公文的内容或状态发生变化时,与之相关联的docexplorer结构的值都需要发生改变。一个officedo

引号

软件设计师下午考试科目为案例分析,考试题型为主观题,4道必答题,2道(5、6题)选答题,考试时长2个半小时,共75分。

阅读以下说明和c代码,将应填入 (n) 处。

[说明]

在一公文处理系统中,开发者定义了一个公文结构officedoc,其中定义了公文应该具有的属性(字段)。当公文的内容或状态发生变化时,与之相关联的docexplorer结构的值都需要发生改变。一个officedoc结构能够关联一组docexplorer结构。当officedoc结构的内容或状态发生变化时,所有与之相关联的docexplorer结构都将被更新,这种应用被称为观察者模式。以下代码采用c语言实现,能够正确编译通过。

[c代码]

#include

#define obs_maxnum 20 /*一个officedoc变量最多能够关联的*/

/*doeexplorer变量的个数*/

typedef void( (1) )(struct officedoc*,street docexplorer*);

struct docexplorer{

func update;/* docexplorer结构采用的更新函数*/

/*其他的结构字段省略*/

};

struct officedoc{

(2) myobs[obs_maxnum];

/*存储所有与officedoc相关联的doeexplorer结构指针*/

int index;/*与officedoc结构变量相关联的docexplorer结构变量的个数*/

};

void attach(struet officedoc *doc, struet docexplorer *ob){

/*关联obersver结构ob与officedoe结构doc*/

int loop=0;

if(doc->index >=obs_maxnum || ob==null) return;

for(loop=0; loop index; loop++)

if(doc->myobs[loop]==ob)return;

doc->myobs[doe->index]=ob;

doc->index++;

)

void detach(struct officedoc *doc, struct docexplorer *ob){

/*解除doc结构与ob结构间的关系*/

int loop;

if(ob==null)return;

for(loop=0; loop index; loop6++){

if(doc->myobs[loop]==ob){

if(loop<=doc->index-2)

doe->myobs[loop]=doc->myobs[ (3) ];

doc->myobs[doe->indox-1]=null;

doe->index--;

break;

}

}

}

void updatel(struct officedoc *doc,struct docexplorer *ob){

/*更新ob结构的值,更新代码省略*/

}

void update2(stmct officedoc *doc, struct docexplorer *ob){

/*更新ob结构的值,更新代码省略*/

}

void notifyobs(struet officedoc *doc){

/*当doc结构的值发生变化时,通知与之关联的所有docexplorer结构变量*/

int loop;

for(loop=0; loop index; loop++){

(doc->myobs[loop])->update( (4) );

}

}

void main(){

stmct officedoc doc;/*定义一officedoc变量*/

struct docexplorer explorer1, explorer2;/*定义两个docexplorer变量*/

/*初始化与officedoc变量相关的docexplorer变量个数为0*/

doc.index=0;

explorer1.update=update1;/*设置explorer1变量的更新函数*/

explorer2.update=update2;/*设置explorer2变量的更新函数*/

attaeh(&doc,&explorer1);/*关联explorer1与doc对象*/

attach(&doc,&explorer2);/*关联explorer2与doc对象*/

/*其他代码省略*/

(5) ;/*通知与officedoc相关的所有docexplorer变量*/

return;

}

参考答案:

(1) *func

(2) struct DocExplorer*

(3) doc->index-1,或等价形式

(4) doc和doc->myObs[loop],或等价形式

(5) notifyObs(&doc)

免费刷题报考资讯 机考模拟 学习群