如题,输入一个日期,格式如: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