1965 - ACM组练习题1

通过次数

0

提交次数

0

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

输入一个日期,格式为XXXX-XX-XX,对应输出该日期的下一天,结尾换行。

题目输入

年月日之间用“-”隔开,如2013-10-26.

题目输出

输出该日期的下一天,格式为XXXX-XX-XX,如1994-08-22.

输入/输出样例

输入格式

2013-01-26

输出格式

2013-01-27

C语言解答

#include<stdio.h>
int main()
{
	int year,month,day;
	scanf("%04d-%02d-%02d",&year,&month,&day);
	switch(month)
	{
	case 1:
	case 3:
	case 5:
	case 7:
	case 8:
	case 10:
		{
			if(day==31)
			    month++,day=1;
		    else
			    day++;
		}
		break;
	case 4:
	case 6:
	case 9:
		{
			if(day==30)
				month++,day=1;
			else
				day++;
		}
		break;
	case 12:
		{
			if(day==31)
				month=1,year++,day=1;
			else
				day++;
		}
	case 2:
		if(year%400==0||(year%100!=0&&year%4==0))
		{
			if(day==29)
				month=3,day=1;
			else
				day++;
		}
		else
		{
			if(day==28)
				month=3,day=1;
			else
				day++;
		}
		break;
	}
	printf("%04d-%02d-%02d\n",year,month,day);
	return 0;
}

C++解答

#include<stdio.h>
int main()
{
	int y,m,d;
	scanf("%d-%d-%d",&y,&m,&d);
	if(m!=2&&d<30)
		d++;
	else
		if(m==2)
			if(d==29)
				m++,d=1;
			else
				if(y%400==0||(y%100!=0&&y%4==0))
					d++;
				else if(d==28)
					m++,d=1;
				else if(d<28)
					d++;
				while(d==31&&m==12)
					y++,m=1,d=1;
				while(d==31&&m!=12)
					m++,d=1;
				while(d==30)
					switch(m)
				{
					case 1:case 3:case 5:case 7:case 8:case 10:case 12:d++;break;
					case 4:case 6:case 9:case 11:d=1;m++;break;
				}
		printf("%04d-%02d-%02d\n",y,m,d);
	return 0;
}