c++时间计算问题,你知道某年某月某日距今多少天吗?
关于年月日的计算问题
- 闰年:
- 普通闰年:公历年份是4的倍数的,且不是100的倍数,为普通闰年(如2004年、2020年就是闰年)。
- 世纪闰年:公历年份是整百数的,必须是400的倍数才是世纪闰年(如1900年不是世纪闰年,2000年是世纪闰年)。
例题:某人三天打鱼,两天晒网。那么从2020年的1月1日开始这个人开始进行这样的循环,输入年月日,判断以后的某一天这个人是在打鱼还是在晒网。
这是一个计算天数的问题。(闰年与闰月是计算的难点)我们用以下语句判断:
(year % 4 == 0 && year % 100 != 0 || year % 400 == 0)
//这是一个计算天数的问题。(闰年与闰月是计算的难点)
//year % 4 == 0 && year % 100 != 0 || year % 400 == 0
#include<iostream>
using namespace std;
int main() {
int year, month, day;
cout << "请输入年份";
cin >> year;
cout << "请输入月份";
cin >> month;
cout << "请输入日期";
cin >> day;
int months[12] = { 31,28,31,30,31,30,31,31,30,31,30,31 };
//首先判断该年的天数
if (year % 4 == 0 && year % 100 != 0 || year % 400 == 0) {
months[1] = 29;//若为闰年则将天数更改为29天
}
int days = 0;//接受月份总共的天数
//运用switch语句的特性。
switch (month - 1) {
case 11:days += months[10];
case 10:days += months[9];
case 9:days += months[8];
case 8:days += months[7];
case 7:days += months[6];
case 6:days += months[5];
case 5:days += months[4];
case 4:days += months[3];
case 3:days += months[2];
case 2:days += months[1];
case 1:days += months[0];
}
days += day;//这一年的总天数
for (int i = 2020; i < year; i++) {
days += 365;
if (i % 4 == 0 && i % 100 != 0 || i % 400 == 0) {
days += 1;
}
}
//days就为总共的天数
int reste = days % 5;
if (reste == 1 || reste == 2 || reste == 3) {
cout << "他在" << year << "年" << month << "月" << day << "日在打鱼" << endl;
}
if (reste == 0 || reste == 4 ) {
cout << "他在" << year << "年" << month << "月" << day << "日在晒网" << endl;
}
system("pause");
return 0;
}
本文来自博客园,作者:litecdows,作者在其他博客平台均使用此昵称!
转载请注明原文链接:https://www.cnblogs.com/litecdows/p/15864397.html