2007年上半年程序员下午试卷.docxVIP

2007年上半年程序员下午试卷.docx

此“教育”领域文档为创作者个人分享资料,不作为权威性指导和指引,仅供参考
  1. 1、本文档共10页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  5. 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  6. 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  7. 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  8. 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多

2007年上半年程序员下午试卷

1.试题一(共15分)

阅读以下说明和流程图,回答问题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”表示之。例如,信息处理技术员考试大纲的标准书号为:ISBN7-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,请写出其校验码。[15分]

参考答案:

【问题1】

(1)(11-I)*a[I]

(2)9

(3)S+(11-I)*a[I]-S

(4)(11-R)%11

【问题2】9

2.试题二(共15分)

阅读以下说明和C语言函数,将解答填入答题纸的对应栏内。

[说明]

下面待修改的C程序完成的功能是:对于给定的一个长正整数,从其个位数开始,每隔一位取一个数字(即取其个位、百位、万位等数字),形成一个新的整数并输出。例如,将该程序修改正确后,运行时若输入,则输出的整数为“4532”。下面给出的C程序代码中有五个错误,请指出所有的错误。

[C程序代码]

[15分]

参考答案:

错误1:变量k没有声明

错误2:变量num没有初始化,或者num应初始化为0

错误3:第10行scanf函数参数错

错误4:第13行循环条件错

错误5:第14行if语句条件错,或者将=改为==

3.试题三(共15分)

阅读以下说明和C语言函数,将应填入(n)处的字句写在答题纸的对应栏内。

[说明]

函数count_months(DATEstart,DATEend)的功能是:计算两个给定日期之间所包含的完整月份数。

该函数先算出起止日期中所含的完整年数,再计算余下的完整月份数。

规定两个相邻年份的同月同日之间的间隔为1年。例如,2007.5.30~2008.5.30的间隔为1年。若相邻两年中前一年是闰年,并且日期是2月29日,则到下一年的2月28日为1年,即2008.2.29~2009.2.28的间隔为1年。

规定两个相邻月份的相同日之间的间隔为1个月,但需要特别考虑月末的特殊情况。例如,2007.1.29~2007.2.28的间隔为1个月,同理,2007.1.30~2007.2.28、2007.1.~2007.2.28的间隔都是1个月。

计算起止日期间隔不足一年的完整月份数时,分两种情况:

1)起止日期不跨年度。先用终止日期的月号减去起始日期的月号得到月份数,然后再根据情况进行修正。例如,起止日期为2008.3.31~2008.9.20,通过月号算出月份数为6。修正时,通过调用函数makevalid将2008.9.31改为2008.9.30,与终止日期2008.9.20比较后,将月份数修正为5。

2)起止日期跨年度。计算方法如下例所示:对于起止日期2008.7.25~2009.3.31,先计算2008.7.25~2008.12.25的月份数为5,再算出2008.12.25~2009.3.25的月份数为3,因此2008.7.25~2009.3.31之间的完整月份数为8。

日期数据类型定义如下:

typedefstruct{

intyear;intmonth;intday;/*日期的年号(4位)、月和日号*/

}DATE;

程序中使用的函数cmp_date()、isLeapYear()和makevalid()说明如下:

[C语言函数]

intcount_months(DATEstart,DATEend)

{

intyears=0,months=0;

DATEr;

if(cm

文档评论(0)

151****7286 + 关注
实名认证
文档贡献者

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

1亿VIP精品文档

相关文档