好文档 - 专业文书写作范文服务资料分享网站

软件设计师考试 - 历年真题及答(2007年-2012)年 - 图文

天下 分享 时间: 加入收藏 我要投稿 点赞

软件设计师历年试题

试题五(共 15 分)

从下列的 3 道试题(试题五至试题七)中任选 1 道解答。 如果解答的试题数超过 1 道,则题号小的 1 道解答有效 阅读以下说明和 C 语言函数,将应填入 (n) 处的字句写在答题纸的对应栏内。 [说明]

在一个分布网络中,资源(石油、天然气、电力等)可从生产地送往其他地方。在传输过程中,资源会有损耗。例如,天然气的气压会减少,电压会降低。我们将需要输送的资源信息称为信号。在信号从信源地送往消耗地的过程中,仅能容忍一定范围的信号衰减,称为容忍值。分布网络可表示为一个树型结构,如图 5-1 所示。信号源是树根,树中的每节点(除了根)表示一个可以放置放大器的子节点,其中某些节点同时也是信号消耗点,信号从一个节点流向其子节点。

每个节点有一个 d 值,表示从其父节点到该节点的信号衰减量。例如,在图 5-1 中,节点 w、p、q 的 d 值分别为 2、1、3,树根节点表示信号源,其 d 值为 0。

每个节点有一个 M

值,表示从该节点出发到其所有叶子的信号衰减量的最大值。显然,叶子节点

的 M 值为 0。对于非叶子节点 j,M(j)=max{M(k) + d(k) | k 是 j 的孩子节点}。在此公式中,要计算节点的 M 值,必须先算出其所有子节点的 M 值。

在计算 M 值的过程中,对于某个节点 i,其有一个子节点 k 满足 d(k)+M(k)大于容忍值,则应在 k 处放置放大器,否则,从节点 i 到某叶子节点的信号衰减量会超过容忍值,使得到达该叶子节点时信号不可用,而在节点 i 处放置放大器并不能解决到达叶子节点的信号衰减问题。

例如,在图 5-1 中,从节点 p 到其所有叶子节点的最大衰减值为 4。若容忍值为 3,则必须在 s 处放置信号放大器,这样可使得节点 p 的 M 值为 2。同样,需要在节点 q、v 处放置信号放大器,如图 5-2 阴影节点所示。若在某节点放置了信号放大器,则从该节点输出的信号与信号源输出的信号等价。

15

软件设计师考试历年真题 第29页 共 16 页 软件设计师历年试题 函数 placeBoosters(TreeNode *root)的功能是:对于给定树型分布网络中各个节点,计算其信号衰减量的最大值,并确定应在树中的哪些节点放置信号放大器。

全局变量 Tolerance 保存信号衰减容忍值。 树的节点类型定义如下: typedef struct TreeNode {

int id; /*当前节点的识别号*/ int ChildNum; /*当前节点的子节点数目*/ int d; /*父节点到当前节点的信号衰减值*/

struct TreeNode **childptr; /*向量,存放当前节点到其所有子节点的指针*/ int M; /*当前节点到其所有子节点的信号衰减值中的最大值*/ bool boost; /*是否在当前节点放置信号放大器的标志*/ }TreeNode; [C语言函数]

void placeBoosters(TreeNode *root )

{ /* 计算 root 所指节点处的衰减量,如果衰减量超出了容忍值,则放置放大器 */ TreeNode *p; int i,degradation; if ( (1) ) {

degradation = 0; root->M = 0; i = 0;

if (i >= root->ChildNum)

return;

p = (2) ;

for(;i < root->ChildNum && p; i++,p = (3) ){ p->M = 0; (4) ;

if (p->d + p->M > Tolerance) { /*在 p 所指节点中放置信号放大器*/ p->boost = true; p->M = 0; }

if (p->d + p->M > degradation) degradation = p->d + p->M; }

root -> M = (5) ; } }

试题六(共 15 分)

阅读下列说明和 C++代码,将应填入 (n) 处的字句写在答题纸的对应栏内。 [说明]

某游戏公司现欲开发一款面向儿童的模拟游戏,该游戏主要模拟现实世界中各种鸭子的发声特征、飞行特征和外观特征。游戏需要模拟的鸭子种类及其特征如表 6-1 所示:

16

软件设计师考试历年真题 第31页 共 17 页 软件设计师历年试题

为支持将来能够模拟更多种类鸭子的特征,采用策略设计模式(Strategy)设计的类图如图 6-1 所示:

其中,Duck 为抽象类,描述了抽象的鸭子,而类 RubberDuck、MallardDuck、CottonDuck和 RedHeadDuck 分别描述具体的鸭子种类,方法 fly()、quack()和 display()分别表示不同种类的鸭子都具有飞行特征、发声特征和外观特征;类 FlyBehavior 与 QuackBehavior 为抽象类,分别用于表示抽象的飞行行为与发声行为;类 FlyNoWay 与 FlyWithWings 分别描述不能飞行的行为和用翅膀飞行的行为;类 Quack、Squeak 与 QuackNoWay 分别描述发出“嘎嘎”声的行为、发出橡皮与空气摩擦声的行为与不发声的行为。请填补以下代码中的空缺。 [C++代码] #include using namespace (1); class FlyBehavior {

public : (2) fly() = 0; };

class QuackBehavior {

public:(3) quack() = 0; };

class FlyWithWings:public FlyBehavior{

public: void fly(){ cout << \使用翅膀飞行 !\ };

class FlyNoWay:public FlyBehavior{

17

软件设计师考试历年真题 第33页 共 18 页 软件设计师历年试题 不能飞行 !\

};

class Quack:public QuackBehavior{

public: void quack(){ cout << \发出\\'嘎嘎\\'声 !\ } };

class Squeak:public QuackBehavior{

public: void quack(){ cout << \发出空气与橡皮摩擦声 !\ };

class QuackNoWay:public QuackBehavior{

public: void quack (){ cout << \不能发声 !\ };

class Duck { protected:

FlyBehavior * (4) ; QuackBehavior * (5) ; public:

void fly(){ (6) ; } void quack() { (7) ; }; virtual void display()=0; };

class RubberDuck: public Duck { public:

RubberDuck(){

flyBehavior = new (8) ; quackBehavior = new (9) ; }

~RubberDuck(){

if(!flyBehavior) delete flyBehavior; if(!quackBehavior) delete quackBehavior; }

void display(){ /*此处省略显示橡皮鸭的代码 */ } };

//其它代码省略 试题七(共 15 分)

阅读下列说明和 Java 代码,将应填入 (n) 处的字句写在答题纸的对应栏内。 [说明]

某游戏公司现欲开发一款面向儿童的模拟游戏,该游戏主要模拟现实世界中各种鸭子的发声特征、飞行特征和外观特征。游戏需要模拟的鸭子种类及其特征如表 7-1 所示:

}

18

软件设计师考试历年真题 第35页 共 19 页 软件设计师历年试题

为支持将来能够模拟更多种类鸭子的特征,采用策略设计模式(Strategy)设计的类图如图 7-1 所示:

其中,Duck 为抽象类,描述了抽象的鸭子,而类 RubberDuck、MallardDuck、CottonDuck和 RedHeadDuck 分别描述具体的鸭子种类,方法 fly()、quack()和 display()分别表示不同种类的鸭子都具有飞行特征、发声特征和外观特征;接口 FlyBehavior 与 QuackBehavior 分别用于表示抽象的飞行行为与发声行为;类 FlyNoWay 与 FlyWithWings 分别描述不能飞行的行为和用翅膀飞行的行为;类 Quack、Squeak 与 QuackNoWay 分别描述发出“嘎嘎”声的行为、发出橡皮与空气摩擦声的行为与不发声的行为。请填补以下代码中的空缺。 [Java 代码] (1) FlyBehavior {

public void fly(); };

(2) QuackBehavior {

public void quack(); };

class FlyWithWings implements FlyBehavior{

public void fly(){ System.out.println(\使用翅膀飞行 !\ };

class FlyNoWay implements FlyBehavior{

public void fly(){ System.out.println(\不能飞行 !\ };

class Quack implements QuackBehavior{

public void quack(){ System.out.println(\发出\\'嘎嘎\\'声 !\ }

19

软件设计师考试历年真题 第37页 共 20 页

软件设计师考试 - 历年真题及答(2007年-2012)年 - 图文

软件设计师历年试题试题五(共15分)从下列的3道试题(试题五至试题七)中任选1道解答。如果解答的试题数超过1道,则题号小的1道解答有效阅读以下说明和C语言函数,将应填入(n)处的字句写在答题纸的对应栏内。[说明]在一个分布网络中,资源(石油、天然气、电力等)可从生产地送往其他地方。在传输过程中,
推荐度:
点击下载文档文档为doc格式
2x340866my9y6ym8bd1l
领取福利

微信扫码领取福利

微信扫码分享