201312-2ISBN号码
作者:互联网
用字符串保存输入的字符,由于总共只有13位置,直接手动把乘积和表达式写出来了,更好的一个是再申请一个数组,把字符串中的数字保存到新数组中,再计算成绩和。
因为保存的是字符序列,所以在进行计算时要减去字符0。
#include<stdio.h>
int main(){
char a[13];
for(int i=0;i<13;i++){
scanf("%c",&a[i]);
}
int m;
m=(a[0]-'0')+(a[2]-'0')*2+(a[3]-'0')*3
+(a[4]-'0')*4+(a[6]-'0')*5+(a[7]-'0')*6
+(a[8]-'0')*7+(a[9]-'0')*8+(a[10]-'0')*9; //可以新建一个数组,通过判断把数组存入其中再计算m
int i=m%11;
if(i==(a[12]-'0')||(i==10&&a[12]=='X')){ //若校验成功
printf("Right");
}
else{
if(i==10)a[12]='X'; //判断是否保存为X
else a[12]=i+'0'; //修改最后一位校验码
for(int i=0;i<13;i++){ //输出字符串中完整的ISBN号码
printf("%c",a[i]);
}
}
return 0;
}
标签:字符,13,号码,int,201312,保存,2ISBN,数组,字符串 来源: https://blog.csdn.net/L_xqqzldh/article/details/88128221