7-2 ISBN转换

图书都有唯一的ISBN码(书号)标识,ISBN分为10位(ISBN-10)和13位(ISBN-13,以“978”开头)两种。

设ISBN-13为978-7-302-56474-4,从ISBN-13转换为ISBN-10的具体步骤如下:
(1)从ISBN-13中删除前缀978和校验码(最后一位),得到ISBN-10的前面部分:7-302-56474,然后去掉该部分的“-”得到一个9位数字730256474

(2)重新计算校验码。将上一步得到的9位数字依序分别乘以从10,9,8,……,3,2,将其乘积相加得到累加和sum,求余数r=sum%11;若r=0,则校验码为0;否则求11与r的差数d=11-r,若d=10,则以“X”来表示校验码,否则校验码为d。即:
sum=7×10+3×9+0×8+2×7+5×6+6×5+4×4+7×3+4×2=216,r=216 % 11=7,d=11-7=4,因此校验码为4。

最终得到ISBN-10:7-302-56474-4。

要求把书号从ISBN-13转换为ISBN-10。

输入格式:

输入一个字符串代表一个ISBN-13的书号,格式为“978-x-xxx-xxxxx-x”,其中x代表一个一位的数字。

输出格式:

输出一行,包含一个转换得到的ISBN-10的书号,格式为“x-xxx-xxxxx-x”,其中x代表一个一位的数字。

输入样例:

978-7-302-12260-9

输出样例:

7-302-12260-1

其实这题很简单就是一个点一直过不了 

7-2 ISBN转换_第1张图片

 7-2 ISBN转换_第2张图片

#include
int main()
{
    char s1[100];
    char s2[100];
    long a[100]={0};
    scanf("%s",s1);
    int j=0;
    int k=0;
    for(int i=4;i<16;i++)
    {
        
        s2[j]=s1[i];
        if(isdigit(s2[j])!=0)
        {
            a[k]=s2[j]-'0';
            k++;
        }
        j++;
    }
    s2[j]='\0';
    int sum=0;
    int count=10;
    for(int i=0;i

 

你可能感兴趣的:(c++)