查验身份证c语言pta
时间: 2023-11-11 17:04:09 浏览: 144
查验身份证的C语言代码可以使用以下步骤实现:
1. 定义一个函数来计算身份证号码的校验码。该函数应该接受一个17位的身份证号码作为输入,并返回一个校验码。
2. 定义一个函数来验证身份证号码的有效性。该函数应该接受一个18位的身份证号码作为输入,并返回一个布尔值,指示该号码是否有效。
3. 在主函数中,读取输入的身份证号码数量和号码本身,并对每个号码调用验证函数。如果验证函数返回false,则输出该号码。
以下是一个可能的C语言代码实现:
```
#include <stdio.h>
#include <stdbool.h>
// 计算身份证号码的校验码
char calculate_check_code(char id[17]) {
int weights[17] = {7, 9, 10, 5, 8, 4, 2, 1, 6, 3, 7, 9, 10, 5, 8, 4, 2};
char check_codes[11] = "10X98765432";
int sum = 0;
for (int i = 0; i < 17; i++) {
sum += (id[i] - '0') * weights[i];
}
return check_codes[sum % 11];
}
// 验证身份证号码的有效性
bool validate_id(char id[18]) {
for (int i = 0; i < 17; i++) {
if (id[i] < '0' || id[i] > '9') {
return false;
}
}
char check_code = calculate_check_code(id);
return check_code == id[17];
}
int main() {
int n;
scanf("%d", &n);
char id[18];
bool has_error = false;
for (int i = 0; i < n; i++) {
scanf("%s", id);
if (!validate_id(id)) {
printf("%s\n", id);
has_error = true;
}
}
if (!has_error) {
printf("All passed\n");
}
return 0;
}
```