您的位置:首页 > 其它

密码学家亘古教授,破解了居民身份证号的密码,他可以分辨出身份证号的真假,还能猜出你身份证最后一位数字。下面是亘古教授计算身份证号末位的办法

2013-06-07 20:45 453 查看
#include <stdio.h>

int main()

{

int s,sec[17]={7,9,10,5,8,4,2,1,6,3,7,9,10,5,8,4,2};

int i,j,id[17];

char a[18],b[11]={'1','0','X','9','8','7','6','5','4','3','2'};

while(scanf("%s",a)!=EOF)

{

s=0;

for(j=0;j<17;j++)

switch(a[j])

{

case '0':id[j]=0;break;

case '1':id[j]=1;break;

case '2':id[j]=2;break;

case '3':id[j]=3;break;

case '4':id[j]=4;break;

case '5':id[j]=5;break;

case '6':id[j]=6;break;

case '7':id[j]=7;break;

case '8':id[j]=8;break;

case '9':id[j]=9;break;

}

for(i=0;i<17;i++)

s=s+id[i]*sec[i];

s=s%11;

if(a[17]=='\0')

{

printf("%s",a);

printf("%c\n",b[s]);

}

else if(a[17]==b[s])

printf("True\n");

else

printf("False\n");

}

return 0;

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐