公民身份号码是一种由18位数字组成的特征组合码,其排列顺序从左至右依次为:6位数字地址码、8位数字出生日期码,3位数字顺序码和1位数字校验码(校验码若为10则用字符X来表示)。编写程序从键盘输入一个
#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来表示)。编写程序从键盘输入一个相关推荐
- 3.12 编写程序从键盘输入一个整数,计算并输出该数的数字之和。例如:请输入 一个整数:8899123 各位数字之和为:40
package booksTest;import java.util.Scanner;public class p54_3_12 {public static void main(String[] a ...
- 编写程序,键盘输入一个正整数,求该整数的各位数字平方之和。若输入的整数值为1274,则计算12+22+72+42,结果为70。
#include<stdio.h> #include<math.h> main() { int a,s=0,i; printf("请输入一个正整数:"); ...
- 编程练习 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 ...
- 用C语言编写程序,任意输入一个字符串,将其中的字符按从小到大的顺序重排
思路:将输入字符串中的每个字符转成相应的ASCII码值进行比较,排序. /* 2020-5-6 18:45 作者:nyc 功能:任意输入一个字符串,将其中的字符按从小到大的顺序重排 */ #inclu ...
- 上海市的某快递公司根据投送目的地距离公司的远近,将全国划分成5个区域,请编写程序从键盘输入邮件的目的区域编码和重量,按下列计费规则计算快递费用并输出运费,计算结果保留2位小数。
快递费按邮件重量计算,由起重费用.续重费用两部分构成: (1)起重(首重)1公斤按起重资费计算(不足1公斤,按1公斤计算),超过首重的重量,按公斤(不足1公斤,按1公斤计算)收取续重费: (2)同城起 ...
- 圆柱底面周长面积c语言,编写一个程序,从键盘输入圆的半径r,圆柱的高h,分别计算出圆周长cl、圆面积cs和圆柱的体积cv,输出计算结果时要求保留小数点后4位...
相关题目与解析 编写程序,从键盘输入圆柱底面半径和高,计算并输出圆柱的体积. 编程从键盘输入圆的半径r,计算并输出圆的周长和面积. 编写程序,从键盘输入6名学生的5门成绩,分别统计出每个学生的平均成绩 ...
- java 运算顺序 从左到右_Java表达式在进行运算时,同级运算符按从右至左的方向进行。 (5.0分)_学小易找答案...
[判断题]在Java的方法中定义一个常量要用const关键字. (5.0分) [单选题]若已定义byte[ ] x={1,2,3,4};其中0<k<3,则对x数组元素错误的引用是( ). ...
- 公民身份号码 校验码 检证程序
公民身份号码 校验码 检证程序 using System; using System.Collections.Generic; using System.Linq; using System.Tex ...
- 公民身份号码校验码算法(C#版)
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.T ...
最新文章
- Unity3D重要知识点
- jax-rs配置_具有MicroProfile配置的可配置JAX-RS ExceptionMapper
- TypeScript完全解读(26课时)_14.ES6和Nodejs中的模块
- ubuntu tftp 服务器故障排除一例
- java 财付通支付_工商变更:马化腾卸任财付通支付科技有限公司法定代表人
- Ubuntu更改镜像源
- 论文撰写-LaTex 教程+模板
- wps怎么关闭修改痕迹_WPS文字如何保留修改痕迹?WPS文字保留修改痕迹教程
- windows 远程桌面客户端
- 计算机锁定不能强制选项无法关机,Win10无法关机只能按电源强制关机的解决方法...
- 百度红包架构分析与推测
- java并发编程艺术——基础篇
- 成为一名程序员的开始
- MySQL本地安装与配置(超详细,附带安装包)
- Protues卸载后如何重新安装
- linux下修改IP的方法
- WSF操作系统抽象层学习笔记(二)---列队(单向链表)
- 苹果或将引入除三星外的又一手机屏幕供应商:京东方
- 【VScode】基本使用+快捷键
- Android R(11) 特殊字符~导致编译失败
热门文章
- 教妹学Java:接口,抽象的另一种表现方式
- 数组之倒序与插入(首位插入,末尾插入,指定位置插入)
- DOS下格式化移动硬盘
- 逃离天坑之后——谈谈技术路线该怎么走
- “澳本聪”是怎么从网红一步步变成“众矢之的”?
- 【Linux集群教程】13 集群安全防御 - SELinux 功能
- MacOS 系统版本更新Monterey12.3.1版之后l2tp无法正常访问
- 准备篇—刘备,从编草鞋到编代码 第1回	哦,何为Android?
- MAT内存分析工具-独立版安装教程及实战教学
- Windows编程实现俄罗斯方块