- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
2008年初中信息学奥赛周时宇的解题报告
2008年初中信息学奥赛周时宇的解题报告
按语:以下的内容是大港六中初一学生周时宇,写的2008年信息学奥林匹克复赛普及组两道题的解题报告。他经过比较短的时间的培训,就掌握了PASCAL结构化的程序设计,并且能够对问题的分析写的比较完善,这应该讲是信息学奥林匹克的目标。这种结构化的思想不仅在程序设计上有用,而且对于其他理科学习都会有影响,对分析问题和解决问题的能力都是有帮助的。我特别推荐将这个报告发表,主要是希望我们同学能够在思考问题条理化,逻辑化,这将是一辈子都有用的,这也达到了信息学奥林匹克培训的目标。另外周时宇同学不仅会思考,而且勤于思考所以他会在较的时间内达到一个较好的水平。信息学奥林匹克不仅是一个竞赛成绩而更重要的是培养学生一种思考问题的能力和方法,这也是我们做这种培训的老师应该传授的主要内容。
黄福铭
附周时宇的报告:
1.ISBN号码
(isbn.pas/c/cpp)
【问题描述】
每一本正式出版的图书都有一个ISBN号码与之对应,ISBN码包括9位数字、1位识别码和3位分隔符,其规定格式如“x-xxx-xxxxx-x”,其中符号“-”是分隔符(键盘上的减号),最后一位是识别码,例如0-670-82162-4就是一个标准的ISBN码。ISBN码的首位数字表示书籍的出版语言,例如0代表英语;第一个分隔符“-”之后的三位数字代表出版社,例如670代表维京出版社;第二个分隔之后的五位数字代表该书在该出版社的编号;最后一位数字为识别码。
识别码的计算方法如下:
首位数字乘以1加上次位数字乘以2……以此类推,用所得的结果mod 11,所得的余数即为识别码,如果余数为10,则识别码为大写字母X。例如ISBN号码0-670-82162-4中的识别码4是这样得到的:对067082162这9个数字,从左到右,分别乘以1,2,…,9,再求和,即0×1+6×2+……+2×9=158,然后取158 mod 11的结果4作为识别码。
你的任务是编写程序判断输入的ISBN号码中识别码是否正确,如果正确,则仅输出“Right”;如果错误,则输出你认为是正确的ISBN号码。
【输入】
输入文件isbn.in只有一行,是一个字符序列,表示一本书的ISBN号码(保证输入符合ISBN号码的格式要求)。
【输出】
输出文件isbn.in共一行,假如输入的ISBN号码的识别码正确,那么输出“Right”,否则,按照规定的格式,输出正确的ISBN号码(包括分隔符“-”)。
【输入输出样例1】
Isbn.in isbn.out 0-670-82162-4 Right 【输入输出样例2】
isbn.in isbn.out 0-670-82162-0 0-670-82162-4 【试题分析】
首先将ISBN串前9个数字分别转换成整型数并储存在数组里,因为这9个数字从左到右分别乘以1,2,…,9的和的最大值小于32767,所以使用整型变量储存。
按试题要求计算识别码,并与ISBN号码中识别码做比较,如果正确,输出“Right”;如果错误,则输出正确的ISBN号码。
【参考程序】
program isbn;
var
i,j:integer;
s:string;
a:array[1..9] of integer;
l:char;
procedure input;{输入过程}
var
f:text;
begin
assign(f,isbn.in);
reset(f);
read(f,s);{将ISBN码读入字符串s中}
close(f);
end;
procedure output;{输出过程}
var
f:text;
begin
assign(f,isbn.out);
rewrite(f);
if s[13]=l then
write(f,Right){如果识别码正确则输出Right}
else
begin{如果不正确则输出正确的ISBN码}
for i:=1 to 12 do
write(f,s[i]);
write(f,l);
end;
close(f);
end;
procedure main;{主过程}
begin
j:=0;
for i:=1 to 11 do{将前九个数转换成整型并存入a数组}
if s[i]- then
begin
inc(j);
if s[i]=0 then
a[j]:=0
原创力文档


文档评论(0)