#include <stdio.h> int main() { char arr[13];//题目需要创建13个字符(包含数字); int i, j; //创建两个变量用于实现循环(数组遍历); int sum = 0; //求和变量 scanf("%s", arr); //向数组输入数据; for (i = 0, j = 1; i < 11; i++) { //这里是为了取出9位数字乘1、2、3、4、5.....9的和; if (arr[i] != '-') { //判断字符为- 不做计算; sum += (arr[i] - '0') * j; //这里求和,减'0'为了将输入字符转为数字; j++; } } int qy = sum % 11; // 计算校验和模11的结果 // 获取输入的校验码(最后一个字符) char check_char = arr[12]; // 判断计算结果与输入是否一致 if ((qy == 10 && check_char == 'X') || (qy == check_char - '0')) { printf("Right"); } else { // 输出前12个字符(原ISBN的前缀) for (i = 0; i < 12; i++) { printf("%c", arr[i]); } // 根据计算结果输出正确的校验码 if (qy == 10) { printf("X"); } else { printf("%d", qy); } } return 0; }