#191. 输入输出实验——scanf和printf的“妙用”

输入输出实验——scanf和printf的“妙用”

Problem A. 输入输出实验——scanf和printf的“妙用”

时间限制:1s

空间限制:256MB

题目背景

某一天,小季正在洛谷上刷题,他做到了下面这道题。

注意:背景题目与本题无关!!!!

image-20240809161907234.png

对于小季来说计算出最终时间的时和分并不是难事,但是小季在打印最终结果上犯了难,于是他写下了如下语句:

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。

现在给定一种日期的写法,请将日期转换为另一种写法。

输入描述

输入包括两行,第一行两个整数 aabb,代表输入的日期格式和要求输出的日期格式。

第二行为用给定日期格式表示的一个日期。

其中 aabb 有三种取值,这三种取值代表的含义如下:

取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