解题思路: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 人评分
C语言程序设计教程(第三版)课后习题11.1 (C语言代码)浏览:692 |
WU-蓝桥杯算法提高VIP-勾股数 (C++代码)浏览:1607 |
WU-小九九 (C++代码)浏览:1684 |
C语言程序设计教程(第三版)课后习题6.8 (C++代码)浏览:592 |
C语言程序设计教程(第三版)课后习题8.6 (C语言代码)浏览:567 |
简单的a+b (C语言代码)浏览:577 |
C语言程序设计教程(第三版)课后习题4.9 (C语言代码)浏览:561 |
Hello, world! (C语言代码)浏览:715 |
出圈】指针malloc版浏览:355 |
简单的a+b (C语言代码)浏览:951 |