P1055 [NOIP2008 普及组] ISBN 号码 #include<iostream> using namespace std; int main(void) { char a,b,c,d,e,f,g,h,i,j; int check; scanf("%c-%c%c%c-%c%c%c%c%c-%c",&a,&b,&c,&d,&e,&f,&g,&h,&i,&j); check = (a - '0')*1 + (b - '0') * 2 + (c - '0') * 3 + (d - '0') * 4 + (e - '0') * 5 + (f - '0') * 6 +(g - '0') * 7 + (h - '0') * 8 + (i - '0') * 9; check = check % 11; //使用scanf读入和字符处理 char类型的数字 不是Int类型 '0'代表整数48 所以不可以直接对这个整数进行计算 //而是要减去 '0' 变成数字类型才可以进行计算 输出的时候也要注意识别码是int类型 需要转换成char类型 主要针对最后一个字符 //最后一个字符 如果check是10 下输出x 如果不是 那么转换成int类型即可输出 //如果j为x并且check = 10 或者 j正好是check 正确 //将j转换成数字类型进行比较 - '0' if(j == 'X' && check == 10 || check == j - '0') { printf("Right\n"); } else { //j不正确 如果check = 10 更改为x 如果 checK不为10 + 0 转换成字符形式 printf("%c-%c%c%c-%c%c%c%c%c-%c",a,b,c,d,e,f,g,h,i,check == 10 ? 'X' : check +'0'); } return 0; }