#include <stdio.h>
#include <stdlib.h>
int main()
{
int i, j, n, sum, id;
int a[15];
char str[15];
scanf("%s", str); //输入ISBN号
j = 0;
for(i=0; i<11; i++)
{
if(i!=1 && i!=5)
{ //将存储ISBN号的str[]中数字字符转化为对应的
a[j] = str[i]-48; //十进制数赋值给a[](不包括最后一位识别码)
j++;
}
}
sum = 0;
n = 1;
for(i=0; i<9; i++)
{
sum += a[i]*n; //对ISBN中9个数字做算术计算并把结果赋值给sum
n++;
}
id = sum % 11; //由ISBN中九个数字计算出识别号IDcode
/*判断计算出的id是否等于ISBN的识别号*/
if(id == str[12]-48 || id == str[12]-78) //如果计算出的id是1~9,则是IBSN 字符str[12]对应的十进制数字
{ //如果id是10则是ISBN字符str中的字符X对应的十进制数
printf("Right");
}
else //如果识别号不正确
{
j = 0;
/*先输出除最后一位IDcode外的前12位字符*/
for(i=0; i<12; i++)
{
printf("%c", str[i]);
}
/*输出最后一位识别码*/
if(id == 10) //如果计算出的识别码是10则转化为X
{
printf("X");
}
else //如果不是10,则输出计算出的识别码id
{
printf("%d", id);
}
}
return 0;
}
原文地址:https://www.cnblogs.com/Tristan-Adams/p/9898664.html
时间: 2024-10-23 19:40:11