C语言---校验ISBN码是否合法

校验ISBN码是否合法

问题描述 】旧版(2007年以前)国内ISBN(国际标准图书编号)由四个部分组成:

如:

7-5001-0357-3(《一个国家的成长》,中国对外翻译出版公司,1997.02)

7-5063-3433-x(《霞落燕园》,作家出版社,2005.10)

第一组代表中国大陆;

第二组(4个数字)为出版社代码;

第三组(4个数字)是具体的某一本书;

第四组为第十个数字(1个数字,x代表10),也叫校验码,是由下列公式计算得出------

校验码=(1第一个数字+2第二个数字+...+9*第九个数字)%11

现需读入任意一个旧版ISBN"x-xxxx-xxxx-x",编程检查其最后一位校验码是否合法。

如果合法,输出legal;

否则输出illegal。

【输入形式】"x-xxxx-xxxx-x"

【输出形式】legal/illegal

【样例1输入】7-5001-0357-3

【样例1输出】legal

【样例2输入】7-5001-0357-9

【样例2输出】illegal

【样例说明】所有x应属于0-10之间,特别说明:校验码为'x'时,代表数字10.

C语言代码:

c 复制代码
#include <stdio.h>
#include <stdlib.h>

void checkISBNCode();

int main () {
    checkISBNCode();
    return 0;
}

void checkISBNCode() {
    int a[9], sum = 0, i, j;
    char b;
    scanf("%1d-%1d%1d%1d%1d-%1d%1d%1d%1d", &a[0], &a[1], &a[2], &a[3], &a[4], &a[5], &a[6], &a[7], &a[8]);
    scanf("-%c", &b);
    for (i = 0; i < 9; i++) {
        sum = sum + a[i] * (i + 1);
    }
    //j计算出的校验码, b输入的校验码
    j = sum % 11;

    if (j == 10) {
        if (b == 'X') {
            printf("legal");
        } else {
            //printf("%d-%d%d%d%d-%d%d%d%d-X", a[0], a[1], a[2], a[3], a[4], a[5], a[6], a[7], a[8]);
            printf("illegal");
        }
    } else {
        //char加'0',char和int之间的转换
        //'0'的ASCII码 48
        if (b == j + 48) {
            printf("legal");
        } else {
            //printf("%d-%d%d%d%d-%d%d%d%d-%d", a[0], a[1], a[2], a[3], a[4], a[5], a[6], a[7], a[8], j);
            printf("illegal");
        }
    }
}
相关推荐
AAA代码批发商1 小时前
Days 39 Linux C 开发之 SQLite 数据库完整学习笔记
linux·c语言·数据库
卢锡荣2 小时前
单芯掌控多口互联|乐得瑞 LDR6020 PD3.1 多通道 Type‑C 控制 SOC 芯片
c语言·开发语言
wuminyu3 小时前
JVM锁膨胀与Futex源码解析
java·linux·c语言·jvm·c++
susplus3 小时前
【HTTP协议】HTTP介绍及基础【C语言爬虫实现】
c语言·爬虫·http·万维网
xx~t4 小时前
嵌入式——Linux软件编程——数据库
linux·c语言·数据库·oracle·sqlite
水饺编程4 小时前
第5章,[Win32 章节] :圆角矩形教学插图绘制程序
c语言·c++·windows·visual studio
是隼人4 小时前
buuctf-pwn PWN4(双引号的转义缺陷)题解(学习过程持续更新)
c语言·学习·安全·pwn入门·ctf入门
码行山野赴时序归途4 小时前
C 语言文件操作完全指南:从打开到关闭
c语言·开发语言
CS_Zero15 小时前
C语言sizeof是函数吗?
c语言·开发语言
Navigator_Z18 小时前
LeetCode //C - 1224. Maximum Equal Frequency
c语言·算法·leetcode