北理05年复试上机之实现日期类

题目

编写一个日期类,要求按xxxx-xx-xx 的格式输出日期,实现加一天的操作。

Input

输入第一行表示测试用例的个数m,接下来m行每行有3个用空格隔开的整数,分别表示年月日。测试数据不会有闰年。

2
1999 10 20
2001 1 31

Output

输出m行。按xxxx-xx-xx的格式输出,表示输入日期的后一天的日期。

1999-10-21
2001-02-01

code

#include <iostream>
#include<algorithm>
#include<string.h>
#include<stdio.h>
#include<stdlib.h>
#include<math.h>
using namespace std;

class Date
{
private:
    int m_year, m_month, m_day;
public:
    Date(){};
    Date(int year, int month, int day);
    void func();
    void show();
};

Date::Date(int year,int month, int day)
{
    m_year = year;
    m_month = month;
    m_day = day;
}

void Date::func()
{
    if (m_month == 2)
    {
        if (m_day == 28)
        {
            m_month++;
            m_day = 1;
        }
        else
        {
            m_day++;
        }
    }
    else if (m_month == 12)
    {
        if (m_day == 31)
        {
            m_year++;
            m_month = 1;
            m_day = 1;
        }
        else
        {
            m_day++;
        }
    }
    else if(m_month == 1 || m_month == 3 || m_month == 5 || m_month == 7 || m_month == 8 || m_month == 10)
    {
        if (m_day == 31)
        {
            m_month++;
            m_day = 1;
        }
        else
        {
            m_day++;
        }
    }
    else
    {
        if (m_day == 30)
        {
            m_month++;
            m_day = 1;
        }
        else
        {
            m_day++;
        }
    }

}

void Date::show()
{
    printf("%d-", m_year);
    if (m_month < 10)
    {
        printf("0");
    }
    printf("%d-", m_month);
    if (m_day < 10)
    {
        printf("0");
    }
    printf("%d\n", m_day);

}

int main()
{
    int m;
    cin >> m;
    while (m--)
    {
        int year, month, day;
        cin >> year >> month >> day;
        Date date(year, month, day);
        date.func();
        date.show();
    }

    return 0;
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值