#191. 输入输出实验——scanf和printf的“妙用”
输入输出实验——scanf和printf的“妙用”
Problem A. 输入输出实验——scanf和printf的“妙用”
时间限制:1s
空间限制:256MB
题目背景
某一天,小季正在洛谷上刷题,他做到了下面这道题。
注意:背景题目与本题无关!!!!
对于小季来说计算出最终时间的时和分并不是难事,但是小季在打印最终结果上犯了难,于是他写下了如下语句:
if (hour < 10 && minute >= 10)
printf("0%d:%d", hour, minute);
if (hour >= 10 && minute < 10)
printf("%d:0%d", hour, minute);
if (hour < 10 && minute < 10)
printf("0%d:0%d", hour, minute);
if (hour >= 10 && minute >= 10)
printf("%d:%d", hour, minute);
虽然很繁琐,但是也是无奈之举。后来,小季了解到,只需要一条语句就可以代替上面的话:
printf("%02d:%02d", hour, minute);
其中,%02d
表示格式化一个整数(d
代表十进制整数),并且输出至少占用两位数字。如果整数只有一位数字,就会在前面补 0
。例如,5
会被格式化为 05
。通过这种输出方式,就可以解决输出位数不够补零的问题。
后来,小季又了解到,如果输入是类似的格式,scanf也是可以这么写的。
题目描述
大家都很熟悉日期在中文里的书写格式,我们中文里的写法通常是按照:年-月-日的顺序。比如:2024年8月9日。但是,英文里,日期的写法有所不同,分为美式写法和英式写法。
美式写法的格式为:MM/DD/YYYY,也就是:月/日/年。英式写法的格式为:DD/MM/YYYY,即:日/月/年。
比如说2024年8月9日用美式写法就写成:08/09/2024,用英式写法就写成:09/08/2024。
现在给定一种日期的写法,请将日期转换为另一种写法。
输入描述
输入包括两行,第一行两个整数 和 ,代表输入的日期格式和要求输出的日期格式。
第二行为用给定日期格式表示的一个日期。
其中 和 有三种取值,这三种取值代表的含义如下:
取1,代表中文书写格式:YYYY-MM-DD,即年-月-日;
取2,代表美式书写格式:MM/DD/YYYY,即月/日/年;
取3,代表英式书写格式:DD/MM/YYYY,即日/月/年;
注意,年份必须有4位,月和日必须有2位,如果不足前面补0。
题目保证输入日期都是符合格式的,并且都是合法日期。
输出描述
输出一行,代表用要求输出的日期格式表示的日期。
样例1
输入
1 2
2024-08-09
输出
08/09/2024
样例2
输入
3 1
09/12/0314
输出
0314-12-09
相关
在下列比赛中: