题解 | #出生日期输入输出#

出生日期输入输出

http://www.nowcoder.com/practice/4a4a9dd1edb6453ba4a0432319200743

先说一下我用的是c语言
因为题目要求输入一串数字,为了存放数字我需要建立变量,打印的时候这数字打印到三个地方,所以我建三个变量
这里备注:通过scanf函数的%m格式控制可以指定输入域宽,输入数据域宽(列数),按此宽度截取所需数据。
scanf("%4d%2d%2d",&i,&j,&c);
第一个四个数字,第二 三都是两个数字,所以是%4和%2%2
输入完成我把他们放到i j c的地址
现在可能你觉得直接打印就完了,其实不是
打印的时候你会发现如果他输入的是20130225
你前面打印2013的时候没问题
但打印02的时候它会自己把前面那个0省去,就打印2,这显然不满足题意。
于是后面又说通过printf函数的%0格式控制符,输出数值时指定左面不使用的空位置自动填0。
这时你就应该意识到你需要这打印的时候做点什么
printf("month=%02d\n",j);
我在%d中加了一个02来打印这个0,你可能会想为什么是02,一个0就01嘛,不是这样的,你打01会跟没有加一样。
我代码写完后:
#include<stdio.h>
int main()
{
int i = 0;
int j = 0;
int c = 0;
scanf("%4d%2d%2d",&i,&j,&c);
printf("year=%d\n",i);
printf("month=%02d\n",j);
printf("date=%02d",c);
return 0;
}

肯定有更好的解法,但目前的我只能写成这样,谢谢观看。

全部评论
逛了一圈就你讲的最清楚
2 回复 分享
发布于 2022-10-14 20:21 北京
思路清楚,讲的又细又明白,口语化,就需要你这种的思路,我只能说NB!老哥稳
1 回复 分享
发布于 2024-11-30 12:33 河北
说的太好了
1 回复 分享
发布于 2024-03-19 11:46 广东
2应该是打印两位的意思吧
1 回复 分享
发布于 2023-08-15 15:26 河南
为什么只打一个0或只打个01就跟没加一样?
1 回复 分享
发布于 2023-04-09 23:04 河南
要考虑兼容性 不一定都是20130225的年份
点赞 回复 分享
发布于 2023-12-12 13:01 重庆
#include <stdio.h> int main() { int a,b,c,d; scanf("%d",&a); b=a/10000; c=(a-b*10000)/100; d=(a-b*10000)-c*100; printf("year=%d\n",b); if(c<10) { printf("month=0%d\n",c); } else { printf("month=%d\n",c); } if(d<10) { printf("date=0%d\n",d); } else { printf("date=%d\n",d); } return 0; }</stdio.h>
点赞 回复 分享
发布于 2023-12-12 13:01 重庆
为什么打01就跟没加一样?
点赞 回复 分享
发布于 2022-10-14 20:25 北京

相关推荐

05-27 14:57
西北大学 golang
强大的社畜在走神:27届真不用急,可以搞点项目、竞赛再沉淀沉淀,我大二的时候还在天天打游戏呢
投递华为等公司10个岗位
点赞 评论 收藏
分享
评论
93
5
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务