P1055 ISBN号码 每一本正式出版的图书都有一个ISBN号码与之对应,ISBN码包括99位数字11位识别码和33位分隔符,其规定格式如x-xxx-xxxxx-x,其中符号-就是分隔符(键盘上的(
Posted 崔杯杯
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了P1055 ISBN号码 每一本正式出版的图书都有一个ISBN号码与之对应,ISBN码包括99位数字11位识别码和33位分隔符,其规定格式如x-xxx-xxxxx-x,其中符号-就是分隔符(键盘上的(相关的知识,希望对你有一定的参考价值。
#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;
}
以上是关于P1055 ISBN号码 每一本正式出版的图书都有一个ISBN号码与之对应,ISBN码包括99位数字11位识别码和33位分隔符,其规定格式如x-xxx-xxxxx-x,其中符号-就是分隔符(键盘上的(的主要内容,如果未能解决你的问题,请参考以下文章