#include <stdio.h>
int main()
{int add,year,month,day;/*定义地址码,年月日*/int shunxuma;/*定义顺序码*/char checknumber;/*定义校验码,注意是char型*/printf("请输入身份证号码:");scanf("%6d%4d%2d%2d%3d%1c",&add,&year,&month,&day,&shunxuma,&checknumber);/*用户键盘输入获取身份证号码,对字符串进行位数的分割和提取*/printf("地址码:%d\n",add);printf("出生日期:%d\n",year,month,day);printf("顺序码:%03d\n",shunxuma);printf("校验码:%c\n",checknumber);/*输出各类校验码*/return 0;
}

编写逻辑

整体的框架类似于hello world的整体框架

逻辑语句即为顺序语句,关键在于对scanf的使用理解,字符串的顺序取其中的一串。故出现了%6d等等的格式,此处为按照顺序取,倘若遇到身份证号码不是18位的便会错误。


字符串的简单应用

简单的考虑到身份证位数代表的各项意义,(仅考虑18位的身份证号码)

前六位属于地址码,中间八位为出生日期码,后三位为顺序码,最后一位为校验码。


校验码格式的知识点

值得注意的是 校验码存在双位数以罗马数字X代替的情况,在此采取的char型对其进行用户自定义。char型是以ACSII码值存储的,校验码的输出采取了%c(输出单个字符)的格式,以%c的格式输出,就会根据ACSII表转译输出为对应的字符,从而解决了X的问题。

倘如采用%d的输出,假若以x结尾的身份证号码便无法运行出正确结果。


顺序码是%03d而不是%d

这里考虑到输出三位数,此时意为输出三位数字,且若数字不足三位从左至右补齐0直到三位,比如 printf("%03d", 9); 会打印出 009。


代码书写的注意点:

\n:换行,可以尝试删去printf中的“\n”,查看输出结果的效果发现原本分行输出的结果变成了一行输出,难以查看结果。

因此在输出结果时,应该考虑到简易性,设计性,以便增强用户体验感的意识在。


仅仅作为大一入门理解。

公民身份号码是一种由18位数字组成的特征组合码,其排列顺序从左至右依次为:6位数字地址码、8位数字出生日期码,3位数字顺序码和1位数字校验码(校验码若为10则用字符X来表示)。编写程序从键盘输入一个相关推荐

  1. 3.12 编写程序从键盘输入一个整数,计算并输出该数的数字之和。例如:请输入 一个整数:8899123 各位数字之和为:40

    package booksTest;import java.util.Scanner;public class p54_3_12 {public static void main(String[] a ...

  2. 编写程序,键盘输入一个正整数,求该整数的各位数字平方之和。若输入的整数值为1274,则计算12+22+72+42,结果为70。

    #include<stdio.h> #include<math.h> main() { int a,s=0,i; printf("请输入一个正整数:"); ...

  3. 编程练习 P124 6.2 java国际标准书号ISBN是由13位数字组成,分为5段,如978-7-111-50690-4是一个合法的书号。编写程序,用户输入一个字符串书号,检查该书号是否合法。

    import java.util.Scanner;public class ISBNValidator {public static void main(String[] args) {Scanner ...

  4. 用C语言编写程序,任意输入一个字符串,将其中的字符按从小到大的顺序重排

    思路:将输入字符串中的每个字符转成相应的ASCII码值进行比较,排序. /* 2020-5-6 18:45 作者:nyc 功能:任意输入一个字符串,将其中的字符按从小到大的顺序重排 */ #inclu ...

  5. 上海市的某快递公司根据投送目的地距离公司的远近,将全国划分成5个区域,请编写程序从键盘输入邮件的目的区域编码和重量,按下列计费规则计算快递费用并输出运费,计算结果保留2位小数。

    快递费按邮件重量计算,由起重费用.续重费用两部分构成: (1)起重(首重)1公斤按起重资费计算(不足1公斤,按1公斤计算),超过首重的重量,按公斤(不足1公斤,按1公斤计算)收取续重费: (2)同城起 ...

  6. 圆柱底面周长面积c语言,编写一个程序,从键盘输入圆的半径r,圆柱的高h,分别计算出圆周长cl、圆面积cs和圆柱的体积cv,输出计算结果时要求保留小数点后4位...

    相关题目与解析 编写程序,从键盘输入圆柱底面半径和高,计算并输出圆柱的体积. 编程从键盘输入圆的半径r,计算并输出圆的周长和面积. 编写程序,从键盘输入6名学生的5门成绩,分别统计出每个学生的平均成绩 ...

  7. java 运算顺序 从左到右_Java表达式在进行运算时,同级运算符按从右至左的方向进行。 (5.0分)_学小易找答案...

    [判断题]在Java的方法中定义一个常量要用const关键字. (5.0分) [单选题]若已定义byte[ ] x={1,2,3,4};其中0<k<3,则对x数组元素错误的引用是( ). ...

  8. 公民身份号码 校验码 检证程序

    公民身份号码  校验码 检证程序 using System; using System.Collections.Generic; using System.Linq; using System.Tex ...

  9. 公民身份号码校验码算法(C#版)

    using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.T ...

最新文章

  1. Unity3D重要知识点
  2. jax-rs配置_具有MicroProfile配置的可配置JAX-RS ExceptionMapper
  3. TypeScript完全解读(26课时)_14.ES6和Nodejs中的模块
  4. ubuntu tftp 服务器故障排除一例
  5. java 财付通支付_工商变更:马化腾卸任财付通支付科技有限公司法定代表人
  6. Ubuntu更改镜像源
  7. 论文撰写-LaTex 教程+模板
  8. wps怎么关闭修改痕迹_WPS文字如何保留修改痕迹?WPS文字保留修改痕迹教程
  9. windows 远程桌面客户端
  10. 计算机锁定不能强制选项无法关机,Win10无法关机只能按电源强制关机的解决方法...
  11. 百度红包架构分析与推测
  12. java并发编程艺术——基础篇
  13. 成为一名程序员的开始
  14. MySQL本地安装与配置(超详细,附带安装包)
  15. Protues卸载后如何重新安装
  16. linux下修改IP的方法
  17. WSF操作系统抽象层学习笔记(二)---列队(单向链表)
  18. 苹果或将引入除三星外的又一手机屏幕供应商:京东方
  19. 【VScode】基本使用+快捷键
  20. Android R(11) 特殊字符~导致编译失败

热门文章

  1. 教妹学Java:接口,抽象的另一种表现方式
  2. 数组之倒序与插入(首位插入,末尾插入,指定位置插入)
  3. DOS下格式化移动硬盘
  4. 逃离天坑之后——谈谈技术路线该怎么走
  5. “澳本聪”是怎么从网红一步步变成“众矢之的”?
  6. 【Linux集群教程】13 集群安全防御 - SELinux 功能
  7. MacOS 系统版本更新Monterey12.3.1版之后l2tp无法正常访问
  8. 准备篇—刘备,从编草鞋到编代码 第1回 哦,何为Android?
  9. MAT内存分析工具-独立版安装教程及实战教学
  10. Windows编程实现俄罗斯方块