题解 | #[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; }