身份证号码校验位生成代码: #include <stdio.h> #include <stdlib.h> #include <string.h> int Wi[17]={7, 9, 10, 5, 8, 4, 2, 1, 6, 3, 7, 9, 10, 5, 8, 4, 2}; char checkcode[11] ={'1', '0', 'X', '9', '8', '7', '6', '5', '4', '3', '2'}; int main(int argc, char *argv[]) { int niSum = 0; int ch = 0; int i = 0; char code[18] = {'/0'}; printf("/n身份证号校验位生成工具 Ver: 1.0.1/n"); if ((argc != 2) || (strlen(argv[1]) != 17)) { printf("用法:SFZ.exe <前17位身份证号码>/n"); exit(1); } for ( i=0; i<17; i++) { code[i] = argv[1][i]; ch = atoi(&code[i]); niSum = ch * Wi[i] + niSum; } printf("/n身份证(前17位): %s", code); ch = /*12 - */ niSum%11; printf("/n最后一位校验位: %c", checkcode[ch]); printf("/n18位身份证信息: %s%c/n", code, checkcode[ch]); return 0; }