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

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

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

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

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

    1、中级软件设计师下午试题-51 及答案解析(总分:103.00,做题时间:90 分钟)一、B试题一/B(总题数:1,分数:15.00)阅读以下说明和数据流图,回答问题 1问题 3。说明职工信息管理系统是用于对职工相关信息进行检索、统计、工资管理、内部调动管理等的系统。利用该系统,人事科可以对本单位职工信息进行管理,根据不同命令对信息进行增、删、改、内部调动,打印人事表格,进行统计、检索。人事科输入的系统命令需要合法性检查才能被接受、处理。系统命令包括档案维护、数据检索、统计报表、打印命令、代码维护。人事科的输入信息包括个人资料、 检索选项、 统计选项、代码资料、新增档案字段、档案修改资料等条目。

    2、完整的个人资料应包括职工的档案编号、姓名、工作单位、性别、出生日期、技术职称以及学历。通过系统授权,用户可以进行对职工信息数据进行查询检索,检索的条件可以是姓名、工作单位、,性别、技术职称等组合。通过系统授权,超级用户还可以对职工档案进行维护。当超级用户需要对档案进行维护时,输入档案维护命令,得到合法性确认后,可以对系统数据库档案信息进行维护,否则将拒绝执行。档案维护操作可以是增加档案、修改档案、删除档案、增加档案字段中的任何一种操作。档案维护成功后要及时更新职工信息数据文件,保存维护结果。职工管理信息系统的顶层图如图 12-1 所示;职工管理信息系统的第 0 层 DFD 图如图 12-2 所

    3、示,其中,加工 3 的细化图如图 12-3 所示,加工 3.2 的细化图如图 12-4 所示。数据流图 12-1数据流图 12-2数据流图 12-3数据流图 12-4(分数:15.00)(1).问题 1数据流图 12-2 缺少了两条数据流,请采用说明中的词汇给出此数据流名称,并指出方向。(分数:5.00)_(2).问题 2(1)数据流图 12-3 中缺少了与“增加职工记录 3.2” 加工相关的数据流,请采用说明中的词汇给出此数据流名称,并请出此数据流的起点和终点。(2)数据流图 12-4 中还应依赖哪些文件?并指出相关数据流方向。(分数:5.00)_(3).问题 3请补齐下列数据字典条目:系统

    4、命令=_输入信息=_个人资料=_档案维护=_(分数:5.00)_二、B试题二/B(总题数:1,分数:14.00)阅读以下说明和表,回答问题 1 至问题 3。说明图 12-5 中显示一张交通违章处罚通知书。每一个交通违章通知书有一个惟一的编号。交通违章通知书包含了收到处罚的违章者记录、涉及违章的机动车记录、违章记录、处罚记录以及经办警察记录等信息。所根据这张通知书所提供的信息回答下面问题。(分数:14.00)(1).问题 1根据这张通知书所提供的信息,设计了一个 E-R 模型,如图 12-6 所示。请将 (n) 处补充完整。(分数:7.00)_(2).问题 2将问题 1 中的 E-R 模型(图

    5、12-6)转换成 4 个关系数据模型,要求标注主码和外码。(分数:7.00)_三、B试题三/B(总题数:1,分数:15.00)1.说明 分糖果问题是一个经典问题。问题描述如下:幼儿国有 n(20)个孩子围成一圈分糖果,老师先随机地发给每个孩子若干颗糖果,然后按以下规则调整:每个孩子同时将自己手中的糖果分一半给坐在他右边的小朋友;如共有 8 个孩子,则第 1 个将原来的一半分给第 2 个,第 2 个将原有的一半分给第 3个第 8 个将原来的一半分给第 1 个,这样的平分动作同时进行;若平分前,某个孩子手中的糖果是奇数颗,则必须从老师那里要一颗,使他的糖果变成偶数。小孩人数和每个小孩的初始数由键盘

    6、输入。经过多少次调整,使每个孩子手中的糖果一样多,调整结束时每个孩子有糖果多少颗,在调整过程中老师又新增发了多少颗糖果。 C 程序 #include stdlib.h #include stdio.h bool allequall (int child, int n ) /判断各小孩子手中的糖果是否相等 for ( int i=0; in-1; i+) if (childi!=childi+1 ) return false; /不相等返回假 return true; /相等返回真 const int MaxNum=20; /定义最大人数 /主函数 void main ( ) int Num=0

    7、; int *child; int *child1; /构造两个相应大小的数组 child 代表小朋友现有的粮果数 child1 代表小朋友原来有的糖果数 int Tnum=0; int i=0; do printf ( “Pelase input the number of the children: “)., scanf ( “%d“, if ( NumMaxNum ) printf ( “Error Number!“ ); while ( NumMaxNum ); child=new int Nmn; child1=new int Num; for ( i=0; iNum; i+ ) /

    8、将数组赋值 printf ( “Input NO. %d childs candy numbers: “,i+1); scanf ( “%d“, while (U (1) /U) for (i=0; iNum; i+ ) if(U (2) /U) U (3) /U Tnum+; for ( i=0; iNum; i+ ) child1i=childi; /将 child1 赋值用来记忆原来小朋友的粮果数 for ( i=0; iNam; i+ ) U (4) /U for (i=0; iNum-1; i+)/用循环实现前一个小朋友粮果数加后一个小朋友粮果数的一半 childi/=2; chil

    9、di+=child 1 i+1; childNum-1/=2; U (5) /U printf ( “每个同学最后分到糖果数目是%d/n“, child1); printf ( “老师分发出的糖果是%d/n“, Tnum ); 图 12-7是一种解决问题的流程图,请根据该流程图将对应 C 代码U (n) /U处补充完整。 (分数:15.00)_四、B试题四/B(总题数:1,分数:14.00)阅读下列函数说明和 C 代码,回答下面问题。说明冒泡排序算法的基本思想是:对于无序序列(假设扫描方向为从前向后,进行升序排列),两两比较相邻数据,若反序则交换,直到没有反序为止。一般情况下,整个冒泡排序需要

    10、进行众(1kn)趟冒泡操作,冒泡排序的结束条件是在某一趟排序过程中没有进行数据交换。若数据初态为正序时,只需 1 趟扫描,而数据初态为反序时,需进行 n-1 趟扫描。在冒泡排序中,一趟扫描有可能无数据交换,也有可能有一次或多次数据交换,在传统的冒泡排序算法及近年的一些改进的算法中2,3,只记录一趟扫描有无数据交换的信息,对数据交换发生的位置信息则不予处理。为了充分利用这一信息,可以在一趟全局扫描中,对每一反序数据对进行局部冒泡排序处理,称之为局部冒泡排序。局部冒泡排序的基本思想是:对于 N 个待排序数据组成的序列,在一趟从前向后扫描待排数据序列时,两两比较相邻数据,若反序则对后一个数据作一趟前

    11、向的局部冒泡排序,即用冒泡的排序方法把反序对的后一个数据向前排到适合的位置。扫描第对数据对,若反序,对第 2 个数据向前冒泡,使前两个数据成为,有序序列;扫描第二对数据对,若反序,对第 3 个数据向前冒泡,使得前 3 个数据变成有序序列;扫描第 i 对数据对时,其前 i 个数据已成有序序列,若第 i 对数据对反序,则对第 i+1 个数据向前冒泡,使前 i+1 个数据成有序序列;依次类推,直至处理完第 n-1 对数据对。当扫描完第 n-1 对数据对后,N 个待排序数据已成了有序序列,此时排序算法结束。该算法只对待排序列作局部的冒泡处理,局部冒泡算法的名称由此得来。以下为 C 语言设计的实现局部冒

    12、泡排序策略的算法,根据说明及算法代码回答问题 1 和问题 2。变量说明#define N=100 /排序的数据量typedef struct /排序结点int key;info datatype;node;node SortDataN; /待排序的数据组node 类型为待排序的记录(或称结点)。数组 SortData为待排序记录的全体称为一个文件。key 是作为排序依据的字段,称为排序码。datatype 是与具体问题有关的数据类型。下面是用 C 语言实现的排序函数,参数 R为待排序数组,n 是待排序数组的维数,Finish 为完成标志。算法代码void Part-BubbleSort (no

    13、de R, int n)int=0 ; /定义向前局部冒泡排序的循环变量/暂时结点,存放交换数据node tempnode;for (int i=0;in-1;i+) ;if (Ri.keyRi+1.key)U (1) /Uwhile (U (2) /U)tempnode=Rj ;U (3) /URj-1=tempnode ;Finish=false ;U (4) /U / end while / end if / end for / end function(分数:14.00)(1).问题 1阅读下列函数说明和 C 代码,将应填入U (n) /U处的字句写在的对应栏内。(分数:7.00)_(

    14、2).问题 2请根据算法的 C 代码,分析此算法效率。(分数:7.00)_五、B试题五/B(总题数:1,分数:15.00)2.说明 以下代码实现了对象引用作为函数参数,仔细阅读以下代码,分析运行结果,填入U (n) /U处。 代码 #includeiostream.h class Sample int x,y; public: Sample() x=y=0; Sample (int i, int j ) x=i; yj; void copy ( Sample yj; void print ( cout“x=“xend1 ; cout “y=“yend1; ; void Sample: copy

    15、 ( Sample y=s.y; void func ( Sample s1, Sample s2.setxy ( 30,40 ); void main ( ) Sample p ( 1,2 ) ,q; q.copy ( p ); time ( p,q ); p.print ( ); q.print ( ); 运行结果 U(1) /U U(2) /U U(3) /U U(4) /U(分数:15.00)_六、B试题六/B(总题数:1,分数:15.00)3.说明 以下程序为类类型的变量应用实例,通过异常处理检验了类 CCircle 的变量的合法性,即参数半径应为非负值。仔细阅读代码和相关注释,将程

    16、序补充完整。 JAVA 代码 /定义自己的异常类 class CCircleException extends Exception / 定义类 CCircle class CCircle private double radius; public void setRadius ( double r )U (1) /U if ( r0 ) U (2) /U else U (3) /U Public void show ( ) System. out. println ( “area=“+3.14*radius*radius ); public class ciusample public sta

    17、tic void main ( String args ) CCircle cir=new CCircle( ); U (4) /U cir. setRadius ( -2.0 ) U (5) /U System. out. println ( e+“ throwed“ ) ; cir. show( ) ; (分数:15.00)_七、B试题七/B(总题数:1,分数:15.00)4.说明 以下 Visual Basic 代码实现了对位图(BMP)进行旋转显示。以下程序共实现了对 BMP 位图图形进行 180旋转、90旋转(顺时针)、90旋转(逆时针)、水平翻转、垂直翻转共 5 项处理。显示界面如

    18、图 12-8 所示。仔细阅读代码 7-1至代码 7-3,完成U (n) /U代码,并写在对应栏内。 (分数:15.00)_中级软件设计师下午试题-51 答案解析(总分:103.00,做题时间:90 分钟)一、B试题一/B(总题数:1,分数:15.00)阅读以下说明和数据流图,回答问题 1问题 3。说明职工信息管理系统是用于对职工相关信息进行检索、统计、工资管理、内部调动管理等的系统。利用该系统,人事科可以对本单位职工信息进行管理,根据不同命令对信息进行增、删、改、内部调动,打印人事表格,进行统计、检索。人事科输入的系统命令需要合法性检查才能被接受、处理。系统命令包括档案维护、数据检索、统计报表

    19、、打印命令、代码维护。人事科的输入信息包括个人资料、 检索选项、 统计选项、代码资料、新增档案字段、档案修改资料等条目。完整的个人资料应包括职工的档案编号、姓名、工作单位、性别、出生日期、技术职称以及学历。通过系统授权,用户可以进行对职工信息数据进行查询检索,检索的条件可以是姓名、工作单位、,性别、技术职称等组合。通过系统授权,超级用户还可以对职工档案进行维护。当超级用户需要对档案进行维护时,输入档案维护命令,得到合法性确认后,可以对系统数据库档案信息进行维护,否则将拒绝执行。档案维护操作可以是增加档案、修改档案、删除档案、增加档案字段中的任何一种操作。档案维护成功后要及时更新职工信息数据文件

    20、,保存维护结果。职工管理信息系统的顶层图如图 12-1 所示;职工管理信息系统的第 0 层 DFD 图如图 12-2 所示,其中,加工 3 的细化图如图 12-3 所示,加工 3.2 的细化图如图 12-4 所示。数据流图 12-1数据流图 12-2数据流图 12-3数据流图 12-4(分数:15.00)(1).问题 1数据流图 12-2 缺少了两条数据流,请采用说明中的词汇给出此数据流名称,并指出方向。(分数:5.00)_正确答案:()解析:数据流名称:“系统命令”,指向加工“合理性检查 1”。 数据流名称:“职工信息”,起点,“职工信息文件”,终点加工“检索 5” 解析 试题一 做系统分析

    21、题之前必须仔细阅读文字说明,并根据图表说明,理解系统设计者设计系统的思路,从设计者的角度来思考问题。本题所设计的系统为某单位的职工信息管理系统。该系统用于对职工相关信息进行检索、统计、工资管理、内部调动管理等的系统。首先看问题 1,图 12-2 为职工管理信息系统的第 0 层 DFD 图,问题是“12-2 缺少了两条数据流”。仔细对比图 12-1 和图 12-2,就发现图 12-2 中的“系统命令”是从加工 1“合理性检查 1”出发的,由系统顶层图 12-1 可知,“系统命令”来自外部“人事科”。因此,正确的逻辑是:“人事科”发出“系统命令”,经过“合理性检查 1”后,才被系统认可执行。显然“

    22、合理性检查 1”缺乏数据来源“系统命令”。再仔细分析图 12-2 的逻辑,就会发现加工 5“检索 5”缺乏检索数据源,根据文字说明,可知检索为职工信息进行管理的内容之一。那么加工 5“检索 5”依赖于“职工信息文件”。 再看问题 2。(1)数据流图12-3 中缺少了与增加职工记录“3.2” 加工相关的数据流。根据说明,增加职工记录是在一定条件下执行的,即人事科发出了“增加档案”命令并被认可后,才可以增加职工记录。那么缺少的数据流名称为“增加档案命令”(或“增加档案”),起点为加工“档案维护命令分类 3.1”,终点为加工“增加职工记录 3.2”。(2)对于本题首先要明白图 1-4 数据流图是加工

    23、“增加职工记录 3.2”的细化。对比图 12-3 与加工“增加职工记录 3.2”部分和图 12-4,即可知道答案,即加工“记录合理性检查 3.2.2”和加工“写入新的职工信息 3.2.3”均依赖于“职工信息文件”。 对于问题 3,可以从文字说明中获得答案。(2).问题 2(1)数据流图 12-3 中缺少了与“增加职工记录 3.2” 加工相关的数据流,请采用说明中的词汇给出此数据流名称,并请出此数据流的起点和终点。(2)数据流图 12-4 中还应依赖哪些文件?并指出相关数据流方向。(分数:5.00)_正确答案:()解析:(1)数据流名称:“增加档案命令”(或“增加档案”),起点为加工“档案维护命

    24、令分类 3.1”,终点为加工“增加职工记录 3.2”。 (2)加工“记录合理性检查 3.2.2”和加工“写入新的职工信息3.2.3”均依赖于“职工信息文件”。数据流方向从“职工信息文件”到加工“记录合理性检查 3.2.2”;从加工“写入新的职工信息 3.2.3”到“职工信息文件”。(3).问题 3请补齐下列数据字典条目:系统命令=_输入信息=_个人资料=_档案维护=_(分数:5.00)_正确答案:()解析:系统命令=档案维护|数据检索|统计报表|打印命令|代码维护 输入信息=个人资料检索选项统计选项代码资料新增档案字段档案修改资料 个人资料档案编号+姓名+工作单位+性别+出生日期+技术职称+学

    25、历 档案维护增加档案命令修改档案命令|删除档案命令|增加档案字段二、B试题二/B(总题数:1,分数:14.00)阅读以下说明和表,回答问题 1 至问题 3。说明图 12-5 中显示一张交通违章处罚通知书。每一个交通违章通知书有一个惟一的编号。交通违章通知书包含了收到处罚的违章者记录、涉及违章的机动车记录、违章记录、处罚记录以及经办警察记录等信息。所根据这张通知书所提供的信息回答下面问题。(分数:14.00)(1).问题 1根据这张通知书所提供的信息,设计了一个 E-R 模型,如图 12-6 所示。请将 (n) 处补充完整。(分数:7.00)_正确答案:()解析:(1)司机 (2)警察 (3)涉

    26、及 (4)处罚通知 解析 试题二 本题旨在建立交通违章处罚通知书的数据模型。通知书所涉及的对象有受罚驾驶员、受罚车辆、违章方式、违章日期、处罚结果、出具处罚通知书的警察等。明白了他们之间的关系后对于问题 1、2 不难解答。注意驾驶员的驾驶证编号、违章车牌、警察编号都是惟一的。在根据文字说名每一个交通违章通知书有一个惟一的编号。那么完全可以确定关系主码和外码。(2).问题 2将问题 1 中的 E-R 模型(图 12-6)转换成 4 个关系数据模型,要求标注主码和外码。(分数:7.00)_正确答案:()解析:司机(U驾照号/U,姓名,地址,邮编,电话) PK=驾照号 机动车(U牌照号/U,型号,制

    27、造厂,生产日期) PK=牌照号 警察(U警察编号/U,姓名) PK=警察编号 处罚通知(U编号/U,日期,时间,地点,驾照号,牌照号,警告,罚款,暂扣,警察编号) PK=编号 FK=U驾照号/U,U牌照号/U,U警察编号/U三、B试题三/B(总题数:1,分数:15.00)1.说明 分糖果问题是一个经典问题。问题描述如下:幼儿国有 n(20)个孩子围成一圈分糖果,老师先随机地发给每个孩子若干颗糖果,然后按以下规则调整:每个孩子同时将自己手中的糖果分一半给坐在他右边的小朋友;如共有 8 个孩子,则第 1 个将原来的一半分给第 2 个,第 2 个将原有的一半分给第 3个第 8 个将原来的一半分给第

    28、1 个,这样的平分动作同时进行;若平分前,某个孩子手中的糖果是奇数颗,则必须从老师那里要一颗,使他的糖果变成偶数。小孩人数和每个小孩的初始数由键盘输入。经过多少次调整,使每个孩子手中的糖果一样多,调整结束时每个孩子有糖果多少颗,在调整过程中老师又新增发了多少颗糖果。 C 程序 #include stdlib.h #include stdio.h bool allequall (int child, int n ) /判断各小孩子手中的糖果是否相等 for ( int i=0; in-1; i+) if (childi!=childi+1 ) return false; /不相等返回假 retu

    29、rn true; /相等返回真 const int MaxNum=20; /定义最大人数 /主函数 void main ( ) int Num=0; int *child; int *child1; /构造两个相应大小的数组 child 代表小朋友现有的粮果数 child1 代表小朋友原来有的糖果数 int Tnum=0; int i=0; do printf ( “Pelase input the number of the children: “)., scanf ( “%d“, if ( NumMaxNum ) printf ( “Error Number!“ ); while ( Nu

    30、mMaxNum ); child=new int Nmn; child1=new int Num; for ( i=0; iNum; i+ ) /将数组赋值 printf ( “Input NO. %d childs candy numbers: “,i+1); scanf ( “%d“, while (U (1) /U) for (i=0; iNum; i+ ) if(U (2) /U) U (3) /U Tnum+; for ( i=0; iNum; i+ ) child1i=childi; /将 child1 赋值用来记忆原来小朋友的粮果数 for ( i=0; iNam; i+ ) U

    31、 (4) /U for (i=0; iNum-1; i+)/用循环实现前一个小朋友粮果数加后一个小朋友粮果数的一半 childi/=2; childi+=child 1 i+1; childNum-1/=2; U (5) /U printf ( “每个同学最后分到糖果数目是%d/n“, child1); printf ( “老师分发出的糖果是%d/n“, Tnum ); 图 12-7是一种解决问题的流程图,请根据该流程图将对应 C 代码U (n) /U处补充完整。 (分数:15.00)_正确答案:()解析:(1)!allequall(child, Num) (2)childi%2!=0 (3)

    32、childi+; (4)child1i/=2; (5)childNum-1+=child10 解析 此题是一个经典文题“分糖果问题”的一种解法。主要考查考生理解问题、阅读流程图及代码的能力。流程图已经很清楚地把程序代码的思路给表达出来了。对于(1)可以看出应该是程序循环的条件,当糖果数不相等时循环。(2)则判断孩子手中的糖果个数是否奇数。(3)则从老师手中额外取得一颗糖果。(4)求出原来每个小朋友糖果数的一半。(5)把最后一个小朋友糖果数的一半加第一个小朋友的糖果数四、B试题四/B(总题数:1,分数:14.00)阅读下列函数说明和 C 代码,回答下面问题。说明冒泡排序算法的基本思想是:对于无序

    33、序列(假设扫描方向为从前向后,进行升序排列),两两比较相邻数据,若反序则交换,直到没有反序为止。一般情况下,整个冒泡排序需要进行众(1kn)趟冒泡操作,冒泡排序的结束条件是在某一趟排序过程中没有进行数据交换。若数据初态为正序时,只需 1 趟扫描,而数据初态为反序时,需进行 n-1 趟扫描。在冒泡排序中,一趟扫描有可能无数据交换,也有可能有一次或多次数据交换,在传统的冒泡排序算法及近年的一些改进的算法中2,3,只记录一趟扫描有无数据交换的信息,对数据交换发生的位置信息则不予处理。为了充分利用这一信息,可以在一趟全局扫描中,对每一反序数据对进行局部冒泡排序处理,称之为局部冒泡排序。局部冒泡排序的基

    34、本思想是:对于 N 个待排序数据组成的序列,在一趟从前向后扫描待排数据序列时,两两比较相邻数据,若反序则对后一个数据作一趟前向的局部冒泡排序,即用冒泡的排序方法把反序对的后一个数据向前排到适合的位置。扫描第对数据对,若反序,对第 2 个数据向前冒泡,使前两个数据成为,有序序列;扫描第二对数据对,若反序,对第 3 个数据向前冒泡,使得前 3 个数据变成有序序列;扫描第 i 对数据对时,其前 i 个数据已成有序序列,若第 i 对数据对反序,则对第 i+1 个数据向前冒泡,使前 i+1 个数据成有序序列;依次类推,直至处理完第 n-1 对数据对。当扫描完第 n-1 对数据对后,N 个待排序数据已成了

    35、有序序列,此时排序算法结束。该算法只对待排序列作局部的冒泡处理,局部冒泡算法的名称由此得来。以下为 C 语言设计的实现局部冒泡排序策略的算法,根据说明及算法代码回答问题 1 和问题 2。变量说明#define N=100 /排序的数据量typedef struct /排序结点int key;info datatype;node;node SortDataN; /待排序的数据组node 类型为待排序的记录(或称结点)。数组 SortData为待排序记录的全体称为一个文件。key 是作为排序依据的字段,称为排序码。datatype 是与具体问题有关的数据类型。下面是用 C 语言实现的排序函数,参数

    36、 R为待排序数组,n 是待排序数组的维数,Finish 为完成标志。算法代码void Part-BubbleSort (node R, int n)int=0 ; /定义向前局部冒泡排序的循环变量/暂时结点,存放交换数据node tempnode;for (int i=0;in-1;i+) ;if (Ri.keyRi+1.key)U (1) /Uwhile (U (2) /U)tempnode=Rj ;U (3) /URj-1=tempnode ;Finish=false ;U (4) /U / end while / end if / end for / end function(分数:14

    37、.00)(1).问题 1阅读下列函数说明和 C 代码,将应填入U (n) /U处的字句写在的对应栏内。(分数:7.00)_正确答案:()解析:(1)j=i+1; (2)j0 /反序,则交换数据 (4)j-;(或 j=j-1;) 解析 试题四 本题所涉及的算法是对冒泡排序算法的改进,即局部冒泡排序算法。题目说明中对这种局部冒泡排序算法的思想进行了详细的介绍,一定要仔细阅读。做题时,如考生对冒泡排序比较熟练,对于局部冒泡排序算法只要理解了其“只对待排序列作局部的冒泡处理”这一本质,回答问题 1 只需根据局部冒泡排序算法思想和程序代码进行对照阅读。问题 2 见答案分析。(2).问题 2请根据算法的

    38、C 代码,分析此算法效率。(分数:7.00)_正确答案:()解析:此局部冒泡排序算法至少需进行 1 趟扫描,至多需进行 n-1 趟扫描(其中只有一趟扫描是全局的,其余趟扫描都是局部扫描,扫描范围相对小得多。即在待排序数据初始有序(正序)情况下,关键字的比较次数为 n-1,数据的移动次数为 0;在待排序数据初始逆序的情况,关键字的比较次数为 n(n1)/2,最坏情况下,每一次比较均会发生数据的交换,即移动次数为 3n(n-1)/2。显然局部冒泡排序与冒泡排序算法具有相同的时间复杂度,并且在正序和逆序的情况下,所需的关键字的比较次数和移动次数完全相同。五、B试题五/B(总题数:1,分数:15.00

    39、)2.说明 以下代码实现了对象引用作为函数参数,仔细阅读以下代码,分析运行结果,填入U (n) /U处。 代码 #includeiostream.h class Sample int x,y; public: Sample() x=y=0; Sample (int i, int j ) x=i; yj; void copy ( Sample yj; void print ( cout“x=“xend1 ; cout “y=“yend1; ; void Sample: copy ( Sample y=s.y; void func ( Sample s1, Sample s2.setxy ( 30

    40、,40 ); void main ( ) Sample p ( 1,2 ) ,q; q.copy ( p ); time ( p,q ); p.print ( ); q.print ( ); 运行结果 U(1) /U U(2) /U U(3) /U U(4) /U(分数:15.00)_正确答案:()解析:(1)x=1 (2)v=2 (3)x=30 (4)y=40 解析 本题考查考生对 C+面向对象语言的掌握程度和人工运算代码的能力。本题说明对象引用作为函数参数的作用。Sample 类中的 copy()成员函数进行对象拷贝。在 main()中先建立对象 p 和 q,p 与 q 对象的 x,y 值相同,调用 func( )函数,由于第 2 个参数为引用类型,故实参发生改变;而第 1 个参数不是引用类型,实参不发生改变。六、B试题六/B(总题数:1,分数:15.00)3.说明 以下程序为类类型的变量应用实例,通过异常处理检验了类 CCircle 的变量的合法性,即参数半径应为非负值。仔细阅读代码和相关注释,将程序补充完整。 JAVA 代码


    注意事项

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




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

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

    收起
    展开