【计算机类职业资格】初级程序员下午试题-86及答案解析.doc
《【计算机类职业资格】初级程序员下午试题-86及答案解析.doc》由会员分享,可在线阅读,更多相关《【计算机类职业资格】初级程序员下午试题-86及答案解析.doc(18页珍藏版)》请在麦多课文档分享上搜索。
1、初级程序员下午试题-86 及答案解析(总分:105.00,做题时间:90 分钟)一、试题一(总题数:1,分数:15.00)说明为实现图书的国际统一编码,便于实现计算机化的图书管理,每本正式出版的图书都印有国际标准书号。标准书号由“ISBN”、10 个数字(0-9)组成,其格式如下。ISBN 组号-出版者号-书名号-校验码其中,校验码是根据前面 9个数字计算得到的,用于计算机自动校验。假设标准书号的 10个数字依次是a(1),a(2),a(10),则校验码 a(10)的设置应使 S=1O*a(1)+9*a(2)+8*a(3)+1*a(10)能被 11整除。如果校验码 a(10)应设置成 10,则
2、规定以“X”表示之。例如,软件设计师考试考前冲刺预测卷及考点解析的标准书号为:ISBN 7-121-05027-5。第 1段上的数字“7”是国际 ISBN中心分配给中国 ISBN中心管理的组号;第 2段上的“121”表示电子工业出版社。标准书号的校验过程如图 3-16所示,计算校验码的过程如图 3-17所示。其中,Mod(S,11)表示 S除以 11得到的余数。图 3-16 标准书号的校验过程(分数:15.00)_二、试题二(总题数:1,分数:15.00)1.说明打保龄球是用一个滚球去打出 10个站立的柱,将柱击倒。一局分 10轮,每轮可滚球一次或多次,以击倒的柱数为依据计分。一局得分为 10
3、轮得分之和,而每轮的得分不仅与本轮滚球情况有关,还可能与后续一两轮的滚球情况有关。即某轮某次滚球击倒的柱数不仅要计入本轮得分,还可能会计入前一两轮得分。具体的滚球击柱规则和计分方法如下:1) 若某一轮的第一次滚球击倒全部 10个柱,则本轮不再滚球(若是第 10轮则还需另加两次滚球)。该轮得分为本次倒柱数(即 10)与以后两次滚球所击倒柱数之和。2) 若某一轮的第一次滚球未击倒 10个柱,则可对剩下未倒的柱再滚球一次。如果这两次滚球击倒全部10个柱,则本轮不再滚球(若是第 10轮则还需另加一次滚球),该轮得分为本次倒柱数 10与以后一次滚球所击倒柱数之和。3) 若某一轮的两次滚球未击倒全部 10
4、个柱,则本轮不再继续滚球,该轮得分为这两次滚球击倒的柱数之和。总之,若一轮中一次滚球或两次滚球击倒 10个柱,则本轮得分是本轮首次滚球开始的连续 3次滚球击倒柱数之和(其中有一次或两次不是本轮滚球)。若一轮内二次滚球击倒柱数不足 10个,则本轮得分即为这两次击倒柱数之和。表 3-15是打保龄球计分的某个实例说明。表 3-15 某保龄球计分实例表轮 1 2 3 4 5 6 7 8 9 10 附加各轮第 1次得分 10 10 10 7 9 8 8 10 9 10 8各轮第 2次得分 2 1 1 2 1 2各轮得分 30 27 19 9 18 9 20 20 20 20累计总分 30 57 76 8
5、5 103 112 132 152 172 192以下C 程序是模拟打一局保龄球的过程,统计各轮得分和累计总分。程序交互地逐轮逐次输入一次滚球击倒的柱数,计算该轮得分和累计总分。为记录一轮内击倒 10柱,但还暂不能计算该轮得分和累计总分的情况,程序引入变量 ok,用来记录当前已完成完整计算的轮次。程序每输入一次滚球击倒柱数,就检查还未完成完整计算的轮次,并计算。C程序#includestdio.h#define N 13struct int n; /* 一轮内滚球次球 */int f; /* 第一次击倒柱数 */int s; /* 第一次击倒柱数 */int score; /* 本轮得分 */
6、int total; /* 至本轮累计总分 */int m; /* 完成本轮得分计算,还需滚球次数 */aN;int ok = 0; /* 已完成完整计算的轮次数 */int ball(int i, int n, int max) /* 完成一次滚球,输入正确击倒柱数 */int d, j, k;static c=1;while (1)if(i = 10)printf(“ 输入第%d 轮的第%d 次滚球击倒柱数。(=%d)/n“, i, n, max );elseprintf(“ 输入附加的第%d 次滚球击倒柱数。(=%d)/n“, C+, max);scanf(“%d , if (d =0
7、printf(“ 不合理的击倒柱数,请重新输入。/n“)if (ok (1) )/* 对以前未完成计算的轮次分别计算得分与累计总分*/for(j = ok+1; (2) ; j+)aj.score += d;if (-aj.m = 0)aj.total = ( (3) ) + aj.score;ok = (4) ;return d;main ( )int i, first, second, k; /* i表示轮次 */for ( i = 1 ; ok 10 ; i+)ai.score = ai.f = first = ball(i,1,10);if ( first = 10)ai.m = 2;
8、ai.n = 1;if (first 10 if (first + second = 10)ai.m = 1;(6) ;if (i = 10 (7) ;printf( “各轮处 1次得分“);for(k 1; k = 1; k+)printf(“%5d“, ak.f);printf(“/n 各轮第 2次得分“);for(k=1; k = i; k+)if (ak.n 2)printf(“ /“);elseprintf(“%5d“, ak.s);printf(“/n 各轮得分“);for(k = 1; k = ok; k+)printf(“%5d“, ak.score);printf(“/n 累
9、计总分“);for(k = 1; k = ok; k+)printf(“%5d“, ak.total);printf(“/n“);(分数:15.00)_三、试题三(总题数:1,分数:15.00)2.说明以下C 程序所完成的功能是在 3X3方格中填入数字 1N(N10)内的某 9个互不相同的整数,使所有相邻两个方格内的两个整数之和为质数。系统输出满足该要求的所有填法。系统的部分输出结果如图 3-18所示。(分数:15.00)_四、试题四(总题数:1,分数:15.00)3.说明函数 DelA - InsB ( LinkedList La, LinkedList Lb, int key 1,int
10、key 2,int len)的功能是,将线性表 A中关键码为 key 1的节点开始的 len个节点,按原顺序移至线性表 B中关键码为 key 2的节点之前。若移动成功,则返回 0;否则返回-1。线性表的存储结构为带头节点的单链表,La 为表 A的头指针,Lb 为表 B的头指针。单链表节点的类型定义如下。typedef struct nodeint key;struct node*next;*LinkedList;C程序int DelA_InsB (LinkedLiSt La, LinkedList Lb, int key1,int key2,int lenLinkedList p, q, S,
11、 prep, pres;int k;if (!La -next | !Lb -next | len=0)return-l;p = La-next;prep = La;while (p p = p-next;if (!p)return -1; /* 表 A中不存在键值为 key1的节点 */q = p;k = 1;while (q k+;if (!q)return -1; /* 表 A中不存在要被删除的 len个节点 */S = Lb -next;(3) ;while (s s = e-next;if (!s)return -1; /* 表 B中不存在键值为 key2的节点 */(4) q-ne
12、xt; /* 将表 A中的 len个节点删除 */q-next= (5) pres-next = p; /* 将 len个节点移至表 B */return 0;(分数:15.00)_五、试题五(总题数:1,分数:15.00)说明某文件管理系统的图片浏览器如图 3-19所示。运行程序时,用户只要通过驱动器列表框、目录列表框和文件列表框,选择文本文件所在的驱动器、文件夹及相应的文件名后,在图像框中将显示出相应的文件图像。在开发过程中,假设驱动器列表框名为 drvFile,目录列表框名为 dirFile,文件列表框名为 filFile,选择文件类型组合框名为 cboFile,图像框名为 imgSho
13、w。(分数:15.00)_六、试题六(总题数:1,分数:15.00)4.说明C+语言本身不提供对数组下标越界的判断。为了解决这一问题,在以下C+程序中定义了相应的类模板,使得对于任意类型的二维数组,可以在访问数组元素的同时,对行下标和列下标进行越界判断,并给出相应的提示信息。C+程序#include iostream.htemplate class T class Array;template Class T class ArrayBody friend (1) ;T* tpBody;int iRows,iColumns, iCurrentRow;ArrayBody(int IRsz, int
14、 iCsz) tpBody = (2) ;iRows = iRsz;iColumns = iCsz;iCurrentRow = -1;Public:Trow_error = column_error =false;try if (iCurrentRow 0 | iCurrentRow = iRows)row_error = true;if (j0 | j= iColumns)column_error = true;if (row_error = true | column_error = true)(3) ;catch(char)if (row_error = true)cerr “行下标越界
15、“ iCurrentRow “;if (column_error = true)cerr “列下标越界“ j “;cout “/n“;return tpBodyiCurrentRow * iColumns + j;Arraygody()deletetpBody;template class T class Array ArrayBodyT tBody;Public;ArrayBodyT return tBody;Array(int iRsz, int iCsz) : (5) ;void main()Arrayint a1(10,20);Arraydouble a2(3,5);int b1;do
16、uble b2;b1 = a1-510; /有越界提示:行下标越界-5b1 = a11015; /有越界提示:行下标越界10b1 = a114; /没有越界提示b2 = a226; /有越界提示:列下标越界6b2 = a21020; /有越界提示:行下标越界10列下标越界20b2 = a214; /没有越界提示(分数:15.00)_七、试题七(总题数:1,分数:15.00)5.说明某订单管理系统的部分 UML类图如图 3-21所示。(分数:15.00)_初级程序员下午试题-86 答案解析(总分:105.00,做题时间:90 分钟)一、试题一(总题数:1,分数:15.00)说明为实现图书的国际统
17、一编码,便于实现计算机化的图书管理,每本正式出版的图书都印有国际标准书号。标准书号由“ISBN”、10 个数字(0-9)组成,其格式如下。ISBN 组号-出版者号-书名号-校验码其中,校验码是根据前面 9个数字计算得到的,用于计算机自动校验。假设标准书号的 10个数字依次是a(1),a(2),a(10),则校验码 a(10)的设置应使 S=1O*a(1)+9*a(2)+8*a(3)+1*a(10)能被 11整除。如果校验码 a(10)应设置成 10,则规定以“X”表示之。例如,软件设计师考试考前冲刺预测卷及考点解析的标准书号为:ISBN 7-121-05027-5。第 1段上的数字“7”是国际
18、 ISBN中心分配给中国 ISBN中心管理的组号;第 2段上的“121”表示电子工业出版社。标准书号的校验过程如图 3-16所示,计算校验码的过程如图 3-17所示。其中,Mod(S,11)表示 S除以 11得到的余数。图 3-16 标准书号的校验过程(分数:15.00)_正确答案:(制订标准书号的目的是实现图书的国际统一编码,以便于实现计算机化的图书管理,使出版社内的医书管理、书库中的图书管理及书店的图书销售管理具有更高的工作效率和管理水平。标准书号由“ISBN”, 10 个数字(0-9)组成,采用“ISBN 组号出版者号书名号校验码”的格式。其中,出版者号规定为 2-7 位数字。对较大的出
19、版社分配比较短的码,留出较长的书名号为更多的书进行编码。标准书号的最后一位是校验码。设置校验码可以大大减少录入错误造成的管理混乱。校验码一般由计算机程序产生。当操作人员录入前 9个数字后,计算机就会自动启动计算校验码的过程,输出正确的校验码。在书店(或书库),不论是建库还是查询检索,在手工输入带校验码的标准书号后,计算机就会自动启动校验过程,判断是否输入错误。在图 3-17计算校验码的过程中,首先要计算部分 S值,即 S=10*a(1)十 9*a(2)+8*a(3)+2*a (9)。此时需要使用循环处理。在循环开始之前,应设置初始值 S=0。在循环体内,应执行语句“S+=(11-I) *a(I
20、)”或“S+=(1+I)*a(10-I)”(注意,其中的乘号“*”不要丢失)。该循环应对循环变量 I=19 进行(步长默认为 1)控制,因此,(2)空缺处应填入“9”,(3)空缺处所填写的内容是“S+(11-I)*aI-S”或“S+(1+I)*a(10-I)-S”。接着再计算该 S值除以 11的余数 R。显然 0R10。 由于“校验码 a(10)的设置应使 S=10*a(1)+9*a(2)+8*a(3)+1*a(10)能被 11整除”,即余数 R与校验码之和应能被 11整除,因此校验码应等于 MOD(11-R,11),即(4)空缺处所填写的内容是“MOD(11-R,11)”。若读者在该空缺处填
21、写“MOD(11-R)”,则是没有考虑 R=0这一情况。当校验码等于 10时,还应以符号表示。在对标准书号的校验过程(图 3-16)中,首先要将校验码为的情况转换成数据 10,以便于后续计算。为了计算 S=10*a(1)+9*a(2)+8*a(3)+1*a(10),需要使用循环处理。在循环开始之前,应设置初始值S=0,循环变量 I从 1到 10(步长默认为 1)。在循环体内,应执行语句“S+(11-I)*a(1)”或“S+I*a(11 -I)”。因此(1)空缺处所填写的内容是“(11-I)*a(I)”或“I*a(11-I)”。在图 3-16中,计算出 S值之后,还应判断 S除以 11的余数是否
- 1.请仔细阅读文档,确保文档完整性,对于不预览、不比对内容而直接下载带来的问题本站不予受理。
- 2.下载的文档,不会出现我们的网址水印。
- 3、该文档所得收入(下载+内容+预览)归上传者、原创作者;如果您是本文档原作者,请点此认领!既往收益都归您。
下载文档到电脑,查找使用更方便
5000 积分 0人已下载
下载 | 加入VIP,交流精品资源 |
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 计算机 职业资格 初级 程序员 下午 试题 86 答案 解析 DOC
