求佬看看我的代码哪里还有问题或者缺陷
洛谷的题,提交后有两处错误
识别码的计算方法如下:
首位数字乘以 11 加上次位数字乘以 22 ……以此类推,用所得的结果 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测试: 0-670-82162-4(结果 Right), 2-400-00000-6(结果 2-400-00000-X)
我的代码
#include
int main()
{
char b[14],a[12] ="0123456789X";
int i=0;
int SUM=0,j=1;
gets(b);
for(i=0;i<11;i++)
{
if(b[i]=='-')
continue;
SUM+=((b[i]-'0')*j++);
}
if(a[SUM%11]==b[12])
{
printf("Right");
}
else
{
b[12]=a[(SUM%11)];
puts(b);
}
}