C++实现显示某年整年的日历

本题描述:输入本年年份以及本年一月一日是星期几,输出整年日历。

#include<iostream>
#include<string>
void tableForm(int n);
int judgeDate(int n);
using namespace std;
void MakeTable(int data,int month,int days);
int isLeapYear(int year);
int judgeDatee(int dataa,int month,int IsLeapyear);
string table[] ={"喵","","    ","        ","            ","                ","                    ","                        "};
int Leap[13][3]={{0,0,0},{0,31,31},{0,29,28},{0,31,31},{0,30,30},{0,31,31},{0,30,30},{0,31,31},{0,31,31},{0,30,30},{0,31,31},{0,30,30},{0,31,31}};
int main()
{
	int year,data,datee;
	cout<<"请输入一个四位数年份:"<<endl;
	cin>>year;
	cout<<"请输入该年元旦为星期几"<<endl;
	cin>>data;
	cout<<"***********"<<year<<"***********"<<endl;
	for(int i = 1;i<=12;i++)
	{
	if(i==1)
		{
		MakeTable(data,i,Leap[i][isLeapYear(year)]);
		datee = judgeDatee(data,i,isLeapYear(year));
		}
	else 
		{
		MakeTable(datee,i,Leap[i][isLeapYear(year)]);
		datee=judgeDatee(datee,i,isLeapYear(year));
		}
	}
	return 0;
}
void tableForm(int m)
{
	cout<<endl<<"-----------"<<m<<" 月 ----------"<<endl;
	cout<<"七  一  二  三  四  五  六"<<endl<<endl;
}
int judgeDate(int n)
{
	if(n==7)
		return 1;
	else if(n==1)
		return 2;
	else if(n==2)
		return 3;
	else if(n==3)
		return 4;
	else if(n==4)
		return 5;
	else if(n==5)
		return 6;
	else if(n==6)
		return 7;
	else cout<<"Wrong Answer\n";
}
void MakeTable(int data,int month,int days)
{
	tableForm(month);
	cout<<table[judgeDate(data)];
	int temp;
	if(data==7){
		temp=8;
		data=0;
	}
	else temp=8-data;
	for(int i=1;i<=days;i++)
	{
		if(i<=7)
		{
			if(i==7-data)
			cout<<" "<<i<<endl <<endl;
			else 
				cout<<" "<<i<<"  ";
		}
		else
		{
			if((i-temp)==6)
			{
				if(i==8||i==9)
				{
					temp+=7;
					cout<<" "<<i<<endl <<endl; 
				}
				else{
			temp+=7;
			cout<<""<<i<<endl <<endl; 
				}

			}
			else {
				if(i==8||i==9)
				{
				cout<<" "<<i<<"  ";
				}
				else cout<<i<<"  ";
			}
		}
	}
}
int isLeapYear(int year)
{
    if (year % 4  == 0 && year % 100 != 0  || year % 400 == 0)  
        return 1;  
    else  
        return 2;  
}
int judgeDatee(int dataa,int month,int IsLeapyear)
{
	int tem = dataa+Leap[month][IsLeapyear]%7;
	if(tem>7)
		return tem-7;
	else if(tem == 0)
		return 7;
	else return tem;
}

我历时两天断断续续写了出来这个程序,源于课本的课后题作业,有需要的同学可以参考一下。 另外我写的这个没有注释,有不懂的地方可以QQ问我。
效果:

请输入一个四位数年份:
2017
请输入该年元旦为星期几
7
***********2017***********

-----------1 月 ----------
七  一  二  三  四  五  六

 1   2   3   4   5   6   7

 8   9  10  11  12  13  14

15  16  17  18  19  20  21

22  23  24  25  26  27  28

29  30  31
-----------2 月 ----------
七  一  二  三  四  五  六

             1   2   3   4

 5   6   7   8   9  10  11

12  13  14  15  16  17  18

19  20  21  22  23  24  25

26  27  28
-----------3 月 ----------
七  一  二  三  四  五  六

             1   2   3   4

 5   6   7   8   9  10  11

12  13  14  15  16  17  18

19  20  21  22  23  24  25

26  27  28  29  30  31
-----------4 月 ----------
七  一  二  三  四  五  六

                         1

 2   3   4   5   6   7   8

 9  10  11  12  13  14  15

16  17  18  19  20  21  22

23  24  25  26  27  28  29

30
-----------5 月 ----------
七  一  二  三  四  五  六

     1   2   3   4   5   6

 7   8   9  10  11  12  13

14  15  16  17  18  19  20

21  22  23  24  25  26  27

28  29  30  31
-----------6 月 ----------
七  一  二  三  四  五  六

                 1   2   3

 4   5   6   7   8   9  10

11  12  13  14  15  16  17

18  19  20  21  22  23  24

25  26  27  28  29  30
-----------7 月 ----------
七  一  二  三  四  五  六

                         1

 2   3   4   5   6   7   8

 9  10  11  12  13  14  15

16  17  18  19  20  21  22

23  24  25  26  27  28  29

30  31
-----------8 月 ----------
七  一  二  三  四  五  六

         1   2   3   4   5

 6   7   8   9  10  11  12

13  14  15  16  17  18  19

20  21  22  23  24  25  26

27  28  29  30  31
-----------9 月 ----------
七  一  二  三  四  五  六

                     1   2

 3   4   5   6   7   8   9

10  11  12  13  14  15  16

17  18  19  20  21  22  23

24  25  26  27  28  29  30


-----------10 月 ----------
七  一  二  三  四  五  六

 1   2   3   4   5   6   7

 8   9  10  11  12  13  14

15  16  17  18  19  20  21

22  23  24  25  26  27  28

29  30  31
-----------11 月 ----------
七  一  二  三  四  五  六

             1   2   3   4

 5   6   7   8   9  10  11

12  13  14  15  16  17  18

19  20  21  22  23  24  25

26  27  28  29  30
-----------12 月 ----------
七  一  二  三  四  五  六

                     1   2

 3   4   5   6   7   8   9

10  11  12  13  14  15  16

17  18  19  20  21  22  23

24  25  26  27  28  29  30

31  

2 条评论

  1. 窃窃私语

    不错。寒假要学算法==。有个蓝桥杯。

  2. 企业培训

    现在学C++的不多了额,大多数学PHP