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;
}
posted @ 2022-02-05 16:37  litecdows  阅读(201)  评论(0编辑  收藏  举报