解题思路:1.先保存字符串;2.把字符串后移2位(从最后一位开始到第7位);3.把‘1’和‘9’加到字符串中去;4.求验证码,定义两个数组a和b,可以很方便求。5.把验证码加到第17位即可(从0位开始保存身份证号)。
参考代码:
#include <stdio.h> #include <string.h> int main() { char sid[20]; int a[]={7,9,10,5,8,4,2,1,6,3,7,9,10,5,8,4,2}; char b[]="10x98765432"; gets(sid); for(int i=17;i>7;i--) sid[i]=sid[i-2]; sid[6]='1'; sid[7]='9'; int sum=0; for(int i=0;sid[i];i++) { sum=sum+(sid[i]-'0')*a[i]; } sum=sum%11; sid[17]=b[sum]; sid[18]='\0'; printf("%s",sid); return 0; }
0.0分
2 人评分