1584 - 日期类

通过次数

0

提交次数

0

时间限制 : 1 秒 内存限制 : 32 MB

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

题目输入

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

题目输出

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

输入/输出样例

输入格式

2
1999 10 20
2001 1 31

输出格式

1999-10-21
2001-02-01

C语言解答

#include<stdio.h>
int main()
{
	int i=0,num;
	int year,month,day,k;
	scanf("%d",&num);
	while(i<num)
	{
       scanf("%d%d%d",&year,&month,&day);
	   if(month==12&&day==31)
	   {
		   printf("%d-01-01\n",year+1);
	   }
	   else if((month==2&&day==28)||(month==4&&day==30)||(month==6&&day==30)||(month==9&&day==30)||(month==11&&day==30)||(day==31))
	   {
		   k=1;
		   zzb(year,month+1,k);
	   }
	   else
	   {
		   zzb(year,month,day+1);
	   }

	  i++;

	}
	return 0;
}
void zzb(int zyear,int zmonth,int zday)
{
	if(zyear>=1000)
	{
		printf("%d",zyear);
	}
	else if(zyear>=100&&zyear<=999)
	{
         printf("0%d",zyear);
	}
	else if(zyear>=10&&zyear<=99)
	{
         printf("00%d",zyear);
	}
	else
	{
		 printf("000%d",zyear);
	}
	printf("-");
	if(zmonth>=10)
	{
        	printf("%d",zmonth);
	}
	else 
	{
        printf("0%d",zmonth);
	}
     printf("-");
	 if(zday>=10)
	 {
		 printf("%d\n",zday);
	 }
	 else 
	 {
		 printf("0%d\n",zday);
	 }
}

C++解答

#include <cstdio>
#include <cstring>

int f[] = {0, 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31};

int main() {
    //freopen("test.in", "r", stdin);
    //freopen("test.out", "w", stdout);
    int t;
    scanf("%d", &t);
    while (t--) {
        int y, m, d;
        scanf("%d %d %d", &y, &m, &d);
        ++d;
        if (d > f[m]) {
            ++m;
            d = 1;
        }
        printf("%d-%02d-%02d\n", y, m, d);
    }
    return 0;
}

Python解答

# coding=utf-8
import datetime
Date = datetime.datetime

m = int(input())
for _ in range(m):
    date = Date.strptime(input(), "%Y %m %d")
    delta = datetime.timedelta(days=1)
    new_date = date + delta
    print(new_date.strftime("%Y-%m-%d"))