欢迎来到麦多课文档分享! | 帮助中心 海量文档,免费浏览,给你所需,享你所想!
麦多课文档分享
全部分类
  • 标准规范>
  • 教学课件>
  • 考试资料>
  • 办公文档>
  • 学术论文>
  • 行业资料>
  • 易语言源码>
  • ImageVerifierCode 换一换
    首页 麦多课文档分享 > 资源分类 > DOC文档下载
    分享到微信 分享到微博 分享到QQ空间

    【计算机类职业资格】中级软件设计师下午试题-28及答案解析.doc

    • 资源ID:1323144       资源大小:73KB        全文页数:18页
    • 资源格式: DOC        下载积分:5000积分
    快捷下载 游客一键下载
    账号登录下载
    微信登录下载
    二维码
    微信扫一扫登录
    下载资源需要5000积分(如需开发票,请勿充值!)
    邮箱/手机:
    温馨提示:
    如需开发票,请勿充值!快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。
    如需开发票,请勿充值!如填写123,账号就是123,密码也是123。
    支付方式: 支付宝扫码支付    微信扫码支付   
    验证码:   换一换

    加入VIP,交流精品资源
     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    【计算机类职业资格】中级软件设计师下午试题-28及答案解析.doc

    1、中级软件设计师下午试题-28 及答案解析(总分:105.00,做题时间:90 分钟)一、试题一(总题数:1,分数:15.00)阅读下列说明和数据流图,回答问题 1 至问题 3,将解答填入对应栏内。 说明 下面给出的是某房产管理系统的一套分层数据流图。其功能描述如下: (1)系统随时根据住房送来的入住单更新住户基本信息文件; (2)每月初系统根据物业管理委员会提供的月附加费(例如清洁费、保安费、大楼管理费等)表和房租调整表,计算每家住户的月租费(包括月附加费),向住户发出交费通知单。住户交费时,系统输入交费凭证,核对后输出收据给住户; (3)系统定期向物业管理委员会提供住房分配表和交费清况表;

    2、(4)住户因分户或换房,在更新住户基本信息文件的同时,系统应立即对这些住户做月租费计算,以了结分户或换房前的房租。 以下是经分析得到的数据流图及部分数据字典,有些地方有待填充,假定顶层数据流图是正确的。图 1-1是项层数据流图,图 1-2 是第 0 层数据流图,图 1-3 是第 1 层数据流图,其中 A 是加工 1 的细化图,B 是加工 2 的细化图。假定题中提供的顶层图是正确的,请回答下列问题。 图 1-1 * 图 1-2 *图 1-3 * *(分数:15.00)(1).指出图 1-2 中的哪些文件可不必画出。(分数:5.00)_(2).指出在哪些图中遗漏了哪些数据流。回答时请用如下形式之一

    3、: 1)图中遗漏了加工(或文件)流向加工(或文件)的数据流; 2)图中加工遗漏了输入(或输出)数据流。(分数:5.00)_(3).指出图 1-3 的 B 中加工 2.3 能检查出哪些不合格交费凭证。(分数:5.00)_二、试题二(总题数:3,分数:15.00)1.根据 E-R 图中给出的词汇,按照“有关模式名(属性,属性,)”的格式,将此 E-R 图转换为 3 个关系模式,指出每个关系模式中的主码和外码,其中模式名根据需要取实体名或联系名。(分数:6.00)_2.创建 S 表时,SNo 使用 CHAR(5)并且唯一,SName 使用 CHAR(30),Status 使用 CHAR(8),Cit

    4、y 使用CHAR(20)。请在下列用于创建表 S 的 SQL 语句空缺处填入正确的内容。 CREATE TABLE S(SNo CHAR(5), SName CHAR(30), Status CHAR(8), City CHAR(20), _;(分数:3.00)填空项 1:_假定 SP 表存储供应情况,如下的 SQL 语句是用于查询“产地为Beijing、零件号为P101的零件的所供应的总数(包括所有供应商)”的不完整语句,请在空缺处填入正确的内容。 SELECT SUM(Qty) FROM SP WHERE PNo=”P101 (1) PNo (2) (SELECT PNo FROM (3)

    5、 WHERE city=“Beijing“) (4) PNo;(分数:6.00)填空项 1:_填空项 1:_填空项 1:_填空项 1:_三、试题三(总题数:1,分数:15.00)阅读以下说明和程序流程图,将应填入 (n) 处的字句写在对应栏内。 说明 假定用一个整型数组表示一个长整数,数组的每个元素存储长整数的一位数字,则实际的长整数 m 表示为:m=ak10k-2+ak-110k-3+a310+a2 其中 a1保存该长整数的位数,a0保存该长整数的符号:0 表示正数、1 表示负数。注:数组下标从 0开始。 流程图(图 4-1)用于计算长整数的加(减)法。运算时先决定符号,再进行绝对值运算。对

    6、于绝对值相减情况,总是绝对值较大的减去绝对值较小的,以避免出现不够减情况。注,此处不考虑溢出情况,即数组足够大。这样在程序中引进两个指针 pA 和 pB,分别指向绝对值较大者和较小者。而对绝对值相加,情况,让 pA 指向 LA,pB 指向 LB,不区分绝对值大小。pApB 可用通式 pA+flag*pB 来计算,flag 为+1 时即对应 pA+pB,flag 为-1 时即对应 pA-pB。需特别注意的是,对于相减,不够减时要进行借位,而当最高位借位后正好为 0 时,结果的总位数应减 1;对于加法,有最高进位时,结果的总位数应加 1。 (分数:15.00)填空项 1:_填空项 1:_填空项 1

    7、:_填空项 1:_填空项 1:_四、试题四(总题数:1,分数:15.00)阅读下列函数说明和 C 代码,将应填入 (n) 处的字句写在对应栏内。 说明 HufTman 树又称最优二叉树,是一类带权路径长度最短的树,在编码中应用比较广泛。 构造最优二叉树的 Huffman 算法如下: 根据给定的 n 各权值 W1,w 2,w n)构成 n 棵二叉树的集合 F=T1,T 2,T n,其中每棵树 Ti中只有一个带权为 wi的根节点,其左右子树均空。 在 F 中选取两棵根节点的权值较小的树作为左右子树,构造一棵新的二叉树,置新构造二叉树的根节点的权值为其左右予树根节点的权值之和。 从 F 中删除这两棵

    8、树,同时将新得到的二叉树加入到 F 中。 重复,直到 F 中只剩一棵树为止。 函数中使用的预定义符号如下: #define INT MAX 10000 #define ENCODING LENGTH 1000 typedef enum(none,left_child,right_child) Which; /*标记是左孩子还足右孩子*/ typedef char Elemtype; typedef struct TNode/Huffman 树节点 Elemtype letter; int weight; /权值 int parent; /父节点 Which sigh; char *code;

    9、/节点对应编码 HTNode,*HuffmanTree; int n; char coding50;/储存代码 函数 void Select(HuffmanTree HT,int end,int *sl,int *s2) /*在 0END 之间,找出最小和次小的两个节点序号,返吲 S1、S2*/ int i; int min 1=INT_MAX; int min 2=INT_MAX; for(i=0;i=end;i+)/*找最小的节点序号*/ if( (1) )(HTi.weightminl) *s1=i; min 1=HTi.weight; for(i=0;i=end;i+)/*找次小节点的

    10、序号*/ if(HTi.parent=0)( (2) ) (min 2HTi.weight) *s2=i; min 2=HTi.weight; void HuffmanTreeCreat(HuffmanTreeHT)/*建立 HUFFMAN 树*/ int i; int m=2*n-1; int s1,s2; for(i=n;im;i+) Select( (3) ); HTs1.parent=i; HTs2.parent=i; HTs1.sigh=left child; HTs2.sigh=right child; HTiweight= (4) ; void HuffmanTreeEncodi

    11、ng(char sen,HuffmanTree HT) /*将句子进行编码*/ int i=0; int j; while(seni !=0) for(j=0;jn;j+) if(HTj.letter=seni)(/*字母吻合则用代码取代*/ strcat(coding, (5) ); break; i+;if (Sen 1=32) i+; printf(“/n%s“,coding); (分数:15.00)填空项 1:_填空项 1:_填空项 1:_填空项 1:_填空项 1:_五、试题五(总题数:1,分数:15.00)阅读下列函数说明和 C+代码,将应填入 (n) 处的字句写在对应栏内。 说明

    12、在销售系统中常常需要打印销售票据,有时需要在一般的票据基础上打印脚注。这样就需要动态地添加一些额外的职责。如下展示了 Decorator(修饰)模式。SalesOrder 对象使用一个 SalesTicket 对象打印销售票据,先打印销售票据内容,然后再打印脚注。图 5-1 显示了各个类间的关系。以下是 C+语言实现,能够正确编译通过。 图 5-1 * C+代码 class Component public: (1) void prtTicket()=0; ; class SalesTicket:public Component public: void prtTicket() cout“Sa

    13、les Ticket!“endl; ; class Decorator:public Component public: virtual void prtTicket(); Decorator(Component *myC); private: (2) myComp; ; Decorator:Decorator(Component *myC) myComp=myC;void Decorator:prtTicket() myComp-prtTicket(); class Footer:public Decorator public: Footer(Component *myC); void pr

    14、tTicket(); void prtFooter(); ; Footer:Footer(Component *myC): (3) void Footer:prtFooter() cout“Footer“endl; void Footer:prtTicket() (4) ; prtFooter(); class SalesOrder public: void prtTicket(); ; void SalesOrder:prtTicket() Component *myST; myST=new Footer( (5) ); myST-prtTicket(); (分数:15.00)填空项 1:_

    15、填空项 1:_填空项 1:_填空项 1:_填空项 1:_六、试题六(总题数:1,分数:15.00)阅读以下说明和 Jrdva 代码,将应填入 (n) 处的字句写在对应栏内。 说明 在销售系统中常常需要打印销售票据,有时需要在一般的票据基础上打印脚注。这样就需要动态地添加一些额外的职责。如下展示了 Decorator(修饰)模式。SalesOrder 对象使用一个 SalesTicket 对象打印销售票据。图 6-1 显示了各个类间的关系。以下是 Java 语言实现,能够正确编译通过。 图 6-1 *Java 代码 /Component.java 文件 public (1) class Comp

    16、onent abstract publ ic void prtTicket(); /salesTicket.java 文件 public class SalesTicket extends Component public void prtTicket() /Sales ticket printing code here System.out.printin(“SalesTicket“); /Decorator.java 文件 publ ic abstract class Decorator extends Component public void prtTicket() if(myComp

    17、!=null)myComp.prtTicket(); private (2) myComp; public Decorator(Component myC) myComp=myC; /Footer.java 文件 public class Footer extends Decorator public Footer(Component myC) (3) ; public void prtTicket() (4) ; prtFooter(); publ ic void prtFooter() /place printing footer code here System.out.println(

    18、“Footer“); /salesorder.java 文件 public class SalesOrder void prtTicket() Component myST; myST=new Footer( (5) ); /Print Ticket with footers as needed myST.prtTicket(); (分数:15.00)填空项 1:_填空项 1:_填空项 1:_填空项 1:_填空项 1:_七、试题七(总题数:1,分数:15.00)阅读以下说明和 C 代码,将应填入 (n) 处的字句写在对应栏内。 说明 函数 combine(a,b,c)是计算两个整数的组合数。由

    19、于计算结果可能超出 10ng 整型的可表示范围,故采用数组方式存储,例如:k 位长整数 m 用数组 c存储结构如下:m=ck10 k-1+ck-110k-2+c210+c1,利用 c0存储长整数 m 的位数,即 c0=k。数组的每个元素只存储长整数 m 的一位数字,长整数运算时,产生的中间结果的某位数字可能会大于 9,这是就应该调用 format 将其归整,使数组中的每个元素始终只存储长整数的一位数字。 整数 a 和 b(ab)的组合数为:*,其中 u1=a,u 2=a-1,u b=a-b+1,d 1=1,d 2=2,d b=b。为了计算上述分式,先从 u1,u 2,u b中去掉 d1d2db

    20、的因子,得到新的 u1,u 2,u b,然后再将它们相乘。 函数 #define NAXN 100 int gcd(int a,int b)/求两个整数 a 和 b 的最大公因子 if(ab) intC=a;a=b;b=c; for(inti=b;i=2;i-) if( (1) )return i; return 1; void format(int *a)/将长整数数组归整 int i; for(i=1;ia0|ai=10;i+) if(i=a0) (2) ; ai+1+=ai/10; ai=ai%10; if(ia0) (3) ; void combine(int a,int b,int

    21、*C) int i,J,k,x; int dMAXN,uMAXN; k=0; for(i=a;i=a-b+1;i-)u+k=i; u0=b; for(i=1;i=b;i+)di=i; for(i=1;i=u0;i+)/从 u 中各元素去掉 d 中整数的因子 for(j=1;j=b;j+) x=gcd(ui,dj);/计算最大公约数 ui/=X; dj/=x; (4) ;C1=1;/长整数 c 初始化 for(i=1;i=u0;i+)(/将 u 中各整数相乘,存于长整数 c 中 if(ui!=1) for(j=1;j=c0;j+) Cj= (5) ; format(C);/将长整数 c 归整 (

    22、分数:15.00)填空项 1:_填空项 1:_填空项 1:_填空项 1:_填空项 1:_中级软件设计师下午试题-28 答案解析(总分:105.00,做题时间:90 分钟)一、试题一(总题数:1,分数:15.00)阅读下列说明和数据流图,回答问题 1 至问题 3,将解答填入对应栏内。 说明 下面给出的是某房产管理系统的一套分层数据流图。其功能描述如下: (1)系统随时根据住房送来的入住单更新住户基本信息文件; (2)每月初系统根据物业管理委员会提供的月附加费(例如清洁费、保安费、大楼管理费等)表和房租调整表,计算每家住户的月租费(包括月附加费),向住户发出交费通知单。住户交费时,系统输入交费凭证

    23、,核对后输出收据给住户; (3)系统定期向物业管理委员会提供住房分配表和交费清况表; (4)住户因分户或换房,在更新住户基本信息文件的同时,系统应立即对这些住户做月租费计算,以了结分户或换房前的房租。 以下是经分析得到的数据流图及部分数据字典,有些地方有待填充,假定顶层数据流图是正确的。图 1-1是项层数据流图,图 1-2 是第 0 层数据流图,图 1-3 是第 1 层数据流图,其中 A 是加工 1 的细化图,B 是加工 2 的细化图。假定题中提供的顶层图是正确的,请回答下列问题。 图 1-1 * 图 1-2 *图 1-3 * *(分数:15.00)(1).指出图 1-2 中的哪些文件可不必画

    24、出。(分数:5.00)_正确答案:(“房租文件”和“交费文件”)解析:分层数据流图中,只涉及单个加工的文件不必画出,可在子图中再画。依此标准,图 1-2 中文件“房租文件”和“交费文件”不必画出。(2).指出在哪些图中遗漏了哪些数据流。回答时请用如下形式之一: 1)图中遗漏了加工(或文件)流向加工(或文件)的数据流; 2)图中加工遗漏了输入(或输出)数据流。(分数:5.00)_正确答案:(加工 1 子图中,遗漏了从住户基本信息文件到加工 1.1(入住单校验)的数据流。加工 1子图中,加工 1.6(制作住房分配报告)遗漏了输出数据流:住房分配表。加工 2 子图中,加工 2.1(计算月租费)遗漏了

    25、输入数据流:月附加费表。加工 2 子图中,加工 2.4(制作收据)遗漏了输出数据流:收据。)解析:分层数据流图时刻牢记父图与子图平衡原则。对这种数据流缺失题目,认真对照父图与子图就可得出答案。另外,还要注意与文件的交互,包括错误数据流大多也是出在此。(3).指出图 1-3 的 B 中加工 2.3 能检查出哪些不合格交费凭证。(分数:5.00)_正确答案:(交费凭证中有非法字符;交费文件中不存在与之对应的交费凭证。)解析:二、试题二(总题数:3,分数:15.00)1.根据 E-R 图中给出的词汇,按照“有关模式名(属性,属性,)”的格式,将此 E-R 图转换为 3 个关系模式,指出每个关系模式中

    26、的主码和外码,其中模式名根据需要取实体名或联系名。(分数:6.00)_正确答案:(S(Sno,Sname,Status,City),主键为 SNo。 P(PNo,PName,Color,Weight,City),主键为 PNo。 SP(SNo,PNo,Status,Qty),主键为(SNo,PNo)。)解析:E-R 模型向关系模型的转换应遵循如下原则: 每个实体类型转换成一个关系模式。 一个 1:1 的联系(一对一联系)可转换为一个关系模式,或与任意一段的关系模式合并。 一个 1:n 的联系(一对多联系)可转换为一个关系模式,或与 n 端的关系模式合并。 一个 n:m 的联系(多对多联系)可转

    27、换为一个关系模式,两端关系的码及其联系的属性为该关系的属性,而关系的码为两端实体的码的组合。 三个或三个以上多对多的联系可转换为一个关系模式,诸关系的码及联系的属性为关系的属性,而关系的码为各实体的码的组合。 具有相同码的关系可以合并。 根据题述易于判断供应商的主键为供应商编号 SNo,零件的主键为零件编号 PNo。2.创建 S 表时,SNo 使用 CHAR(5)并且唯一,SName 使用 CHAR(30),Status 使用 CHAR(8),City 使用CHAR(20)。请在下列用于创建表 S 的 SQL 语句空缺处填入正确的内容。 CREATE TABLE S(SNo CHAR(5),

    28、SName CHAR(30), Status CHAR(8), City CHAR(20), _;(分数:3.00)填空项 1:_ (正确答案:PRIMARYKEY SNo)解析:创建表时往往需要声明主键、外键、非空、唯一等完整性约束条件,表 S 中,SNo 是主键,声明主键有两种实现手法:PRIMARY KEY(SNO),或者 NOT NULL、UNIQUE,不同的是 NOT NULL 是列级约束,必须在列名之后声明,而 PRIMARY KEY 是表级约束。创建表的完整 SQL 语句如下: CREATE TABLE表名(列名数据类型列级完整性约束条件 ,列名数据类型YON 完整性约束条件 ,

    29、表级完整性约束条件 列级完整性约束条件有:NULL(空)、UNIQUE(取值唯一)。PRIMARY KEY(属性或属性组)申明主码,FOREIGN KEY(属性或属性组)申明外码。 故空(1)应填 PRIMARY KEY SNo。假定 SP 表存储供应情况,如下的 SQL 语句是用于查询“产地为Beijing、零件号为P101的零件的所供应的总数(包括所有供应商)”的不完整语句,请在空缺处填入正确的内容。 SELECT SUM(Qty) FROM SP WHERE PNo=”P101 (1) PNo (2) (SELECT PNo FROM (3) WHERE city=“Beijing“)

    30、(4) PNo;(分数:6.00)填空项 1:_ (正确答案:AND)解析:填空项 1:_ (正确答案:IN)解析:填空项 1:_ (正确答案:P)解析:填空项 1:_ (正确答案:GROUP BY)解析:查询“产地为Beijing、零件号为P101的零件的所供应的总数(包括所有供应商)”是一个集函数查询,具体是求和 SUM,往往搭配 GROUP BY;查询条件有两个:产地是 Beijing、零件号是 P101;这样涉及到的表有:SP、P。空(1)是连接两个查询条件的,在此两个条件是“并且”关系,故空(1)应填AND,空(4)应填 GROUP BY。 空(2)引出的是一个子查询,可选的有:IN

    31、/NOT IN、EXISTS/NOT EXISTS,首先排除 EXISTS/NOTEXISTS,根据语义,子查询是“产地为 Beijing 的零件号”,故空(2)应填 IN。 包含产地和零件号属性的表自然是零件表 P,故空(3)应填 P。三、试题三(总题数:1,分数:15.00)阅读以下说明和程序流程图,将应填入 (n) 处的字句写在对应栏内。 说明 假定用一个整型数组表示一个长整数,数组的每个元素存储长整数的一位数字,则实际的长整数 m 表示为:m=ak10k-2+ak-110k-3+a310+a2 其中 a1保存该长整数的位数,a0保存该长整数的符号:0 表示正数、1 表示负数。注:数组下

    32、标从 0开始。 流程图(图 4-1)用于计算长整数的加(减)法。运算时先决定符号,再进行绝对值运算。对于绝对值相减情况,总是绝对值较大的减去绝对值较小的,以避免出现不够减情况。注,此处不考虑溢出情况,即数组足够大。这样在程序中引进两个指针 pA 和 pB,分别指向绝对值较大者和较小者。而对绝对值相加,情况,让 pA 指向 LA,pB 指向 LB,不区分绝对值大小。pApB 可用通式 pA+flag*pB 来计算,flag 为+1 时即对应 pA+pB,flag 为-1 时即对应 pA-pB。需特别注意的是,对于相减,不够减时要进行借位,而当最高位借位后正好为 0 时,结果的总位数应减 1;对于

    33、加法,有最高进位时,结果的总位数应加 1。 (分数:15.00)填空项 1:_ (正确答案:flag:=1)解析:填空项 1:_ (正确答案:carry:=0)解析:填空项 1:_ (正确答案:carry:0)解析:填空项 1:_ (正确答案:LCi+1:0)解析:填空项 1:_ (正确答案:LCi+2:0)解析:对这种题目,首先阅读说明,从功能上了解程序的结构,把握整体框架,再仔细对照阅读流程图,且勿先阅读流程图。 仔细阅读完说明,就知道整体框架了:先决定符号,再进行绝对值的加减,其中加减是用 flag 来标识的。对于加法,要注意进位,特别是最高进位;对于减法,要注意借位,亦即负进位,在此不

    34、用考虑不够减情况,但仍要特别注意最高借位,当最高位正好为 0 时,要把高位所有的 0 去掉。 空(1)很容易就得到答案,应为 flag:=1。 空(2)以下就开始绝对值的加减了。此时 PA、PB 已正确赋值。 在计算过程中,进位是需要特别注意的,从下面的流程可知,Carry 表示的就是进位,需要进行初始化,故空(2)应填 carrry:=0。 空(3)以下是 i=N 的情况,即对于计算结束,进行后期处理,此时就要考虑最高进位的问题。可得空(3)应填 carry:0,即判断最高进位是否为 O(对减法为负进位)。 空(4)是删除高位的 0,故应填 LCi+1:0。 空(5)处是具体进行加减法运算的

    35、。空(5)处的条件主要是针对减法的,当不够减时需要借位,故空(5)应填 LCi+2:0。四、试题四(总题数:1,分数:15.00)阅读下列函数说明和 C 代码,将应填入 (n) 处的字句写在对应栏内。 说明 HufTman 树又称最优二叉树,是一类带权路径长度最短的树,在编码中应用比较广泛。 构造最优二叉树的 Huffman 算法如下: 根据给定的 n 各权值 W1,w 2,w n)构成 n 棵二叉树的集合 F=T1,T 2,T n,其中每棵树 Ti中只有一个带权为 wi的根节点,其左右子树均空。 在 F 中选取两棵根节点的权值较小的树作为左右子树,构造一棵新的二叉树,置新构造二叉树的根节点的

    36、权值为其左右予树根节点的权值之和。 从 F 中删除这两棵树,同时将新得到的二叉树加入到 F 中。 重复,直到 F 中只剩一棵树为止。 函数中使用的预定义符号如下: #define INT MAX 10000 #define ENCODING LENGTH 1000 typedef enum(none,left_child,right_child) Which; /*标记是左孩子还足右孩子*/ typedef char Elemtype; typedef struct TNode/Huffman 树节点 Elemtype letter; int weight; /权值 int parent; /

    37、父节点 Which sigh; char *code; /节点对应编码 HTNode,*HuffmanTree; int n; char coding50;/储存代码 函数 void Select(HuffmanTree HT,int end,int *sl,int *s2) /*在 0END 之间,找出最小和次小的两个节点序号,返吲 S1、S2*/ int i; int min 1=INT_MAX; int min 2=INT_MAX; for(i=0;i=end;i+)/*找最小的节点序号*/ if( (1) )(HTi.weightminl) *s1=i; min 1=HTi.weigh

    38、t; for(i=0;i=end;i+)/*找次小节点的序号*/ if(HTi.parent=0)( (2) ) (min 2HTi.weight) *s2=i; min 2=HTi.weight; void HuffmanTreeCreat(HuffmanTreeHT)/*建立 HUFFMAN 树*/ int i; int m=2*n-1; int s1,s2; for(i=n;im;i+) Select( (3) ); HTs1.parent=i; HTs2.parent=i; HTs1.sigh=left child; HTs2.sigh=right child; HTiweight=

    39、(4) ; void HuffmanTreeEncoding(char sen,HuffmanTree HT) /*将句子进行编码*/ int i=0; int j; while(seni !=0) for(j=0;jn;j+) if(HTj.letter=seni)(/*字母吻合则用代码取代*/ strcat(coding, (5) ); break; i+;if (Sen 1=32) i+; printf(“/n%s“,coding); (分数:15.00)填空项 1:_ (正确答案:HTi.parent=0)解析:填空项 1:_ (正确答案:*s1 !=i)解析:填空项 1:_ (正确答

    40、案:HT,i-1,s1,s2)解析:填空项 1:_ (正确答案:HTs1.weight+HTs2.weight)解析:填空项 1:_ (正确答案:HTj.code)解析:根据算法说明的可知是根据根节点权值选择,即只考察根节点,而根节点对应的 parent 等于0,故空(1)应填 HTi.parent=0。此答案可由空(2)处的 if 条件容易得出。 至于空(2),此处是找次小的,自然需要排除最小的,sl 记录了最小树的下标,故填*s1 !=i。 仔细参照 Select 函数的定义,容易得出空(3)答案。应填“HT,i-1,s1,s2”,要注意的是后两个参数需要传递地址,因形参是指针。 根据算法

    41、说明的,“置新构造二又树的根节点的权值为其左右子树根节点的权值之和”,而此处 HTi的左右子树的根节点分别为 HTs1和 HTs2,所以空(4)应填 HTs1.weight+HTs2.weight。由注释“字母吻合则用代码取代”可知,此处是将对应代码加到 coding 中,而节点的 code 字段存储了节点对应编码,故空(5)应填 HTj.code。五、试题五(总题数:1,分数:15.00)阅读下列函数说明和 C+代码,将应填入 (n) 处的字句写在对应栏内。 说明 在销售系统中常常需要打印销售票据,有时需要在一般的票据基础上打印脚注。这样就需要动态地添加一些额外的职责。如下展示了 Decor

    42、ator(修饰)模式。SalesOrder 对象使用一个 SalesTicket 对象打印销售票据,先打印销售票据内容,然后再打印脚注。图 5-1 显示了各个类间的关系。以下是 C+语言实现,能够正确编译通过。 图 5-1 * C+代码 class Component public: (1) void prtTicket()=0; ; class SalesTicket:public Component public: void prtTicket() cout“Sales Ticket!“endl; ; class Decorator:public Component public: vir

    43、tual void prtTicket(); Decorator(Component *myC); private: (2) myComp; ; Decorator:Decorator(Component *myC) myComp=myC;void Decorator:prtTicket() myComp-prtTicket(); class Footer:public Decorator public: Footer(Component *myC); void prtTicket(); void prtFooter(); ; Footer:Footer(Component *myC): (3) void Footer:prtFooter() cout“Footer“endl; void Footer:prtTicket() (4) ;


    注意事项

    本文(【计算机类职业资格】中级软件设计师下午试题-28及答案解析.doc)为本站会员(sumcourage256)主动上传,麦多课文档分享仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知麦多课文档分享(点击联系客服),我们立即给予删除!




    关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服 - 联系我们

    copyright@ 2008-2019 麦多课文库(www.mydoc123.com)网站版权所有
    备案/许可证编号:苏ICP备17064731号-1 

    收起
    展开