P1055 ISBN号码 每一本正式出版的图书都有一个ISBN号码与之对应,ISBN码包括99位数字、11位识别码和33位分隔符,其规定格式如x-xxx-xxxxx-x,其中符号-就是分隔符(键盘上的减号),最后一位是识别码,例如0-670-82162-4就是一个标准的ISBN码。ISBN码的首位数字表示书籍的出版语言,例如00代表英语;第一个分隔符-之后的三位数字代表出版社,例如670670代表

#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;
}

原文地址:https://www.cnblogs.com/Tristan-Adams/p/9898664.html

时间: 2024-10-23 19:40:11

P1055 ISBN号码 每一本正式出版的图书都有一个ISBN号码与之对应,ISBN码包括99位数字、11位识别码和33位分隔符,其规定格式如x-xxx-xxxxx-x,其中符号-就是分隔符(键盘上的减号),最后一位是识别码,例如0-670-82162-4就是一个标准的ISBN码。ISBN码的首位数字表示书籍的出版语言,例如00代表英语;第一个分隔符-之后的三位数字代表出版社,例如670670代表的相关文章

如何使用alt键+数字键盘上的数字键打出特殊符号

如何使用alt键+数字键盘上的数字键打出特殊符号 有时当我需要画示意图说明一个问题,但是苦于没有合适的符号,因此,这篇博文将简单介绍一些特殊的符号方便自己以及大家使用. 实现原理很简单:所有的字符(包括字母.数字.汉字甚至是其他文字)在计算机内部都是以编码的形式存储的,比如其中小于127的称为标准ASCII编码,汉字也是有编码的,编码标准为GBK,在45687-63486之间存储着常用的6763个汉字.41377-43518存储者一些图形符号.43072-43424之间存储着一些非汉字符号.

【源码】用1,2,2,3,4,5这六个数字,写一个函数,打印出所有不同的排序,要求:4不能放在第三位,3与5不能相连(C语言实现)

帮朋友做的,好像是一个面试题.暴力方式. #include <stdio.h> #include <stdlib.h> #include <string.h> //判断这个数是不是由1.2.2.3.4.5几位数字组成 int func(int n) { int a[5] = {0}; for(int i = 0; i < 6; i++) { int bit = n % 10; n /= 10; switch(bit) { case 1: a[0]++; break

ERROR 1813 (HY000) at line 404: Tablespace for table &#39;`xxx`.`xxxxx`&#39; exists.

今天在进行mysql备份实验时,通过mysqldump命令将主机host1中的所有数据库备份到主机Host2中, 在执行命令时出现了如下错误信息. [[email protected] tmp]# mysqldump -h 192.168.5.22 -u root --password=1234 --all-databases|  mysql -h 192.168.5.33 -uroot --password=1234 ERROR 1813 (HY000) at line 404: Tables

Bug? #1146 - Table &#39;xxx.xxxxx&#39; doesn&#39;t exist

Bug? #1146 - Table 'xxx.xxxxx' doesn't exist Bug? #1146 - Table 'xxx.xxxxx' doesn't exist 原文地址:https://www.cnblogs.com/hfultrastrong/p/8455351.html

ASP.NET 3.5 简体版书籍即将出版

摘要:ASP.NET 3.5 简体版书籍即将出版 原文:大专栏  ASP.NET 3.5 简体版书籍即将出版 原文地址:https://www.cnblogs.com/chinatrump/p/11458310.html

C语言编程 在整型有序数组中查找想要的数字并且返回下标

遇到"有序"数组中查找元素类的题,优先考虑折半查找(二分查找) 做法核心是利用所定义的下标left和right与mid(由计算得来)下标的比较来逐渐缩短查找范围,达到一个阈值后即为找到. 源代码如下: #include<stdio.h> #include<stdlib.h> int search(int a[], int x, int left, int right)//定义二分查找函数 { while (left <= right) { int mid

【C语言探索之旅】 第一部分第八课:第一个C语言小游戏

? 内容简介 1.课程大纲 2.第一部分第八课:第一个C语言小游戏 3.第一部分第九课预告: 函数 课程大纲 我们的课程分为四大部分,每一个部分结束后都会有练习题,并会公布答案.还会带大家用C语言编写三个游戏. C语言编程基础知识 什么是编程? 工欲善其事,必先利其器 你的第一个程序 变量的世界 运算那点事 条件表达式 循环语句 实战:第一个C语言小游戏 函数 练习题 习作:完善第一个C语言小游戏 C语言高级技术 模块化编程 进击的指针,C语言王牌 数组 字符串 预处理 创建你自己的变量类型 文

数字格式化,从右往左每隔三位加逗号的四种方法

转载自:http://www.uedsc.com/micrometer-method.html 有時候我个必需将数字加上每三个位数加上一个逗号,例如20000变成20,000,目的是为了在方便财务上阅读,所以我整理了以下四种解決的方法: 1.javascript //一个迂回函式 function formatNumber(str) { if(str.length <= 3){ return str; } else { return formatNumber(str.substr(0,str.l

【C语言探索之旅】 第一部分第六课:条件表达式

内容简介 1.课程大纲 2.第一部分第六课:条件表达式 3.第一部分第七课预告:循环语句 课程大纲 我们的课程分为四大部分,每一个部分结束后都会有练习题,并会公布答案.还会带大家用C语言编写三个游戏. C语言编程基础知识 什么是编程? 工欲善其事,必先利其器 你的第一个程序 变量的世界 运算那点事 条件表达式 循环语句 实战:第一个C语言小游戏 函数 练习题 习作:完善第一个C语言小游戏 C语言高级技术 模块化编程 进击的指针,C语言王牌 数组 字符串 预处理 创建你自己的变量类型 文件读写 动