为啥 输入 421125199208171750 会校验出来 请输入正确的身份证号码
时间: 2024-04-01 18:38:40 浏览: 16
根据身份证号码的算法,身份证号码的最后一位是校验位,它是由前面17位数字通过一定的算法计算而来的。如果输入的身份证号码不符合校验位的规则,那么就会提示“请输入正确的身份证号码”。
在你提供的身份证号码中,最后一位是数字 0,但根据算法计算得出的校验位应该是 5。因此,这个身份证号码的校验位不正确,所以会提示“请输入正确的身份证号码”。
你可以检查一下输入的身份证号码是否正确,或者使用其他正确的身份证号码进行测试。
相关问题
但是我输入 421125199208171750 提示 请输入正确的身份证号码
根据你提供的代码,验证规则中 certno 字段要求必须是一个有效的身份证号码。但是,根据身份证号码的算法,你输入的身份证号码 421125199208171750 是正确的,它的校验位计算结果为 0,是符合身份证号码算法校验规则的。
因此,可能存在以下几种情况导致你输入的身份证号码未通过验证:
1. 验证规则中的 verify 函数存在问题,无法正确地校验身份证号码;
2. 验证规则中存在其他限制条件,导致你输入的身份证号码不符合要求;
3. 程序存在其他 bug 或错误,导致验证无法通过。
建议你检查一下代码,或者尝试使用其他有效的身份证号码进行测试,确认问题所在。
输入一串身份证号码 判断身份证号码是否正确
要判断身份证号码是否正确,可以利用身份证号码的校验规则进行验证。以下是一个简单的示例代码,可以实现判断身份证号码是否正确的功能:
```c
#include <stdio.h>
#include <stdbool.h>
// 判断身份证号码是否正确
bool isIDCardValid(const char* idCardNum) {
// 身份证号码校验规则省略,你可以根据实际需求进行编写
// 这里仅做示例,假设身份证号码合法的条件是长度为18位
int len = 0;
while (idCardNum[len] != '\0') {
len++;
}
return len == 18;
}
int main() {
char idCardNum[20]; // 假设最长的身份证号码长度不超过20位
printf("请输入身份证号码: ");
scanf("%s", idCardNum);
if (isIDCardValid(idCardNum)) {
printf("身份证号码正确!\n");
} else {
printf("身份证号码错误!\n");
}
return 0;
}
```
解释:
上述代码中的函数 `isIDCardValid` 接受一个字符串类型的参数 `idCardNum`,通过检查字符串的长度来判断身份证号码是否正确。这里仅仅是一个示例,实际判断身份证号码是否正确需要根据具体的规则进行编写。