南阳oj_(75)日期计算

如题,输入一个日期,格式如:2010 10 24 ,判断这一天是这一年中的第几天。

日期计算

时间限制:3000 ms | 内存限制:65535 KB

难度:1

描述

如题,输入一个日期,格式如:2010 10 24 ,判断这一天是这一年中的第几天。

输入

第一行输入一个数N(0<N<=100),表示有N组测试数据。后面的N行输入多组输入数据,每行的输入数据都是一个按题目要求格式输入的日期。

输出

每组输入数据的输出占一行,输出判断出的天数n

样例输入

1
2
3
4
3
2000 4 5
2001 5 4
2010 10 24

样例输出

1
2
3
96
124
297

我用的编译器是CodeBlocks

我的代码:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
#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;
}

最优代码:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
#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;
}


O(∩_∩)O