int check(char* str);
int main(){
FILE *fp;
char file_idnum[20];
if(!(fp=fopen("data.txt","r"))){
printf("cant open the doc!\n");
exit(0);
}
while(!feof(fp)){
fgets(file_idnum,20,fp);
//printf("***%s*****",file_idnum);
if(file_idnum[0]=='\n'){
continue;
}
if(!check(file_idnum)){
printf("不合法的身份证号是:%s",file_idnum);
}
}
fclose(fp);
}
int check(char* str){
int i,j;
int weight[] = {7,9,10,5,8,4,2,1,6,3,7,9,10,5,8,4,2};
char M[11]={'1','0','X','9','8','7','6','5','4','3','2'};
int sum =0;
char last;
int temp[18];
for(j=0;j<17;j++){
temp[j] = str[j] - '0';
}
last = str[j];
for(i=0;i<17;i++){
int k =temp[i];
int m = weight[i];
sum =sum+k*m;
}
if(M[sum%11] == last){
return 1;
}else{
return 0;
}
}
`