#include 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; }