函数的应用——日历问题

给定从2020年1月1日过去的天数,输出“YYYY-MM-DD dayofweek(Sunday、Monday、Tuesday、Wednsday、Thursday、Friday、Saturday)”。
注:闰年为①是4的倍数,且不是100的倍数;或②400的倍数。闰年二月有29天(一年266天),平年二月有28天(一年365天)

思路:

先计算出星期 计算年 计算月 得到日 (星期有固定周期规律;2000.1.1为Saturday) (依次减去2000年天数、2001年天数.....直到不够减去一年;判断是否为闰年,确定减去的天数) (依次减去K年1月天数、2月天数.....直到不够减去一个月) 先计算出星期 计算年 计算月 得到日

实现1:

#include<iostream>
using namespace std;
//day为2020.1.1过去的天数
int day=0;
int day_month=0;
int days = 0;
void get_Dayofweek(int day)
{
	if (day % 7 == 4) cout<< "Saturday";
	else if (day % 7 == 5) cout << "Sunday";
	else if (day % 7 == 6) cout << "Monday";
	else if (day % 7 == 0) cout << "Tuesday";
	else if (day % 7 == 1) cout << "Wednsday";
	else if (day % 7 == 2) cout << "Thursday";
	else if (day % 7 == 3) cout << "Friday";
	
}
void get_YearMonthDay(int day)
{
	//年
	int i = 0,day1=day,j=0;
	for ( i = 2020; day1 > 0; i++)
	{
		day_month = day1;
		if ((i % 4 == 0) && (i % 100 != 0))
			day1 = day1 - 366;
		else
			day1 = day1 - 365;
	}
	cout<< i-1<<"年";
	//月、日
	for (j = 1; day_month > 0; j++)
	{
		days = day_month;
		if ((j == 1) || (j == 3) || (j == 5) || (j == 7) || (j == 8) || (j == 10) || (j == 12))
			day_month = day_month - 31;
		else if ((j == 4) || (j == 6) || (j == 9) || (j == 11))
			day_month = day_month - 30;
		else if ((j == 2) && ((i - 1) % 4 == 0) && ((i - 1) % 100 != 0))//29天
			day_month = day_month - 29;
		else
			day_month = day_month - 28;
	}
	
	cout << j-1 << "月";
	cout << days << "日";
}

int main()
{
	get_YearMonthDay(367);
	get_Dayofweek(367);
	return 0;
}

结果:在这里插入图片描述
实现2:
Coursera&北京大学--计算导论与C语言基础ppt在这里插入图片描述在这里插入图片描述Coursera&北京大学--计算导论与C语言基础ppt
有时间再打一遍老师的代码吧,先保存ppt…

发布了16 篇原创文章 · 获赞 3 · 访问量 307

猜你喜欢

转载自blog.csdn.net/bajiaoyu517/article/details/103847062