如题,输入一个日期,格式如: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
   | 
 
样例输出
我用的编译器是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;  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