日期计算-ACM

日期计算


描述
如题,输入一个日期,格式如:2010 10 24 ,判断这一天是这一年中的第几天。
输入
第一行输入一个数N(0<N<=100),表示有N组测试数据。后面的N行输入多组输入数据,每行的输入数据都是一个按题目要求格式输入的日期。
输出
每组输入数据的输出占一行,输出判断出的天数n
样例输入
3
2000 4 5
2001 5 4
2010 10 24
样例输出
96
124
297

来源


*******************************************************************************************************


我的代码:

#include "iostream"
using namespace std;

int calcMonth(int month,int flag);
int main()
{
	int N,A,B,C,D;
	int flag=0;
	cin>>N;
	while(N--)
	{
		cin>>A>>B>>C;
		if ((A%4==0&&A%100!=0) || (A%400==0))
			flag=1;
		else
			flag=0;
		D=calcMonth(B,flag)+C;
		cout<<D<<endl;

	}
	return 0;
}

int calcMonth(int month,int flag)
{
	int M;
	if (flag==1)
	{
	switch(month)
	{
		case 1:
			M=0;break;
		case 2:
			M=31;break;
		case 3:
			M=60;break;
		case 4:
			M=91;break;
		case 5:
			M=121;break;
		case 6:
			M=152;break;
		case 7:
			M=182;break;
		case 8:
			M=213;break;
		case 9:
			M=244;break;
		case 10:
			M=274;break;
		case 11:
			M=305;break;
		case 12:
			M=335;break;
	}
	}
	else if (flag==0)
	{
		switch(month)
		{

		
		case 1:
			M=0;break;
		case 2:
			M=31;break;
		case 3:
			M=59;break;
		case 4:
			M=90;break;
		case 5:
			M=120;break;
		case 6:
			M=151;break;
		case 7:
			M=181;break;
		case 8:
			M=212;break;
		case 9:
			M=243;break;
		case 10:
			M=273;break;
		case 11:
			M=304;break;
		case 12:
			M=334;break;
		}

	}
	return M;

}


在网上还看这样一段代码,觉得这个比较好~~

#include<stdio.h>
#include<stdlib.h>
int years[2][13]={
{0,31,28,31,30,31,30,31,31,30,31,30,31},
{0,31,29,31,30,31,30,31,31,30,31,30,31}
};
void Caculate_Days(int year,int month,int day)
{
int i,leap=0;
if((year%4==0 && year%100!=0) || (year%100==0 && year%400==0) )
leap=1;
for(i=0;i<month;i++)
day+=years[leap][i];
printf("%d\n",day);
}
int main()
{
int year,month,day,m;
scanf("%d\n",&m);
while(m--)
{
scanf("%d%d%d",&year,&month,&day);
Caculate_Days(year,month,day);
}
return 0;
}


你可能感兴趣的:(日期计算-ACM)