输入某年某月某日,计算并输出它是这一年的第几天。
输入
年 月 日
输出
天数
样例
标准输入复制文本 |
2020 1 7 |
标准输出复制文本 |
7 |
标准输入复制文本 |
2020 5 30 |
标准输出复制文本 |
151 |
标准输入复制文本 |
2000 11 9 |
标准输出复制文本 |
314 |
解题思路:
该题关键在于闰年的月份不同,导致天数不同,可以用二维数组巧妙解决
易错点在于加多少个月份:i=month-2(因为day1数组是从下标0开始的,所以要减去一个月份。又因为最后面直接加day即可,所以应再减去一个月份)
#include<bits/stdc++.h>
using namespace std;
//第一行指的普通年的月份天数,第二行为闰年的月份天数
int day1[2][12]={{31,28,31,30,31,30,31,31,30,31,30,31},{31,29,31,30,31,30,31,31,30,31,30,31}};
int year,month,day,sum=0,i;
int main()
{
cin>>year>>month>>day;
//判断闰年
if((year%4==0)&&(year%100!=0)||(year%400==0))
{ //因为day1数组是从下标0开始的,所以要减去一个月份。又因为最后面直接加day即可,所以应再减去一个月份
for(i=month-2;i>=0;i--)
{
sum+=day1[1][i];
}
sum+=day;
}
else
{
for(i=month-2;i>=0;i--)
{
sum+=day1[0][i];
}
sum+=day;
}
cout<<sum;
return 0;
}