谭浩强C++课后习题22——计算日期
题目描述:给出年,月,日,计算该日是该年的第几天。
算法思路:用一个数组存储每个月的天数,for循环遍历之前的每个月将其数与这个月的天数相加,如果该年是闰年且月数大于二月,则天数需要加一,判断闰年的方法:如果该年能同时被4和100整除,或者能被400整除,则该年是闰年。
#include<iostream>
using namespace std;
bool leap(int year) {
if ((year % 4 == 0 && year % 100 == 0) || (year % 400 == 0)) {
return true;
}
else
return false;
}
int sum_day(int year, int month, int day) {
int days[12] = { 31,28,31,30,31,30,31,31,30,31,30,31 };
for (int i = 0;i < month - 1;i++)
day += days[i];
if (leap(year) && year >= 3)
day++;
return day;
}
int main() {
int year, month, day;
cout << "输入年,月,日:";
cin >> year >> month >> day;
cout << "这是第" << sum_day(year, month, day) << "天" << endl;
return 0;
}
运行测试结果: