题解 | #[NOIP2008]ISBN号码#
[NOIP2008]ISBN号码
https://www.nowcoder.com/practice/95712f695f27434b9703394c98b78ee5
#include <stdio.h>
int main()
{
int i = 0;
int n = 1;
int sum=0;
char arr[13] = { 0 };
scanf("%s", arr);//输入字符串
for (i = 0; i < 12; i++)
{
if (arr[i] == '-')
continue;//检测分隔符
sum += ((arr[i] - 48) * n);//char类型存储为ASCII码值 '0'的ASCII码值为48
//故arr[i]-48即为该数位上数字
n++;//n即为所需乘数
}
int z = sum % 11;
if (z == (arr[i] - 48) || z == 10 && arr[i] == 'X')
printf("Right\n");//判断识别码是否正确
else
{
if (z == 10)
arr[i] = 'X';
else
arr[i] = (z + 48);//(z+48)原因同上
printf("%s\n", arr);
}
return 0;
}
