牛客网BC76 [NOIP2008]ISBN号码【判断求识别码】 您所在的位置:网站首页 isbn识别码判断c语言 牛客网BC76 [NOIP2008]ISBN号码【判断求识别码】

牛客网BC76 [NOIP2008]ISBN号码【判断求识别码】

2024-07-10 23:52| 来源: 网络整理| 查看: 265

题目

牛客网原题连接

题目大意: 每一本正式出版的图书都有一个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号码(保证输入符合ISBN号码的格式要求)。 输出描述:共一行,假如输入的ISBN号码的识别码正确,那么输出“Right”,否则,按照规定的格式,输出正确的ISBN号码(包括分隔符“-”)。

解题思路

因为输入的数据是有固定格式的,所以可以利用这个特点,把它当作一串字符串,然后把除了‘-’的去掉,其余转换为数字进行相加,最后与识别码比对,思路比较简单,容易想到,但是注意细节。

代码 #include int main() { int a, b,c,d; char s[20]; while (scanf("%s", s) != EOF){ getchar(); int count =1;//记录每位乘以的数【1-9】 int i,sum; sum=0; for(i=0;i if(sum%11==10)//X表示10 s[12]='X'; else s[12]='0'+sum%11;; printf("%s\n",s); } } return 0; }

解题思路比较简单,但是细节比较多,容易出错,我调试了几次才完善的。



【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有