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

    【计算机类职业资格】初级程序员下午试题-51及答案解析.doc

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

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

    【计算机类职业资格】初级程序员下午试题-51及答案解析.doc

    1、初级程序员下午试题-51 及答案解析(总分:105.00,做题时间:90 分钟)一、B试题一/B(总题数:1,分数:15.00)阅读以下标准书号校验码的技术说明和程序流程图,根据要求回答问题 1至问题 3。说明为实现图书的国际统一编码,便于实现计算机化的图书管理,每本正式出版的图书都印有国际标准书号。标准书号由“ISBN”、10 个数字(0-9)组成,其格式如下。ISBN 组号-出版者号-书名号-校验码其中,校验码是根据前面 9个数字计算得到的,用于计算机自动校验。假设标准书号的 10个数字依次是a(1),a(2),a(10),则校验码 a(10)的设置应使 S=1O*a(1)+9*a(2)+

    2、8*a(3)+1*a(10)能被 11整除。如果校验码 a(10)应设置成 10,则规定以“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).问题 1请根据标准书号校验码的说明,将图 3-16和图 3-17程序流程图中(1)-(4)空

    3、缺处的内容填补完整。(分数:5.00)_(2).问题 2图 3-16(或图 3-17)中 Mod(S,11)表示 S除以 11得到的余数。以下C 程序实现不使用求余计算符号“%”,求取被除数 p和除数 q之间的余数。C程序static int fun(int p,int q) int x=0;while (x=p) if (x = p)return 0;U (5) /Ureturn U(6) /U(分数:5.00)_(3).问题 3假设应试捷径典型考题解析与考点贯通(系统分析师考试)书籍标准书号前 9个数字为 7-121-04715,请写出其对应的校验码。(分数:5.00)_二、B试题二/B(

    4、总题数:1,分数:15.00)1.说明打保龄球是用一个滚球去打出 10个站立的柱,将柱击倒。一局分 10轮,每轮可滚球一次或多次,以击倒的柱数为依据计分。一局得分为 10轮得分之和,而每轮的得分不仅与本轮滚球情况有关,还可能与后续一两轮的滚球情况有关。即某轮某次滚球击倒的柱数不仅要计入本轮得分,还可能会计入前一两轮得分。具体的滚球击柱规则和计分方法如下:1) 若某一轮的第一次滚球击倒全部 10个柱,则本轮不再滚球(若是第 10轮则还需另加两次滚球)。该轮得分为本次倒柱数(即 10)与以后两次滚球所击倒柱数之和。2) 若某一轮的第一次滚球未击倒 10个柱,则可对剩下未倒的柱再滚球一次。如果这两次

    5、滚球击倒全部10个柱,则本轮不再滚球(若是第 10轮则还需另加一次滚球),该轮得分为本次倒柱数 10与以后一次滚球所击倒柱数之和。3) 若某一轮的两次滚球未击倒全部 10个柱,则本轮不再继续滚球,该轮得分为这两次滚球击倒的柱数之和。总之,若一轮中一次滚球或两次滚球击倒 10个柱,则本轮得分是本轮首次滚球开始的连续 3次滚球击倒柱数之和(其中有一次或两次不是本轮滚球)。若一轮内二次滚球击倒柱数不足 10个,则本轮得分即为这两次击倒柱数之和。表 3-15是打保龄球计分的某个实例说明。B表 3-15 某保龄球计分实例表/B 轮 1 2 3 4 5 6 7 8 9 10 附加各轮第 1次得分 10 1

    6、0 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 85 103 112 132 152 172 192以下C 程序是模拟打一局保龄球的过程,统计各轮得分和累计总分。程序交互地逐轮逐次输入一次滚球击倒的柱数,计算该轮得分和累计总分。为记录一轮内击倒 10柱,但还暂不能计算该轮得分和累计总分的情况,程序引入变量 ok,用来记录当前已完成完整计算的轮次。程序每输入一次滚球击倒柱数,就检查还未完成完整计算的轮次,并计算。C程序#includestdio.h#define N 1

    7、3struct int n; /* 一轮内滚球次球 */int f; /* 第一次击倒柱数 */int s; /* 第一次击倒柱数 */int score; /* 本轮得分 */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 次滚球击倒柱数。

    8、(=%d)/n“, i, n, max );elseprintf(“ 输入附加的第%d 次滚球击倒柱数。(=%d)/n“, C+, max);scanf(“%d , if (d =0 printf(“ 不合理的击倒柱数,请重新输入。/n“)if (ok U(1) /U) /* 对以前未完成计算的轮次分别计算得分与累计总分*/for(j = ok+1; U(2) /U; j+) aj.score += d;if (-aj.m = 0) aj.total = (U (3) /U) + aj.score;ok = U(4) /U;return d;main ( ) int i, first, sec

    9、ond, k; /* i表示轮次 */for ( i = 1 ; ok 10 ; i+)ai.score = ai.f = first = ball(i,1,10);if ( first = 10)ai.m = 2;ai.n = 1;if (first 10 if (first + second = 10)ai.m = 1;U(6) /U;if (i = 10 U (7) /U;printf( “各轮处 1次得分“);for(k 1; k = 1; k+)printf(“%5d“, ak.f);printf(“/n 各轮第 2次得分“);for(k=1; k = i; k+)if (ak.n

    10、2)printf(“ /“);elseprintf(“%5d“, ak.s);printf(“/n 各轮得分“);for(k = 1; k = ok; k+)printf(“%5d“, ak.score);printf(“/n 累计总分“);for(k = 1; k = ok; k+)printf(“%5d“, ak.total);printf(“/n“);(分数:15.00)_三、B试题三/B(总题数:1,分数:15.00)2.说明 以下C 程序所完成的功能是在 3X3方格中填入数字 1N(N10)内的某 9个互不相同的整数,使所有相邻两个方格内的两个整数之和为质数。系统输出满足该要求的所有

    11、填法。系统的部分输出结果如图 3-18所示。 (分数:15.00)_四、B试题四/B(总题数:1,分数:15.00)3.说明 函数 DelA - InsB ( LinkedList La, LinkedList Lb, int key 1,int key 2,int len)的功能是,将线性表 A中关键码为 key 1的节点开始的 len个节点,按原顺序移至线性表 B中关键码为 key 2的节点之前。若移动成功,则返回 0;否则返回-1。 线性表的存储结构为带头节点的单链表,La 为表 A的头指针,Lb 为表 B的头指针。单链表节点的类型定义如下。 typedef struct node in

    12、t key; struct node*next; *LinkedList; C程序 int DelA_InsB (LinkedLiSt La, LinkedList Lb, int key1,int key2,int len LinkedList p, q, S, 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;

    13、while (q k+; if (!q) return -1; /* 表 A中不存在要被删除的 len个节点 */ S = Lb -next; U (3) /U; while (s s = e-next; if (!s) return -1; /* 表 B中不存在键值为 key2的节点 */ U (4) /U q-next; /* 将表 A中的 len个节点删除 */ q-next= U(5) /U pres-next = p; /* 将 len个节点移至表 B */ return 0; (分数:15.00)_五、B试题五/B(总题数:1,分数:15.00)从下列 3道试题(试题 5至试题 7

    14、)中任选 1道解答。如果解答的试题数超过 1道,则题号小的 1道解答有效。阅读以下应用说明及 Visual Basic程序代码,根据要求回答问题 1至问题 4。说明某文件管理系统的图片浏览器如图 3-19所示。运行程序时,用户只要通过驱动器列表框、目录列表框和文件列表框,选择文本文件所在的驱动器、文件夹及相应的文件名后,在图像框中将显示出相应的文件图像。在开发过程中,假设驱动器列表框名为 drvFile,目录列表框名为 dirFile,文件列表框名为 filFile,选择文件类型组合框名为 cboFile,图像框名为 IMG onClick=over(this) title=放大 Show。(

    15、分数:15.00)(1).问题 1请根据说明和图 3-19的显示结果,从以下备选答案中为程序(1)(7)空缺处选择正确的答案。备选答案A. filFile.path B. dirFile.Path=drvFile.DriveCRight(filFile.Path,1) = “/“ DfilFile.Pattern =“*.bmp“EfilFile.Path = dirFile.Path FfilFile.FileNameGSelect Case cboFile.ListIndex(分数:3.75)_(2).问题 2filFile.Pattern属性用于指定文件列表框中所显示的文件类型。若要同时

    16、显示*.jpg 和*.gif 两种文件类型,filFile.Pattern 的属性值应如何设置?(分数:3.75)_(3).问题 3若要在图 3-19窗口(窗体名为 frm001)中新增一个命令按钮,单击该命令按钮后,图像框所显示的图像就会成为此窗口的背景图像。请写出该命令按钮单击事件过程内的程序代码。(分数:3.75)_(4).问题 4假设某应用程序开发工程(默认的工程名为“工程 1”)已先后创建了名为Form01和 Form02的两个窗体。为使窗体 Form02成为运行该工程时的启动窗体,在开发过程应进行的操作过程如下。在工程对话框中,用鼠标右键单击“工程 1(工程 1)”,在选择U (8

    17、) /U命令,系统弹出如图 3-20所示的对话框。切换至图 3-20的“通用”选项,在“U (9) /U”下拉列表框中,选择“U (10) /U”。图 3-20 “工程 1”属性对话框(分数:3.75)_六、B试题六/B(总题数:1,分数:15.00)4.说明 C+语言本身不提供对数组下标越界的判断。为了解决这一问题,在以下C+程序中定义了相应的类模板,使得对于任意类型的二维数组,可以在访问数组元素的同时,对行下标和列下标进行越界判断,并给出相应的提示信息。 C+程序 #include iostream.h template class T class Array; template Clas

    18、s T class ArrayBody friend U(1) /U; T* tpBody; int iRows,iColumns, iCurrentRow; ArrayBody(int IRsz, int iCsz) tpBody = U(2) /U; iRows = iRsz; iColumns = iCsz; iCurrentRow = -1; Public: T row_error = column_error =false; try if (iCurrentRow 0 | iCurrentRow = iRows) row_error = true; if (j0 | j= iColu

    19、mns) column_error = true; if (row_error = true | column_error = true) U (3) /U; catch(char) if (row_error = true) cerr “行下标越界“ iCurrentRow “; if (column_error = true) cerr “列下标越界“ j “; cout “/n“; return tpBodyiCurrentRow * iColumns + j; Arraygody()deletetpBody; ; template class T class Array ArrayBo

    20、dyT tBody; Public; ArrayBodyT return tBody; Array(int iRsz, int iCsz) : U(5) /U ; void main() Arrayint a1(10,20); Arraydouble a2(3,5); int b1; double b2; b1 = a1-510; /有越界提示:行下标越界-5 b1 = a11015; /有越界提示:行下标越界10 b1 = a114; /没有越界提示 b2 = a226; /有越界提示:列下标越界6 b2 = a21020; /有越界提示:行下标越界10列下标越界20 b2 = a214;

    21、/没有越界提示 (分数:15.00)_七、B试题七/B(总题数:1,分数:15.00)5.说明某订单管理系统的部分 UML类图如图 3-21所示。(分数:15.00)_初级程序员下午试题-51 答案解析(总分:105.00,做题时间:90 分钟)一、B试题一/B(总题数:1,分数:15.00)阅读以下标准书号校验码的技术说明和程序流程图,根据要求回答问题 1至问题 3。说明为实现图书的国际统一编码,便于实现计算机化的图书管理,每本正式出版的图书都印有国际标准书号。标准书号由“ISBN”、10 个数字(0-9)组成,其格式如下。ISBN 组号-出版者号-书名号-校验码其中,校验码是根据前面 9个

    22、数字计算得到的,用于计算机自动校验。假设标准书号的 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”是国际 ISBN中心分配给中国 ISBN中心管理的组号;第 2段上的“121”表示电子工业出版社。标准书号的校验过程如图 3-16所示,计算校验码的过程如图 3-17所示。其中,Mod(S,11)表示 S除以 1

    23、1得到的余数。图 3-16 标准书号的校验过程(分数:15.00)(1).问题 1请根据标准书号校验码的说明,将图 3-16和图 3-17程序流程图中(1)-(4)空缺处的内容填补完整。(分数:5.00)_正确答案:()解析:制订标准书号的目的是实现图书的国际统一编码,以便于实现计算机化的图书管理,使出版社内的医书管理、书库中的图书管理及书店的图书销售管理具有更高的工作效率和管理水平。标准书号由“ISBN”, 10 个数字(0-9)组成,采用“ISBN 组号出版者号书名号校验码”的格式。其中,出版者号规定为 2-7 位数字。对较大的出版社分配比较短的码,留出较长的书名号为更多的书进行编码。 标

    24、准书号的最后一位是校验码。设置校验码可以大大减少录入错误造成的管理混乱。校验码一般由计算机程序产生。当操作人员录入前 9个数字后,计算机就会自动启动计算校验码的过程,输出正确的校验码。在书店(或书库),不论是建库还是查询检索,在手工输入带校验码的标准书号后,计算机就会自动启动校验过程,判断是否输入错误。 在图 3-17计算校验码的过程中,首先要计算部分 S值,即 S=10*a(1)十9*a(2)+8*a(3)+2*a (9)。此时需要使用循环处理。在循环开始之前,应设置初始值 S=0。在循环体内,应执行语句“S+=(11-I) *a(I)”或“S+=(1+I)*a(10-I)”(注意,其中的乘

    25、号“*”不要丢失)。该循环应对循环变量 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)”。若读者在该空缺处填写“MOD(11-R)”,则是没有考虑 R=0这一情况。当

    26、校验码等于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的余数是否为 0。若余数为 0,说明 S能够被 11整除,表示校

    27、验结果正确;若余数不为 0,则说明输入的标准书号有错(可能是校验码输入有错,也可能是前面的数字输入有错)。此时计算机应输出相应的错误提示信息,提醒信息录入人员仔细校对改正。(2).问题 2图 3-16(或图 3-17)中 Mod(S,11)表示 S除以 11得到的余数。以下C 程序实现不使用求余计算符号“%”,求取被除数 p和除数 q之间的余数。C程序static int fun(int p,int q) int x=0;while (x=p) if (x = p)return 0;U (5) /Ureturn U(6) /U(分数:5.00)_正确答案:()解析:不使用求余计算符号“%”,求

    28、取被除数 p和除数 q之间的余数的 C程序如下。 C 程序 1 static Int fun_Mod(int p,int q) int x=0; while (x=p) if (x = p) return 0; X += q; return q-(x-p); C程序 2 int fun_Mod(int p,int q) while(pq) if (x = p) return 0; p -= q; return p; (3).问题 3假设应试捷径典型考题解析与考点贯通(系统分析师考试)书籍标准书号前 9个数字为 7-121-04715,请写出其对应的校验码。(分数:5.00)_正确答案:()解析

    29、:由题干说明可知,校验码可以是 09 的数宁或者是符号“”。软件设计师考试考前冲刺预测卷及考点解析的标准书号为:ISBN7-121-05027-5。该标准书号的校验过程如下。 余数为 0,说明输入的标准书号正确。 结合问题 1要点解析思路,若应试捷径典型考题解析与考点贯通(系统分析师考试)书籍标准书号前 9个数字为 7-121-04715,则其对应的校验码 a(10)的计算过程如下。 1) S1=1Oa(1)+9a(2)+8a(3)+7a(4)+6a(5)+5a(6)+4a(7)+3a(8)+2a(9) =107+91+82+71+60+54+47+31+25=163 2) 由于二、B试题二/

    30、B(总题数:1,分数:15.00)1.说明打保龄球是用一个滚球去打出 10个站立的柱,将柱击倒。一局分 10轮,每轮可滚球一次或多次,以击倒的柱数为依据计分。一局得分为 10轮得分之和,而每轮的得分不仅与本轮滚球情况有关,还可能与后续一两轮的滚球情况有关。即某轮某次滚球击倒的柱数不仅要计入本轮得分,还可能会计入前一两轮得分。具体的滚球击柱规则和计分方法如下:1) 若某一轮的第一次滚球击倒全部 10个柱,则本轮不再滚球(若是第 10轮则还需另加两次滚球)。该轮得分为本次倒柱数(即 10)与以后两次滚球所击倒柱数之和。2) 若某一轮的第一次滚球未击倒 10个柱,则可对剩下未倒的柱再滚球一次。如果这

    31、两次滚球击倒全部10个柱,则本轮不再滚球(若是第 10轮则还需另加一次滚球),该轮得分为本次倒柱数 10与以后一次滚球所击倒柱数之和。3) 若某一轮的两次滚球未击倒全部 10个柱,则本轮不再继续滚球,该轮得分为这两次滚球击倒的柱数之和。总之,若一轮中一次滚球或两次滚球击倒 10个柱,则本轮得分是本轮首次滚球开始的连续 3次滚球击倒柱数之和(其中有一次或两次不是本轮滚球)。若一轮内二次滚球击倒柱数不足 10个,则本轮得分即为这两次击倒柱数之和。表 3-15是打保龄球计分的某个实例说明。B表 3-15 某保龄球计分实例表/B 轮 1 2 3 4 5 6 7 8 9 10 附加各轮第 1次得分 10

    32、 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 85 103 112 132 152 172 192以下C 程序是模拟打一局保龄球的过程,统计各轮得分和累计总分。程序交互地逐轮逐次输入一次滚球击倒的柱数,计算该轮得分和累计总分。为记录一轮内击倒 10柱,但还暂不能计算该轮得分和累计总分的情况,程序引入变量 ok,用来记录当前已完成完整计算的轮次。程序每输入一次滚球击倒柱数,就检查还未完成完整计算的轮次,并计算。C程序#includestdio.h#define N

    33、 13struct int n; /* 一轮内滚球次球 */int f; /* 第一次击倒柱数 */int s; /* 第一次击倒柱数 */int score; /* 本轮得分 */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 次滚球击倒柱

    34、数。(=%d)/n“, i, n, max );elseprintf(“ 输入附加的第%d 次滚球击倒柱数。(=%d)/n“, C+, max);scanf(“%d , if (d =0 printf(“ 不合理的击倒柱数,请重新输入。/n“)if (ok U(1) /U) /* 对以前未完成计算的轮次分别计算得分与累计总分*/for(j = ok+1; U(2) /U; j+) aj.score += d;if (-aj.m = 0) aj.total = (U (3) /U) + aj.score;ok = U(4) /U;return d;main ( ) int i, first, s

    35、econd, k; /* i表示轮次 */for ( i = 1 ; ok 10 ; i+)ai.score = ai.f = first = ball(i,1,10);if ( first = 10)ai.m = 2;ai.n = 1;if (first 10 if (first + second = 10)ai.m = 1;U(6) /U;if (i = 10 U (7) /U;printf( “各轮处 1次得分“);for(k 1; k = 1; k+)printf(“%5d“, ak.f);printf(“/n 各轮第 2次得分“);for(k=1; k = i; k+)if (ak.

    36、n 2)printf(“ /“);elseprintf(“%5d“, ak.s);printf(“/n 各轮得分“);for(k = 1; k = ok; k+)printf(“%5d“, ak.score);printf(“/n 累计总分“);for(k = 1; k = ok; k+)printf(“%5d“, ak.total);printf(“/n“);(分数:15.00)_正确答案:()解析:阅读题干说明和 C程序可知,该程序由主函数 main和函数 ball组成。其中,函数 ball的功能是输入每轮击倒的柱数并计算以前未完成计算的轮次的得分和累计总分。由于变量 i表示轮次,而变量

    37、ok用来记录当前已完成完整计算的轮次,因此(1)空缺处所填写的内容是“i-1”。 根据 C程序中的注释信息可知,(2)空缺处所在的 for循环语句是计算以前未完成计算的轮次得分和累计总分,循环控制变量 j的值很显然应小于 i,所以(2)空缺处所填入的内容是“ji”。 如果结构体成员 m的值等于 0,则本轮滚球结束,应完成本轮得分计算,同时应累计总分。结构体成员 total表示总分,由于它没有赋初值,当j等于 1时应等于 0,因此(3)空缺处所填入的内容是“j1? aj-1.total:0”。计算完一轮的得分,变量 ok应加 1,故(4)空缺处所填写的内容是“ok+1”。 在主函数 main中,

    38、(5)空缺处所在的语句为计算第 2次滚球的得分,此时应加上第 1次滚球的得分,因此(5)空缺处所填写的内容是“ai.score+=ai.s”。 如果两次滚球数等于 10,则 m=1,而 n应加 1,故(6)空缺处所填入的内容为“ai.n+”。 (7)空缺处所在的 if语句处理所给规则和记分方法的第 3种情况,即本轮不再滚球,该轮得分为这两次滚球击倒的柱数之和,本次计算完毕,因此(7)空缺处所填写的内容是为“ok=i”。三、B试题三/B(总题数:1,分数:15.00)2.说明 以下C 程序所完成的功能是在 3X3方格中填入数字 1N(N10)内的某 9个互不相同的整数,使所有相邻两个方格内的两个

    39、整数之和为质数。系统输出满足该要求的所有填法。系统的部分输出结果如图 3-18所示。 (分数:15.00)_正确答案:()解析:无论从程序规模还是从问题的复杂程度上看,这是一道有一定难度的试题。解题时可以先分析题干说明,然后再从程序的结构入手。结合试题说明及在程序中的使用情况,可以确定以下各个变量的含义,以及各个函数的功能。 1) bN+1存储可选择的整数的状态,若其值为 1则表示未被选中,可以选;若其值为 0则表示已被选中,不可再选。 2) pos 记录当前正在处理的方格的位置。 3) 数组 checkMatrix3中每个元素的含义是,每个非负整数表示在填入某个位置时需要检查的方格;“-1”

    40、表示一个方格的关联方格罗列结束。 4) 在函数 find()中使用了变量 ok,从语句“ok=check()”,以及“if(ok)”可知,该变量表示一次 check()的成功。 5) 从函数的内容上看,函数 write()是打印一个合理的填写方法。 6) 函数 isPrime()是判断一个整数是否为质数。 7) 函数 selectNum()是为当前方格选择个整数,至于该整数是否合理,还有待函数 check()检查。 解题时,不妨再从函数 find()读起。 if (U (7) /U) write(a); change(); 由题干说明中的关键信息“直至序号为 8的方格也填入合理的整数后,就找到

    41、了一个解,将该解输出,并调整序号为 8的方格所填整数,继续去找下一个解”可知,(7)空缺处所在的 if.else处理语句是上述自然描述语言的表达形式。(7)空缺处所填写的内容就是判断当前填好的方格的位置是否为 8,因此可以填入“pos=8”,也可以填写“pop7”,或者其他等价的语句形式。 对于函数 check(), 该函数是检查填入的整数是否合理,从“(j= U(1) /U)=0”和“if(isPrime(apos+aj)”两个语句来看,变量 j在(1)空缺处取得了方格 pos的一个相关位置的位置值。方格 pos的一个相关位置如何取得呢?可以通过取数组 checkMatrix的一个元素来获取

    42、。获取时可以通过变量 i来计数,使用“checkMatrixposi”来依次取得方格 pos的每一个相关位置的值,即(1)空缺处所填写的内容是“checkMatrixposi”。 由于函数 isPrime()在 m为质数时返回值为 1,否则返回值为 0,由此可以判断,(2)空缺处所在的语句是在检查到不合理的情况时的处理,即对检查到不合理的情况时的返回处理。如果(2)、(3)空缺处所在的 for循环能够顺利结束,则说明检查结果是合理的,即该填写的内容是合理的。此时也应该进行返回处理,即(3)空缺处所在的语句也是一个返回控制。由于函数 check()需要一个返回值以表明检查结果,其中,返回非 0的值表示成功,否则即为失败


    注意事项

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




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

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

    收起
    展开