想吃两颗西柚 2023-10-14 11:49 采纳率: 25%
浏览 4

C语言 字符输入问题定义的m怎么是个变值(每次运行的结果)

每一本正式出版的图书都有一个 ISBN 号码与之对应,ISBN 码包括 9 位数字、1 位识别码和 3 位分隔符,其中符号 - 就是分隔符(键盘上的减号),最后一位是识别码,例如 0-670-82162-4就是一个标准的 ISBN 码。ISBN 码的首位数字表示书籍的出版语言,例如
0 代表英语;第一个分隔符 - 之后的三位数字代表出版社,例如 670 代表维京出版社;第二个分隔符后的五位数字代表该书在该出版社的编号;最后一位为识别码。

识别码的计算方法如下:

首位数字乘以1 加上次位数字乘以 2 ……以此类推,用所得的结果 mod11,所得的余数即为识别码,如果余数为 10,则识别码为大写字母 X。例如 ISBN 号码 0-670-82162-4 中的识别码 4 是这样得到的:对 067082162 这 9 个数字,从左至右,分别乘以 1,2,…,91,2,…,9 再求和,即 0×1+6×2+……1580×1+6×2+……+2×9=158,然后取 158mod11 的结果 4 作为识别码。
你的任务是编写程序判断输入的 ISBN 号码中识别码是否正确,如果正确,则仅输出 Right;如果错误,则输出你认为是正确

#include<stdio.h>
int main (){
    int a,b,c,d,e,f,g,h,i,j,sum,m;
    char ch1,ch2,ch3 ;
    scanf("%d-%c-%d-%d-%d-%c-%d-%d-%d-%d-%d-%c-%d",&a,&ch1,&b,&c,&d,&ch2,&e,&f,&g,&h,&i,&ch3,&j);
    sum =a*1+b*2+c*3+d*4+e*5+f*6+g*7+h*8+i*9 ;
    printf("%d",sum);
    m = sum %11 ;
    printf("%d\n",m);
    if(m == j){ 
    printf ("Right");
    }    
    else {
        printf("%d%c%d%d%d%c%d%d%d%d%d%c%d",a,ch1,b,c,d,ch2,e,f,g,h,i,ch3,m);
     }
    return 0 ;
}
  


  • 写回答

2条回答 默认 最新

  • threenewbee 2023-10-14 11:55
    关注

    scanf("%d-%c-%d-%d-%d-%c-%d-%d-%d-%d-%d-%c-%d",&a,&ch1,&b,&c,&d,&ch2,&e,&f,&g,&h,&i,&ch3,&j);
    有那么多参数么?一看就不对

    评论

报告相同问题?

问题事件

  • 创建了问题 10月14日

悬赏问题

  • ¥15 请问Ubuntu要怎么安装chrome呀?
  • ¥15 视频编码 十六进制问题
  • ¥15 Xsheii7我安装这个文件的时候跳出来另一个文件已锁定文件的无一部分进程无法访问。这个该怎么解决
  • ¥15 unity terrain打包后地形错位,跟建筑不在同一个位置,怎么办
  • ¥15 FileNotFoundError 解决方案
  • ¥15 uniapp实现如下图的图表功能
  • ¥15 u-subsection如何修改相邻两个节点样式
  • ¥30 vs2010开发 WFP(windows filtering platform)
  • ¥15 服务端控制goose报文控制块的发布问题
  • ¥15 学习指导与未来导向啊