题解 | #[NOIP2008]ISBN号码#
[NOIP2008]ISBN号码
https://www.nowcoder.com/practice/95712f695f27434b9703394c98b78ee5
#include <stdio.h>
#include <string.h>
#define N 15
int main() {
char str[N] = { 0 };
while (~scanf("%s", str)) {
// 记录识别码
int sum = 0;
// 相乘的数字
int count = 1;
// 获取识别码
for (int i = 0; i <= strlen(str) - 2; i++) {
if (((str[i] - 48) >= 0) && ((str[i] - 48) <= 9)) {
sum += ((str[i] - 48) * count);
count++;
}
}
//比较通过计算的识别码与输入的识别码
// 正确的识别码下输入Right
if (sum % 11 == 10 && 'X' == str[strlen(str) - 1]) {
printf("Right\n");
} else if ((sum % 11) == str[strlen(str) - 1] - 48) {
printf("Right\n");
} else {
// 错误识别码下的输入
if (sum % 11 != 10 && 'X' == str[strlen(str) - 1]) {
str[strlen(str) - 1] = (sum % 11) + '0';
printf("%s\n", str);
} else if (sum % 11 == 10 && 'X' != str[strlen(str) - 1]) {
str[strlen(str) - 1] = 'X';
printf("%s\n",str);
}
else
{
str[strlen(str) - 1] = sum % 11 + '0';
printf("%s\n",str);
}
}
}
return 0;
}