试题描述

每一本正式出版的图书都有一个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号码(包括分隔符“-”)。 样例输入
样例 #1: (有多组测试数据)
0-670-82162-4 样例 #2:
0-670-82162-0 样例输出
样例 #1:
Right 样例 #2:
0-670-82162-4 其它说明

  

字符串中字符转化成数字进行运算
char a=‘5’;
int b;
b=(a-'0')*2;
则b=10;
将字符变成数字则是 数字加上‘0’;

  

#include<stdio.h>
int main()
{
char ch[100]={0};
int sum,i;
while(scanf("%s",ch)!=EOF)
{
i=0;
sum=0;
sum=sum+(ch[i]-'0');
for(i=2;i<5;i++)
{
sum=sum+((ch[i]-'0')*i);
}
for(i=6;i<11;i++)
{
sum=sum+((ch[i]-'0')*(i-1));
}
sum=sum%11;
if(sum==10)
{
if(ch[12]=='X')
printf("Right\n");
else{
ch[12]='X';
printf("%s\n",ch) ;
}
}
else if(sum==(ch[12]-'0'))
printf("Right\n");
else
{
ch[12]=(char)(sum+'0');
printf("%s\n",ch); }
}return 0;
}

  

最新文章

  1. 设计模式学习笔记-Adapter模式
  2. emacs24下使用jedi对python编程进行补全
  3. EF 基本数据过滤
  4. 【HTML5】地理定位
  5. java的类加载机制
  6. 项目管理实践【六】自动同步数据库【Using Visual Studio with Source Control System to synchronize database automatically】
  7. /dev/null 2&gt;&amp;1解释
  8. Unity 5.3.5f1 (32-bit) 的简单塔防游戏
  9. 周一04.3流程控制while循环
  10. Kubernetes之调度器和调度过程
  11. centos6.9编译安装nginx
  12. 正确实现用spring扫描自定义的annotation
  13. Spring 学习教程(二): IOC/DI+AOP
  14. Linux进程间的通信方式和原理
  15. 第一章:帝国的余晖 AT&amp;T公司
  16. ngx_lua实现页面跳转
  17. unity3d-小案例之角色简单漫游
  18. 《剑指offer》第三十四题(二叉树中和为某一值的路径)
  19. 想到的regular方法果然已经被sklearn实现了就是L1和L2组合rugular
  20. 服务器的日志一直报Packet for query is too large (7632997 &gt; 4194304). You can change this value on the server by setting the max_allowed_packet&#39; variable.的解决方法

热门文章

  1. Typescript学习总结1
  2. MATLAB 绘透视图
  3. SDRAM单字写操作
  4. DelphiXE5如何获取Android手机SIM卡串号[转]
  5. SQL Server孤立账户解决办法
  6. CI 数据库操作总结
  7. Ubuntu 14.10 下SSH配置
  8. react事件中的事件对象和常见事件
  9. HiveQL详解
  10. 学习笔记之Microsoft Office 365