C语言 · 身份证号码升级
1、把15位身份证号码中的年份由2位(7,8位)改为四位。
2、最后添加一位验证码。验证码的计算方案:
将前 17 位分别乘以对应系数 (7 9 10 5 8 4 2 1 6 3 7 9 10 5 8 4 2) 并相加,然后除以 11 取余数,0-10 分别对应 1 0 x 9 8 7 6 5 4 3 2。
请编写一个程序,用户输入15位身份证号码,程序生成18位身份证号码。假设所有要升级的身份证的四位年份都是19××年
1 /* 2 1、把15位身份证号码中的年份由2位(7,8位)改为四位; 3 2、最后添加一位验证码。验证码的计算方案: 4 将前 17 位分别乘以对应系数 (7 9 10 5 8 4 2 1 6 3 7 9 10 5 8 4 2) 5 并相加,然后除以 11 取余数,0-10 分别对应 1 0 x 9 8 7 6 5 4 3 2。 6 */ 7 #include<stdio.h> 8 int xishu[17]={7,9,10,5,8,4,2,1,6,3,7,9,10,5,8,4,2}; 9 char duiying[17]={"10x98765432"}; 10 int main(){ 11 char num1[18]; 12 int num2[18]; 13 int sum=0; 14 scanf("%s",num1); 15 /*将数位往后移两位*/ 16 for(int i=14;i>=6;i--){ 17 num1[i+2]=num1[i]; 18 } 19 num1[6]='1'; 20 num1[7]='9'; 21 for(int i=0;i<17;i++){ 22 num2[i]=num1[i]-'0'; 23 sum+=num2[i]*xishu[i]; 24 } 25 sum%=11;//除以11取余数 26 num1[17]=duiying[sum]; 27 printf("%s",num1); 28 // for(int i=0;i<18;i++){ 29 // printf("%c",num1[i]); 30 // } 31 }
转载于:https://www.cnblogs.com/panweiwei/p/6507423.html
C语言 · 身份证号码升级相关推荐
- java 蓝桥杯算法提高 身份证号码升级(题解)
试题 算法提高 身份证号码升级 资源限制 时间限制:1.0s 内存限制:256.0MB 问题描述 从1999年10月1日开始,公民身份证号码由15位数字增至18位.(18位身份证号码简介).升级方法为 ...
- Java实现蓝桥杯 算法提高 身份证号码升级
算法提高 身份证号码升级 时间限制:1.0s 内存限制:256.0MB 问题描述 从1999年10月1日开始,公民身份证号码由15位数字增至18位.(18位身份证号码简介).升级方法为: 1.把15位 ...
- 算法提高 身份证号码升级
问题描述 从1999年10月1日开始,公民身份证号码由15位数字增至18位.(18位身份证号码简介).升级方法为: 1.把15位身份证号码中的年份由2位(7,8位)改为四位. 2.最后添加一位验证码. ...
- [Java] 蓝桥杯ADV-171 算法提高 身份证号码升级
问题描述 从1999年10月1日开始,公民身份证号码由15位数字增至18位.(18位身份证号码简介).升级方法为: 1.把15位身份证号码中的年份由2位(7,8位)改为四位. 2.最后添加一位验证码. ...
- 蓝桥杯 ADV-171 算法提高 身份证号码升级
问题描述 从1999年10月1日开始,公民身份证号码由15位数字增至18位.(18位身份证号码简介).升级方法为: 1.把15位身份证号码中的年份由2位(7,8位)改为四位. 2.最后添加一位验证码. ...
- java代码实现15位身份证号码升级到18位
转载网址 点击打开链接 转载一份作为记录,真心不错.受教! 18位身份证号码的组成: 公民身份号码是特征组合码,由十七位数字本体码和一位校验码组成.排列顺序从左至右依次为:六位数字地址码,八位数字 ...
- 算法提高 身份证号码升级
问题描述 从1999年10月1日开始,公民身份证号码由15位数字增至18位.(18位身份证号码简介).升级方法为: 1.把15位身份证号码中的年份由2位(7,8位)改为四位. 2.最后添加一位验证码. ...
- 蓝桥杯 算法提高 身份证号码升级
问题描述 从1999年10月1日开始,公民身份证号码由15位数字增至18位.(18位身份证号码简介).升级方法为: 1.把15位身份证号码中的年份由2位(7,8位)改为四位. 2.最后添加一位验证码. ...
- 题目 1916: [蓝桥杯][算法提高VIP]身份证号码升级
题目描述 从1999年10月1日开始,公民身份证号码由15位数字增至18位.(18位身份证号码简介).升级方法为: 1.把15位身份证号码中的年份由2位(7,8位)改为四位. 2.最后添加一位验证码. ...
最新文章
- VTK:vtkNew<vtkDenseArray<double>>用法实战
- XSS挑战赛--Writeup(共16题)
- Android 设置Activity样式 透明度
- 从源码的角度说说Activity的setContentView的原理(二)
- 迁移学习(transfer learning)与finetune的关系?【finetune只是transfer learning的一种手段】
- vue amp; nuxt 博客网站
- 计算机科学研究方向介绍
- Windows下Github使用
- 学习:配置hibernate
- Yosemite上手动增加基于POP3协议的QQ邮箱账记
- 日期格式 java_Java日期格式转换
- H桥电机驱动电路详解
- 基于tushare和python的证券市场价格分析
- 网易云linux版是什么格式,网易云音乐发布Linux版本
- Label free定量蛋白质组学
- DAS、NAS、SAN、ISCSI的区别
- [源码阅读]解析Anime(JS动画库)核心(1)
- Java的求学之路--Day01
- 33-Jenkins-修改插件源
- Excel使用VBA动态设置打印区域
热门文章
- Tomcat服务器server.xml详解
- 《LeetCode力扣练习》剑指 Offer 27. 二叉树的镜像 Java
- c#_Dictionary集合
- python爬歌词生成词云图_爬取每日热搜词,生成地图词云图
- linux运行炉石传说,使用Lutris在Linux上玩炉石传说
- linux docker安装mysql_Linux-docker安装mysql
- python网上有免费资源吗_【转载】学习Python无从下手?最好的免费资源想要拿走...
- signature=a8a3e788013f73439051c7287d7f5f0b,来用百度密语吧!!!
- 数据结构课本学习 --单链表类定义
- Fragment 源码解析