这题很简单,一位一位算就是,唯一要注意的就是mod 11 = 10的时候,要用X。代码:
C语言:
#include <stdio.h>
#include <ctype.h>
char isbn[14];
char getint(void)
{
static int i = 0;
int t;
do{
t = isbn[i++];
}while(!isdigit(t));
return t - \'0\';
}
int main(void)
{
int a = 0;
int i;
char t;
scanf(%s, isbn);
for(i = 1; i <= 9; i++){
t = getint();
a += t * i;
}
t = isbn[12];
a %= 11;
if(a == 10){
a = \'X\';
}else{
a += \'0\';
}
if(t == a){
printf(Right\\n);
}else{
isbn[12] = a;
printf(%s\\n, isbn);
}
return 0;
}