背景为牛客网编程题BC14题
题目描述:
输入一个人的出生日期(包括年月日),将该生日中的年、月、日分别输出。
输入描述:
输入只有一行,出生日期,包括年月日,年月日之间的数字没有分隔符。
输出描述:
三行,第一行为出生年份,第二行为出生月份,第三行为出生日期。输出时如果月份或天数为1位数,需要在1位数前面补0。
示例:
输入:
20130225
输出:
year=2013
month=02
date=25
实现代码:
#include <stdio.h>
int main(){
int value;
scanf("%8d",&value);
int year = value/10000; //出生年份
int month = (value%10000)/100; //出生月份
int date = value%100; //出生日期
printf("year=%04d\n",year);
printf("month=%02d\n",month);
printf("date=%02d\n",date);
return 0;
}
格式控制符的相关知识:
(1)完整格式
1.% - x m . n 格式字符
2.有-表示左对齐,无表示右对齐
3.x表示空位需要填的字符
4.m表示最小域宽
5.n表示精度,一般用于实型小数点保留位数,按照四舍五入原则
(2)格式字符
整型
%d格式,表示整型
%hd格式,表示短整型
%ld格式,表示长整型
%lld/l64d格式,表示64位整型
%u格式,表示无符号整型,其他长度同d格式
%o格式,表示无符号八进制整型,对于负数直接将补码看成正数转换
%x格式,表示无符号十六进制整型,x小写对应的十六进制为小写,x大写对应大写
实型
%f格式,表示小数形式单精度实型
%lf格式,表示小数形式双精度实型
%e格式,表示指数形式单精度实型;le同理
%g格式,系统自动选定f或e格式,使输出的宽度最小,且不输出无意义的0
PS:G/E格式表示的指数形式中E大写
字符型
%c格式,表示单个字符
%s格式,表示字符串
其他
%p格式,表示指针
%i格式,据说是以前的整型格式字符
%%格式,输出%
(3)转义字符
\a:蜂鸣,响铃
\b:回退:向后退一格
\f:换页
\n:换行,光标到下行行首
\r:回车,光标到本行行首
\t:水平制表
\v:垂直制表
\:反斜杠
':单引号
":双引号
\ddd:三位八进制
\xhh:二位十六进制
\0:空字符(NULL)
(转自https://www.cnblogs.com/HackHarry/p/8320825.html 侵删)