很久没更新,贴点代码吧 身份证号码校验

来源:互联网 发布:锦城教务网络管理系统 编辑:程序博客网 时间:2024/05/17 03:39
#include<stdio.h> #include<stdlib.h> #include<string.h> //身份证验证规则void main(int argc,char **argv){if(argc<2 || strlen(argv[1])<18){printf("请输入18位身份证号码");return;}int cr[]={7,9,10,5,8,4,2,1,6,3,7,9,10,5,8,4,2,1};int mr[]={1,0,'X',9,8,7,6,5,4,3,2};char ids[20]={'\0'};sprintf(ids,"%s",argv[1]);ids[17]='\0';int idnum[17]={0};int i;for(i=0;i<strlen(ids);i++){char ch[2]={'\0'};ch[0]=ids[i];idnum[i]=atoi(ch);}int s1=sizeof(idnum)/sizeof(int);int s2=sizeof(cr)/sizeof(int);int ts=0;for(i=0;i<s1;i++){ts+=idnum[i]*cr[i];}int m=ts%11;int li=mr[m];char newid[20]={'\0'};for(i=0;i<s1;i++){char ch[2]={'\0'};sprintf(ch,"%d",idnum[i]);strcat(newid,ch);}if(li==88)strcat(newid,"X");else{char ch[2]={'\0'};sprintf(ch,"%d",li);strcat(newid,ch);}printf("身份证号码:%s ",argv[1]);if(strstr(argv[1],newid)){printf("有效");}else{printf("无效");}}


原创粉丝点击