2007上半年程序员下午试题分析与解答.doc

  1. 1、本文档共9页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
2007上半年程序员下午试题分析与解答

2007上半年 程序员下午试题分析与解答 试题一 阅读以下说明和流程图,回答问题1和问题2。 【说明】 为便于管理,每本正式出版的图书都印有国际标准书号。标准书号由“ISBN”和 10个数字组成,其格式为:ISBN组号-出版者号-书名号-校验码。其中,校验码是根据前面9个数字计算得到的,用于计算机自动校验。假设标准书号的10个数字依次是 a(1),a(2),…,a(10),则校验码a(10)的设置应使S=10*a(1)+9*a(2)+8*a(3)+…1*a(10)能被 11整除。如果校验码a(10)应设置成10,则规定以“X”表示之。例如,信息处理技术员考试大纲的标准书号为:ISBN 7-302-11191-X。第1段上的数字“7”是国际ISBN中心分配给中国ISBN中心管理的组号。第2段上的“302”表示清华大学出版社。标准书号的校验过程如图1-1所示,计算校验码的过程如图1-2所示,其中,Mod(S,11)表示S除以11得到的余数。 【流程图】 【问题1】 请填补流程图中的空缺(1)~(4)。 【问题2】 设“程序员考试大纲”标准书号前9个数字为7-302-08493,请写出其校验码。 参考答案 [问题1] (1)(11-I)*a[I](或I*a(11-I)) (2)9 (3)S+(11-I)*a[I]→S(或S+(I+1)*a(10-I)→S) (4)MOD(11-R,11) [问题2] 9 试题一[分析] 制订标准书号的目的是实现图书的国际统一编码,以便于实现计算机化的图书管理信息系统,使出版社内的图书管理、书库中的图书管理以及书店的图书销售管理具有更高的工作效率和管理水平。 标准书号采用分段编码,总长度是统一的,而段的长度是不统一的。例如,中国的出版者号规定为2~7位数字。对较大的出版社分配比较短的码,留出较长的书名号为较多的书进行编码。 标准书号的最后一位是校验码。设置校验码可以大大减少录入错误造成的管理混乱。 校验码一般由计算机程序产生。当操作人员录入前9个数字后,计算机就会自动启动计算校验码的过程,输出正确的校验码。 在书店(或书库),不论是建库还是查询检索,在手工输入带校验码的标准书号后,计算机就会自动启动校验过程,判断是否输入错误。 计算校验码的过程中,首先要计算S=10*a(1)+9*a(2)+8*a(3)+…+2*a(9),这就要采用循环。在循环前应设置初始值S=0,在循环体内应执行S+(11-I)*a(1)→S或S+ (I+1)*a(10-I)→S(其中的乘号“*”不要丢失)。该循环应对循环变量I=1~9进行(步长默认为1),因此,(2)处应填9,(3)处填S+(11-I)*a(I)→S或S+(I+1)*a(10-I)→S。 接着再计算该S值除以11的余数R。显然0R10。由于R与校验码之和应能被 11整除,因此,校验码应等于MOD(11-R,11)(填11-R者没有考虑R=0的情况)。从而(4)处应填MOD(11-R,11)。在校验码等于10的情况,还应以符号X表示之。 对标准书号的校验过程中,首先要将校验码为x的情况转换成数据10,以便于后续计算。为了计算S=10*a(1)+9*a(2)+8*a(3)+…+1*a(10),需要采用循环。在循环前,应设置初始值S=0,对循环变量I从1到10(步长默认为1),执行语句S+(10-I+1)*a(I)→S或S+I*a(11-I)→S,因此,(1)处填(11-I)*a(I)或I*a(11-I)。 计算出S的值后,还应判断S除以11的余数是否为0。若余数为0,说明S能够被 11整除,表示校验结果正确:若余数非0,则说明输入的标准书号有错(可能是校验码输入有错,也可能是前面的数字输入有错)。这时计算机会输出错误信息,请操作人员仔细校对改正。 试题二 阅读以下说明和C语言函数,将解答填入对应栏内。 【说明】 下面待修改的C程序完成的功能是:对于给定的一个长正整数,从其个位数开始,每隔一位取一个数字(即取其个位、百位、万位等数字),形成一个新的整数并输出。例如,将该程序修改正确后,运行时若输入,则输出的整数为“4532”。 下面给出的C程序代码中有五个错误,请指出所有的错误。 【C程序代码】 01 #include <stdio.h> 02 03 int main() 04 { 05 long n, num; 06 int i; 07 08 do { 09 printf(请输入一个正整数:); 10 scanf(%ld, n); 11

文档评论(0)

cuotian + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档