30 lines
711 B
C
30 lines
711 B
C
#include <stdio.h>
|
|
|
|
int main() {
|
|
char idCardNo[18] = {0};
|
|
int i = 0, sum = 0;
|
|
int temp = 0;
|
|
char checkSum = 0;
|
|
int weigh[17] = {7, 9, 10, 5, 8, 4, 2, 1, 6, 3, 7, 9, 10, 5, 8, 4, 2};
|
|
for (i = 0; i < 18; i++) {
|
|
idCardNo[i] = getchar();
|
|
}
|
|
for (i = 0; i < 17; i++) {
|
|
temp = ((idCardNo[i] - '0')*weigh[i]) % 11;
|
|
sum += ((idCardNo[i] - '0')*weigh[i]) % 11;
|
|
}
|
|
checkSum = (12 - (sum % 11)) % 11;
|
|
if (checkSum == 10) {
|
|
checkSum = 'X';
|
|
}
|
|
else {
|
|
checkSum += '0';
|
|
}
|
|
if (checkSum == idCardNo[17]) {
|
|
printf("合法\n");
|
|
}
|
|
else {
|
|
printf("非法,正确校验位是%c", checkSum);
|
|
}
|
|
return 0;
|
|
} |