#t6. 日期格式转换
日期格式转换
日期格式转换
题目描述
世界上不同国家有不同的写日期的习惯。比如美国人习惯写成“月-日-年”,而中国人习惯写成“年-月-日”。请你写个程序,自动把读入的美国格式的日期改写成中国习惯的日期。
输入格式
输入在一行中按照“mm-dd-yyyy”的格式给出月、日、年。题目保证给出的日期是1900年元旦至今合法的日期。
输出格式
在一行中按照“yyyy-mm-dd”的格式给出年、月、日。
样例输入
03-15-2024
样例输出
2024-03-15
数据范围
保证输入的日期合法,年份在之间。
提示
一、%02d:控制整数的最小宽度和前导零
%d 只保证「把数打出来」,不管占几位。想要固定宽度、不足补零,就用 %0Nd:
printf("%d\n", 3); // 3
printf("%2d\n", 3); // 3 宽度 2,不足补空格
printf("%02d\n", 3); // 03 宽度 2,不足补 0
printf("%02d\n", 12); // 12 已经够 2 位,不再补
printf("%03d\n", 7); // 007
拆开看 %02d 的三部分:
%—— 占位符开始;0—— 不足位数时用0填(不写 0 就填空格);2—— 至少占 2 个字符宽;d—— 按整数输出。
二、为什么日期题一定要用它
日期 2024-3-7 按常见格式要写成 2024-03-07。如果直接用 %d,月和日只有一位时不会补零,输出就变成 2024-3-7,格式不符。
三、常见错误
-
写成
%2d少了0→ 补的是空格,看起来像多了空格。 -
把宽度写成变量:
%0nd里的 n 必须是写死的数字,不能是变量。 -
对小数用
%02d→ 类型不匹配,输出乱码。小数要用%.2f。 -
输入是「月-日-年」,中间是减号:和上一章的逗号题一样,格式串里要把减号原样写出来。
-
输出顺序变成「年-月-日」,但三个数还是原来的三个变量,只是打印顺序换了。
-
月和日不足两位要补 0,用
%02d;年份是四位,用%d就够。
自查:拿样例
03-15-2024 → 2024-03-15对照,重点看 3 月有没有补成03。
相关
在以下作业中: