m0_70029950 2022-06-19 08:43 采纳率: 79.2%
浏览 23
已结题

关于校验码代码的问题

问题遇到的现象和发生背景

问题如下:

img

输入格式:
只有一行,为一个长度不超过1000且仅包含数字的字符串。

输出格式:
为上述规则下该字符串的校验和。测试用例保证所有整数可以用 int存储。

输入样例:
85302688978758327
输出样例:
21

问题相关代码,请勿粘贴截图
#include <stdio.h>
#include <stdlib.h>
#include <string.h>

int main()
{
    char string[1000];
    int a[17]={13,16,30,17,8,24,21,3,9,12,10,4,6,14,15,29,11};
    int i,l,sum=0;
    scanf("%s",string);
    l=strlen(string);
    for(i=0;i<l;i++)
    {
        sum=sum+(string[l-1-i]-'0')*a[(l-1-i)%17];
    }
    printf("%d",sum%23);
}

运行结果及报错内容

img

我想要达到的结果

以此题为例:
21

  • 写回答

2条回答 默认 最新

  • qzjhjxj 2022-06-19 11:32
    关注

    修改如下,供参考:

    #include <stdio.h>
    #include <stdlib.h>
    #include <string.h>
    
    int main()
    {
        char string[1000];
        int a[17]={13,16,30,17,8,24,21,3,9,12,10,4,6,14,15,29,11};
        int i,l,sum=0;
        scanf("%s",string);
        l=strlen(string);
        for(i=0;i<l;i++)
        {
            sum+=(string[l-1-i]-'0')*a[(i+1)%17]; //从低位向高位数,低位 n 从1 开始
            //sum=sum+(string[l-1-i]-'0')*a[(l-1-i)%17];
        }
        printf("%d",sum%23);
        return 0;
    }
    
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

问题事件

  • 系统已结题 6月27日
  • 已采纳回答 6月19日
  • 创建了问题 6月19日

悬赏问题

  • ¥100 set_link_state
  • ¥15 虚幻5 UE美术毛发渲染
  • ¥15 CVRP 图论 物流运输优化
  • ¥15 Tableau online 嵌入ppt失败
  • ¥100 支付宝网页转账系统不识别账号
  • ¥15 基于单片机的靶位控制系统
  • ¥15 真我手机蓝牙传输进度消息被关闭了,怎么打开?(关键词-消息通知)
  • ¥15 装 pytorch 的时候出了好多问题,遇到这种情况怎么处理?
  • ¥20 IOS游览器某宝手机网页版自动立即购买JavaScript脚本
  • ¥15 手机接入宽带网线,如何释放宽带全部速度