步骤:
- 判读输入的年份是否为闰年(IsR)
- 判读输入的年份有多少天(GetYearsday)
- 获取输入的月拥有的天数(GetMonthADays)
- 在 Main 函数中完成
#include <iostream>
using namespace std;
bool IsR(int year)
{
bool isR;
if (year % 4 == 0 && year % 100 != 0 || year % 400 == 0)
{
isR = true;
}
else
{
isR = false;
}
return isR;
}
int GetYearsday(int year)
{
int yearDays = 0;
if (IsR(year))
{
yearDays = 366;
}
else
{
yearDays = 365;
}
return yearDays;
}
int GetMonthADays(int year, int month)
{
switch (month)
{
case 4:
case 6:
case 9:
case 11:
return 30;
case 2:
if (IsR(year))
{
return 29;
}
else
{
return 28;
}
default:
return 31;
}
}
int GetTotaldays(int year, int month)
{
int totalDays = 0;
for (int i = 1900; i < year; i++)
{
totalDays += GetYearsday(i);
}
for (int j = 1; j < month; j++)
{
totalDays += GetMonthADays(year, j);
}
return totalDays;
}
int main() {
int year, Month;
cout << "请输入年份" << endl;
cin >> year;
cout << "请输入一个月份" << endl;
cin >> Month;
int sumDays = GetTotaldays(year, Month);
//打印格式
cout << "星期日\t星期一\t星期二\t星期三\t星期四\t星期五\t星期六\t" << endl;
//计算当前1号是星期几
int week = sumDays % 7 + 1;
if (week == 7)//7代表周日,输出0个\t
{
week = 0;
}
//输出1号前面的\t,当月1号是周日不输出,是周几输出几个
for (int i = 1; i <= week; i++)
{
cout << ("\t");
}
//获取当月的天数
int days = GetMonthADays(year, Month);
for (int j = 1; j <= days; j++)
{
cout << j;
cout << "\t";
if ((sumDays + j) % 7 == 6) //逢周六输出换行
{
cout << endl;
}
}
cout << endl;
system("pause");
return 0;
}