题目描述:
根据输入的日期,计算是这一年的第几天。
输入描述:
输入一行,每行空格分割,分别是年,月,日
输出描述:
输出是这一年的第几天
示例:
输入:
2012 12 31
输出:
366
解题思路:
本题是个数学问题,也是生活题。闰年要满足两个条件,年份可以被4整除,且不被100整除。首先用year判断是否为闰年;其次,建立闰年的月份天数表和非闰年的月份天数表;根据当前月份,累加其前n-1个月的完整天数,再加上当月的天数,完毕。
测试代码:
#include <iostream> #include <string> #include <vector> using namespace std; int main() { int year,month,day; while(cin>>year>>month>>day) { bool flag=(year%4==0&&year%100!=0)?true:false; vector<int> months1={31,28,31,30,31,30,31,31,30,31,30,31}; // 非闰年 vector<int> months2={31,29,31,30,31,30,31,31,30,31,30,31}; // 闰年 int sum=0; for(int i=0;i<(month-1);++i) { if(flag) { sum+=months2[i]; } else{ sum+=months1[i]; } } sum+=day; cout<<sum<<endl; } return 0; }