马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有账号?立即注册
x
校验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语言代码:
- #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");
- }
- }
- }
复制代码 免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。 |