用c语言编写一个身份证码校验程序
时间: 2024-09-12 20:08:33 浏览: 102
C语言程序设计项目化教学案例分析——以身份证号校验码验证为例.pdf
在C语言中,编写一个简单的身份证号码校验程序通常会涉及计算每一位的权重并按位相加然后取余数。中国身份证号码由18位数字组成,分为前6位地区码、接下来8位出生日期码、第9至14位顺序码和最后四位校验码(最后一位为校验码,前三位是根据前面各部分的和计算得出)。下面是一个基本的示例:
```c
#include <stdio.h>
// 定义校验码计算函数
int get_check_sum(int id[], int length) {
int sum = 0;
for (int i = 0; i < length - 1; i++) {
if (i % 2 == 0) { // 奇数位,系数为1
sum += id[i];
} else { // 偶数位,系数为3
sum += id[i] * 3;
}
}
return (sum > 10 ? sum - 10 : sum);
}
int main() {
char id[19]; // 身份证号码字符串
printf("请输入18位的身份证号码: ");
scanf("%s", id);
// 去除空格并转成整型数组
int id_num[18];
for (int i = 0; i < 17; i++) {
id_num[i] = id[i] - '0';
}
// 最后一位已作为校验码
int check_sum = get_check_sum(id_num, 17);
// 校验身份证
if (id_num[17] == check_sum) {
printf("身份证号码有效!\n");
} else {
printf("身份证号码无效!\n");
}
return 0;
}
```
阅读全文