陈夫人· 2022-04-25 20:09 采纳率: 78.6%
浏览 33
已结题

输出时第一种情况不对

img

img

img


不知道是哪里错了,改了很多地方,输出时第一个身份证的情况总是不对,麻烦大家帮忙看看

  • 写回答

3条回答 默认 最新

  • 树下等苹果 2022-04-25 22:08
    关注

    1、last数组里的小写x换成大写
    2、if ((int)sfz[17] == (int)last[yu]) //转换为int型进行比较

    
    #include<stdio.h>
    int main()
    {
        int hang = 0, b = 0, sum = 0, i, j, yu = 0;
        int a[] = { 7,9,10,5,8,4,2,1,6,3,7,9,10,5,8,4,2 };
        char last[] = { '1','0','X','9','8','7','6','5','4','3','2' };  //小写x换成大写
        scanf_s("%d", &hang);
        getchar();
        for (i = 0; i < hang; i++)
        {
            char sfz[1000];
            gets(sfz);
            for (j = 0; j < 17; j++)
            {
                b = ((int)(sfz[j] - '0')) * a[j];
                sum = sum + b;
            }
            yu = sum % 11; 
            if ((int)sfz[17] == (int)last[yu])  //转换为int型进行比较
                printf("right\n");
            else
                printf("wrong\n");
    }
    return 0;
    }
    
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(2条)

报告相同问题?

问题事件

  • 已结题 (查看结题原因) 4月25日
  • 已采纳回答 4月25日
  • 创建了问题 4月25日