#include <stdio.h>
#include <string.h>

// 计算识别码
char calculate_check_digit(const char* isbn) {
    int sum = 0;
    for (int i = 0, j = 1; i < 9; i++, j++) {
        sum += (isbn[i] - '0') * j;
    }
    int check_digit = sum % 11;
    if (check_digit == 10) {
        return 'X';
    } else {
        return '0' + check_digit;
    }
}

int main() {
    char isbn[18]; // 输入的ISBN号码,包括分隔符
    scanf("%s", isbn);

    // 提取前9位数字和输入的识别码
    char digits[10];
    int index = 0;
    for (int i = 0; isbn[i] != '\0'; i++) {
        if (isbn[i] >= '0' && isbn[i] <= '9') {
            digits[index++] = isbn[i];
        }
    }
    digits[9] = '\0';

    // 计算正确的识别码
    char correct_check_digit = calculate_check_digit(digits);

    // 比较识别码
    if (isbn[12] == correct_check_digit) {
        printf("Right\n");
    } else {
        // 输出正确的ISBN号码
        printf("%c-%c%c%c-%c%c%c%c%c-%c\n",
               digits[0], digits[1], digits[2], digits[3],
               digits[4], digits[5], digits[6], digits[7], digits[8],
               correct_check_digit);
    }

    return 0;
}


  1. 输入处理:使用scanf读取输入的ISBN号码。遍历输入的字符串,提取前9位数字。
  2. 计算识别码:使用一个循环,从第1位数字开始,依次乘以1到9,并累加结果。对累加结果取模11,得到识别码。如果结果是10,则识别码为'X'。
  3. 验证识别码:直接比较输入的识别码(即输入字符串的第13个字符)与计算得到的识别码。如果相同,输出“Right”;如果不同,输出正确的ISBN号码。