用c写一个检验身份证校验码的函数,函数名为check ID(char ID[19]);
时间: 2024-06-09 07:05:08 浏览: 81
C#验证身份证的函数
以下是用C语言实现检验身份证校验码的函数checkID:
```c
#include <stdio.h>
#include <string.h>
#include <ctype.h>
int checkID(char ID[19]) {
int weight[18] = {7,9,10,5,8,4,2,1,6,3,7,9,10,5,8,4,2}; //身份证号码权重
char checkcode[11] = "10X98765432"; //校验码字符
int sum = 0; //加权和
int i;
//检查身份证号码长度是否正确
if (strlen(ID) != 18) {
return 0;
}
//检查身份证号码前17位是否都是数字
for (i = 0; i < 17; i++) {
if (!isdigit(ID[i])) {
return 0;
}
}
//计算加权和
for (i = 0; i < 17; i++) {
sum += (ID[i] - '0') * weight[i];
}
//计算校验码
int code = sum % 11;
//检查校验码是否正确
if (ID[17] == checkcode[code]) {
return 1;
} else {
return 0;
}
}
```
函数说明:
- 参数:ID为身份证号码,类型为char数组,长度为19,最后一位为'\0'。
- 返回值:如果身份证号码校验码正确,则返回1;否则返回0。
使用方法:
```c
#include <stdio.h>
int main() {
char ID[19];
printf("请输入身份证号码:");
scanf("%s", ID);
if (checkID(ID)) {
printf("身份证号码校验码正确!\n");
} else {
printf("身份证号码校验码错误!\n");
}
return 0;
}
```
阅读全文