Description
定义一个结构体变量(包括年、月、日)。编写一个函数days,由主函数将年、月、日传递给函数days,计算出该日在本年中是第几天并将结果传回主函数输出。
Input
年月日
Output
当年第几天
Sample Input
2000 12 31
Sample Output
366
HINT
主函数已给定如下,提交时不需要包含下述主函数
/* C代码 */
int main()
{
y_m_d date;
int days(y_m_d);
int day_sum;
scanf("%d%d%d",&date.year,&date.month,&date.day);
day_sum=days(date);
printf("%d\n",day_sum);
return 0;
}
/* C++代码 */
int main()
{
y_m_d date;
int days(y_m_d);
int day_sum;
cin>>date.year>>date.month>>date.day;
day_sum=days(date);
cout<<day_sum<<endl;
return 0;
}
代码:
#include<iostream>
using
namespace
std;
struct
y_m_d//定义一个y_m_d类型的函数
{
int
day;
int
month;
int
year;
};
int
leap_y(
int
year)定义一个判断型的函数,用来判断是否为瑞年
{
if
((year%4==0&&year%100!=0)||year%400==0)
return
1;
else
return
0;
}
int
days(y_m_d a)//定义一个int型的days函数,其中a为y_m_d类型,a包括day,month,year
{
int
sum=0,b;//定义一个b用来接收leap_y的判断结果
switch
(a.month)//用switch函数来计算整月份中的天数,其中用的是a中的month
{
case
1:sum=0;
break
;//注意加的为上一个月的总天数
case
2:sum=31;
break
;
case
3:sum=59;
break
;//假设2月有28天
case
4:sum=90;
break
;
case
5:sum=120;
break
;
case
6:sum=151;
break
;
case
7:sum=181;
break
;
case
8:sum=212;
break
;
case
9:sum=243;
break
;
case
10:sum=273;
break
;
case
11:sum=304;
break
;
case
12:sum=334;
break
;
}
b=leap_y(a.year);//b来接受判断的结果
if
(b==1&&a.month>2)
return
sum+a.day+1;//假设b==1为瑞年并且为2月以后则2月尾29天,在总天数加1即可
else
return
sum+a.day;//else包括不是瑞年和所输入的月份不到2月的情况,这样就不用加1
}
int
main()
{
y_m_d date;
int
days(y_m_d);//一个days函数
int
day_sum;
cin>>date.year>>date.month>>date.day;
day_sum=days(date);
cout<<day_sum<<endl;
return
0;
}