日期计算
时间限制:
3000 ms | 内存限制:
65535 KB
难度:
1
-
描述
-
如题,输入一个日期,格式如: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 main()
{
int n,y,m,d,k;
int mon[12]={31,28,31,30,31,30,31,31,30,31,30,31};
cin>>n;
while(n--)
{
mon[1]=28;
cin>>y>>m>>d;
if(y%4==0&&y%100!=0||y%400==0) //判断是什么年
mon[1]=29; //闰年2月份为29天
for(k=0;k<m-1;k++) //加上所有的天数
d+=mon[k];
cout<<d<<endl;
}
return 0;
}
最优代码:
#include<stdio.h>
int main()
{
int a,b=0,c,y,m,d,fib;
scanf("%d",&a);
while(a--)
{
scanf("%d %d %d",&y,&m,&d);
if(y%400==0||y%100!=0&&y%4==0)
fib=29;
else fib=28;
for(c=1;c<=m;c++)
switch(c-1)
{
case 1:
case 3:
case 5:
case 7:
case 8:
case 10:b+=31;break;
case 2:b+=fib;break;
case 4:
case 6:
case 9:
case 11:b+=30;break;
}
b+=d;
printf("%d\n",b);
b=0;
}
return 0;
}