Problem H: 今年第几天?
Time Limit: 1 Sec Memory Limit: 128 MBSubmit: 723 Solved: 310
Description
定义一个函数,其参数为年、月、日的值,返回这一天为该年的第几天。要求在main函数中输入年月日,然后调用这个函数求值,并在main函数中输出结果。
Input
年、月、日3个整数(不考虑非正常的年月日)
Output
这一天为这一年的第几天
Sample Input
1980 4 18
Sample Output
109
HINT
在下面代码基础上完成
#include<iostream>
using namespace std;
int days(int y, int m, int d);
int main()
{
int year, month, day;
cin>>year>>month>>day;
cout<<days(year, month, day)<<endl;
return 0;
}
int days(int y, int m, int d)
{ }
#include<iostream>
using namespace std;
int days(int y, int m, int d);
int main()
{
int year, month, day;
cin>>year>>month>>day;
cout<<days(year, month, day)<<endl;
return 0;
}
int days(int y, int m, int d)
{
int a[12]={31,28,31,30,31,30,31,31,30,31,30,31},sum=0;
for(int i=0;i<m-1;i++)
{
sum+=a[i];
}
if(m>=1&&m<=12)
{
if((m==2)&&(d>=1&&d<=28))
{
sum=sum+d;
if(((y%4==0&&y%100!=0)||(y%400==0))&&(m>2))
return sum+1;
else return sum;
}
if((m==1||m==3||m==5||m==7||m==8||m==10||m==12)&&(d<=31&&d>=1))
{
sum=sum+d;
if(((y%4==0&&y%100!=0)||(y%400==0))&&(m>2))
return sum+1;
else return sum;
}
if((m==4||m==6||m==9||m==11)&&(d<=30&&d>=1))
{
sum=sum+d;
if(((y%4==0&&y%100!=0)||(y%400==0))&&(m>2))
return sum+1;
else return sum;
}
}
}