题目描述

输入年、月、日,计算该天是本年的第几天。

输入描述:

包括三个整数年(1<=Y<=3000)、月(1<=M<=12)、日(1<=D<=31)。

输出描述:

输入可能有多组测试数据,对于每一组测试数据,
输出一个整数,代表Input中的年、月、日对应本年的第几天。
示例1

输入

1990 9 20
2000 5 1

输出

263
122
switch解法:

#include <stdio.h>
#include <iostream>
using namespace std;
int main()
{
int y,d;
int m;
while(cin>>y>>m>>d)
{
int ans=0;
switch(m)
{
case 12:ans+=30;
case 11:ans+=31;
case 10:ans+=30;
case 9:ans+=31;
case 8:ans+=31;
case 7:ans+=30;
case 6:ans+=31;
case 5:ans+=30;
case 4:ans+=31;
case 3:ans+=28;
case 2:ans+=31;
case 1:ans+=0;
}
if((y%400==0||(y%4==0&&y%100!=0))&&m>2)
ans++;
cout<<ans+d<<endl;

}
return 0;
}

还可以这样,写起来更简单:

#include <stdio.h>
const int month[13]={0,31,28,31,30,31,30,31,31,30,31,30,31};
int main()
{
    for(int y,m,d;~scanf("%d%d%d",&y,&m,&d);printf("%d\n",d))
    {
        for(int i=1;i<m;d+=month[i++]);
        if (y%400==0 || (y%100 && y%4==0))
           d+=(m>2?1:0);
    }
    return 0;
}
 
01-31 20:15