密码学家亘古教授,破解了居民身份证号的密码,他可以分辨出身份证号的真假,还能猜出你身份证最后一位数字。下面是亘古教授计算身份证号末位的办法
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;
}
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;
}
相关文章推荐
- 身份证号码的了解------最后一位数字是有前面的十七位数字通过计算得到的
- 给了一串数字:218916754,根据下面规则可以找出扣扣号码:首先删除第一个数,紧接着将第二个数放到这串数字的末尾,再将第三个数删除,并将第四个数放到这串数字的末尾......如此循环,知道剩下最后
- 判断身份证:要么是15位,要么是18位,最后一位可以为字母,并写程序提出其中的年月日
- 计算n!的最后一位非零数字的算法
- 身份证号码最后一位校检码的计算公式
- 18位身份证号码最后一位校验码的计算方法
- 关于18位身份证号码最后一位计算(Java实现)
- 身份证 15位升级18位 和最后一位校验位计算
- 18位身份证号码最后一位校验码的计算方法
- 如何计算N!的最后一位非零数字(POJ 1604 Just the Facts)
- 二代身份证号码最后一位校验位的计算方法
- 当你输入信用卡号码的时候,有没有担心输错了而造成损失呢?其实可以不必这么担心,因为并不是一个随便的信用卡号码都是合法的,它必须通过Luhn算法来验证通过。 该校验的过程:1、从卡号最后一位数字开始,逆
- 18位身份证号码最后一位校验码的计算方法
- EditText自定义输入数据格式,比如只能是数字和字母(身份证最后一位X)
- 身份证号码(最后一位)计算。
- 18位身份证号码最后一位校验码的计算方法
- 身份证校验 如果让你设计个程序,用什么变量保存身份证号码呢?长整数可以吗?不可以! 因为有人的身份证最后一位是"X"
- 身份证18位最后一位计算函数
- 【身份证合法性检查程序】(计算最后一位检验码)
- html 身份证最后一位计算