图书使用国际标准书号(International Standard Book Number (ISBN-10))来编码,是一个 10 位码。前 9 位(0−9之间的数字)分别用于表示语言、出版商和 图书信息。第 10 位是校验位,可以是0−9之间的数字或者是字母 X (用于表示数字10); ISBN-10码可以通过下面方法进行验证: 首先,对ISBN-10码的各个位按下面的计算式求和: 1×x 1 +2×x 2 +3×x 3 +4×x 4 ⋯+9×x 9 +10×x 10 将求和的结果对11取余数,如果余为0,则说明该ISBN-10码是一个有效码,否则,就不是一个有效的ISBN-10码。 现输入一批ISBN-10图书编码,请你验证该编码是否是有效的国际标准书号。c语言
时间: 2024-03-18 12:39:06 浏览: 297
以下是一个使用C语言实现的校验ISBN-10编码的程序:
```c
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int main() {
char isbn[11]; // 存储输入的ISBN-10编码
int i, sum = 0; // sum用于存储计算过程中的累加值
// 提示用户输入ISBN-10编码
printf("请输入ISBN-10编码:");
scanf("%s", isbn);
// 首先检查输入的编码是否合法
if (strlen(isbn) != 10) {
printf("输入的ISBN-10编码格式不正确!\n");
return 1; // 返回错误码1表示程序异常退出
}
// 逐位计算ISBN-10编码的校验位
for (i = 0; i < 10; i++) {
if (isbn[i] == 'X') {
sum += 10 * (i + 1);
} else if (isbn[i] >= '0' && isbn[i] <= '9') {
sum += (isbn[i] - '0') * (i + 1);
} else {
printf("输入的ISBN-10编码格式不正确!\n");
return 1; // 返回错误码1表示程序异常退出
}
}
// 判断校验位是否正确
if (sum % 11 == 0) {
printf("输入的ISBN-10编码是一个有效码!\n");
} else {
printf("输入的ISBN-10编码不是一个有效码!\n");
}
return 0; // 返回0表示程序正常退出
}
```
该程序首先提示用户输入ISBN-10编码,然后逐位计算编码的校验位,并判断是否有效。如果输入的编码格式不正确,程序会提示用户重新输入。
阅读全文