top1编程
← 返回题目
题解

出生年月日

1 条题解

  • 0
    @ 2026-8-3 18:39:20

    解题思路

    输入出生年、月、日三个数,用 - 连接起来输出。比如输入 2008 10 5,输出 2008-10-5。

    注意两个要点:

    1. 题目没有要求补前导零,所以 10 月就输出 10,5 号就输出 5,不需要像 2008-10-05 那样补零;
    2. 两个数字之间用 - 连接。- 是一个普通字符,在输出语句里要放进双引号里写成 "-"。

    做法:先定义三个变量,y 存年份、m 存月份、d 存日期,用 cin 依次读入。输出时,先输出 y,再输出 "-",再输出 m,再输出 "-",最后输出 d,结尾换行。

    为什么这样输出就对?因为 cout 是把所有内容一个接一个地打印出来,我们在中间插入 "-",就能把三个数字串成 2008-10-5 的样子。

    变量名 y、m、d 分别是 year(年)、month(月)、day(日)的缩写,注释里写清楚含义,代码一眼就能看懂。

    参考代码

    #include <iostream>
    using namespace std;
    
    int main() {
        int y, m, d;        // y:出生年份,m:出生月份,d:出生日期
        cin >> y >> m >> d; // 依次读入年、月、日
        // 按 年-月-日 的格式输出,中间的"-"要用双引号包起来
        cout << y << "-" << m << "-" << d << endl;
        return 0;
    }
    

    复杂度分析

    程序只做一次读入、一次输出,操作次数固定,和年、月、日的数值无关。所以时间复杂度是 O(1)。

    空间上只用了 3 个 int 变量,空间复杂度是 O(1)。

    本题数据范围(年不超过 2023、月 1 到 12、日 1 到 31)都是正常范围的整数,int 完全装得下,不用考虑溢出。

    • 1