m0_74560080 2023-04-23 17:34 采纳率: 0%
浏览 19

根据身份证前十七位判断最后一位是否正确

img


编译正确并且有几组数据也正确但是总是有一组数据过不了,想知道是哪儿错了吗,为什么总是部分正确

  • 写回答

2条回答 默认 最新

  • 逆风水手 2023-04-23 17:48
    关注
    #include <stdio.h>
    #include <string.h>
    #include <stdbool.h>
    
    // 身份证号码校验函数
    bool check_id_card(const char* id_card) {
        // 校验参数
        if (id_card == NULL || strlen(id_card) != 18) {
            return false;
        }
        // 系数表
        int factors[] = {7, 9, 10, 5, 8, 4, 2, 1, 6, 3, 7, 9, 10, 5, 8, 4, 2};
        // 校验码表
        char check_codes[] = "10X98765432";
        // 计算校验和
        int sum = 0;
        for (int i = 0; i < 17; i++) {
            if (id_card[i] >= '0' && id_card[i] <= '9') {
                sum += (id_card[i] - '0') * factors[i];
            } else {
                return false;
            }
        }
        // 计算校验码
        int remainder = sum % 11;
        char check_code = check_codes[remainder];
        // 判断校验码是否正确
        return (id_card[17] == check_code);
    }
    
    // 测试函数
    int main() {
        char id_card[] = "110101199003074116";
        bool result = check_id_card(id_card);
        printf("身份证号码 %s 正确:%s\n", id_card, result ? "是" : "否");
        return 0;
    }
    

    试一试这个

    评论

报告相同问题?

问题事件

  • 创建了问题 4月23日

悬赏问题

  • ¥20 ic卡dump文件校检码解密
  • ¥15 关于:接收到的数据不是有效的JSON格式
  • ¥15 apdl语言如何增加受力分析
  • ¥15 算法对比:学校优化算法与蚁群算法对比
  • ¥15 机电一体化系统设计说明书
  • ¥20 sgy数据提取地震波速,有人能回答吗小馋
  • ¥20 c#实现打开word的功能,并且需要安装成windows服务,word打不开怎么办
  • ¥15 python用ARIMA时间预测模型预测数据出错,急!
  • ¥30 为什么后端传给前端vue的河流json数据不在地图中显示出来
  • ¥50 关于弹性波动方程求解的问题: