在我们的手机或电脑上都有日历,如下图:
如上图的样式我们用代码也可实现,在Linux操作系统中就有这样的命令:cal
一、代码实现:
1.首先,1990年1月1号是星期一,我们选这一天做标尺。
2.打印指定年份对应的指定月份的日历,我们要先判断这一年是闰年还是平年,然后判断月份,最后求出指定年份的指定月份距1990年1月1号总共多少天。
3.根据总天数确定月份,然后打印这个月的日历。
【test.c】
#include<iostream>
#include<iomanip>
using namespace std;
//1990年1月1号是星期一
int nyear(int year) //判断是闰年还是平年
{
if ((year % 4 == 0 && year % 100 != 0) || year % 400 == 0)
return 366;
else
return 365;
}
int nmonth(int y, int m) //根据年份和月份判断是哪一个月的天数
{
if (m == 1 || m == 3 || m == 5 || m == 7 || m == 8 || m == 10 || m == 12)
return 31;
else if (nyear(y) == 366 && m == 2)
return 29;
else if (nyear(y) == 365 && m == 2)
return 28;
else
return 30;
}
int GetDays(int year, int month) //输入年份和月份确定到1990.1.1总共多少天
{
int i = 0;
int sum = 0;
if (year>1990)
for (i = 1990; i < year; i++)
sum += nyear(i);
if (month>1)
for (i = 1; i < month; i++)
{
sum += nmonth(year, i);
}