问题描述:
给定一个9位数字的ISBN,求其校验位。ISBN格式为2-02-033598,校验位的计算方法如下:从左到右依次将各位数字乘10,9,8,……,2,求出其和S,作模运算得M=S mod 11。若11-M在1和9之间,校验位即为该数字;若11-M等于10,校验位为X;11-M等于11,校验位为0。输出添加校验位的ISBN,如2-02-033598-0。
样例输入:
输入1:
2-02-033598
输出1:
2-02-033598-0
输入2:
7-309-04547
输出2:
7-309-04547-5
代码:
按格式接收(笨方法)
#include <cstdio>
char a[9];
int main(){
scanf("%c-%c%c-%c%c%c%c%c%c", &a[0],&a[1],&a[2],&a[3],&a[4],&a[5],&a[6],&a[7],&a[8]);
int sum = 0;
for(int i = 0; i < 9; i++){
sum += (a[i] - '0') * (10 - i);
}
int M = sum % 11;
char flag;
if(11 - M >= 1 && 11 - M <= 9){
flag = 11 - M + '0';
}else if(11 - M == 11){
flag = '0';
}else flag = 'x';
printf("%c-%c%c-%c%c%c%c%c%c-%c",a[0],a[1],a[2],a[3],a[4],a[5],a[6],a[7],a[8],flag);
return 0;
}
统一接收
待续