第一次测试&第一篇CSDN日志
来源:互联网 发布:关于大学生网络的论文 编辑:程序博客网 时间:2024/06/16 19:54
刚注册了CSDN,还不太会用,以前也没有天天写博客的习惯,不过慢慢养成吧!前不久刚完成了12网络 第一次测试的题目,前几题比较简单,最后一题倒是花了不少功夫,现在的我编程能力很差,渐渐从基础题训练吧!
这就是第五题,题目看了3,4遍才看懂!
密码学家亘古教授,破解了居民身份证号的密码,他可以分辨出身份证号的真假,还能猜出你身份证最后一位数字。下面是亘古教授计算身份证号末位的办法
1.计算校验位
∑(id[i]×Sec[i])(mod 11) //身份证前17位乘对应的校验位的和,对11取模
Sec[17] = {7,9,10,5,8,4,2,1,6,3,7,9,10,5,8,4,2}
2.通过校验位得出真实数字
校验位 0 1 2 3 4 5 6 7 8 9 10
真实数字 1 0 X 9 8 7 6 5 4 3 2
亘古教授想请我们HBUT的天才们设计一个程序,当输入身份证号前17位时补全第18位,当输入18位身份证号时验证它的真假
Input
输入17位或者18位长度的N行字符串
Output
当输入的18位身份证为真时输出 True
当输入的18位身份证为假时输出 False
当输入身份证前17位时完整输出该身份证号码
Sample Input
4205831989060400142058319890604001042058319890604001X
Sample Output
420583198906040010TrueFalse
源代码:
#include <stdio.h>#include <math.h>int main(){char id[18];int i,k,idnum[17];int sec[17]={7,9,10,5,8,4,2,1,6,3,7,9,10,5,8,4,2};char yan[11]={'1','0','X','9','8','7','6','5','4','3','2'};while(scanf("%s",&id)!=EOF){if(id[17]=='\0'){ for(i=0;i<17;i++){ switch(id[i]){case '0':idnum[i]=0;break;case '1':idnum[i]=1;break;case '2':idnum[i]=2;break;case '3':idnum[i]=3;break;case '4':idnum[i]=4;break;case '5':idnum[i]=5;break;case '6':idnum[i]=6;break;case '7':idnum[i]=7;break;case '8':idnum[i]=8;break;case '9':idnum[i]=9;break;}}k=(idnum[0]*7+idnum[1]*9+idnum[2]*10+idnum[3]*5 +idnum[4]*8+idnum[5]*4+idnum[6]*2+idnum[7]*1 +idnum[8]*6+idnum[9]*3+idnum[10]*7+idnum[11]*9 +idnum[12]*10+idnum[13]*5+idnum[14]*8+idnum[15]*4+idnum[16]*2)%11;id[17]=yan[k];for(i=0;i<18;i++){ printf("%c",id[i]);} printf("\n");}else{for(i=0;i<17;i++){ switch(id[i]) { case '0':idnum[i]=0;break; case '1':idnum[i]=1;break; case '2':idnum[i]=2;break; case '3':idnum[i]=3;break; case '4':idnum[i]=4;break; case '5':idnum[i]=5;break; case '6':idnum[i]=6;break; case '7':idnum[i]=7;break; case '8':idnum[i]=8;break; case '9':idnum[i]=9;break; }}k=(idnum[0]*7+idnum[1]*9+idnum[2]*10+idnum[3]*5 +idnum[4]*8+idnum[5]*4+idnum[6]*2+idnum[7]*1 +idnum[8]*6+idnum[9]*3+idnum[10]*7+idnum[11]*9 +idnum[12]*10+idnum[13]*5+idnum[14]*8+idnum[15]*4+idnum[16]*2)%11;if(id[17]==yan[k])printf("True\n");elseprintf("False\n");}}return 0;}
刚开始还不明白对11取模是什么意思,现在了解了,是对11求余,嘿嘿,再接再厉吧,ACM编程的新手。。。。
- 第一次测试&第一篇CSDN日志
- 测试,我的csdn第一篇日志
- csdn 第一篇日志
- 第一篇CSDN日志
- 第一篇CSDN日志
- 第一篇CSDN日志
- 第一篇CSDN日志
- 在CSDN第一篇日志
- CSDN的第一篇日志
- csdn的第一篇日志
- 2012 CSDN第一篇日志
- csdn的第一篇日志
- 开工大吉!(我的第一篇CSDN日志,兼论我的第一次开发综述)
- 我在CSDN的第一篇日志
- 纪念CSDN的第一篇日志
- CSDN博客的第一篇日志
- 第一篇CSDN的博客日志~
- [原创]CSDN的第一篇日志
- EntityFramework5.0 数据迁移笔记--解决模型变化重建数据库的问题
- android viewstub include的使用
- Spectral Embedding/Clustering
- Bitmap 内存溢出
- UITableView 关于dequeueReusableCellWithIdentifier的问题
- 第一次测试&第一篇CSDN日志
- [C#] 在 Windows 里显示 DOS 字符
- 杭电1064
- Camera分析
- linux中的启动tomcat和查看相关信息
- JSP里的request.getHeader("user-agent")小结
- ACM-线段树
- TTL电平 RS232电平 CMOS电平
- 信息安全原理与实践(第2版)