将两个月历并排打印
如果你可以独立完成,那说明你对编程已经有了一定的控制能力了
如果你可以独立完成,那说明你对编程已经有了一定的控制能力了
1
public static void Main(string[] args)
2
{
3![]()
4![]()
5
System.DateTime dt1 = new System.DateTime(2004, 1, 1);
6
System.DateTime dt2 = new System.DateTime(2004, 2, 1);
7
System.DateTime tmpdt;
8
int tmpMonth1;//记录当前要操作的单月
9
int tmpMonth2;//记录当前要操作的偶月
10
int change = 0;//0为单月,1为偶月
11
char[] weekChar = "日一二三四五六".ToCharArray();
12![]()
13
//输出标题,每个标题之间空2个间隔,每个月之间空4个间隔
14
for (int j = 0; j <= 1; j++)
15
{
16
for (int i = 0; i <= weekChar.Length - 1; i++)
17
{
18
System.Console.Write("{0} ", weekChar[i]);
19
}
20
System.Console.Write(" ");
21
}
22
System.Console.WriteLine();
23
tmpMonth1 = dt1.Month; tmpMonth2 = dt2.Month;
24
tmpdt = dt1;//将要打印的月交给打印控制
25![]()
26
do//控制月
27
{
28
//定位每月的第一个打印位置(跳出需要打印月的不要打印)
29
if (tmpdt.Day == 1)
30
{//如果是当前控制月的第一天,先需要打印定位
31
if (tmpMonth1 == dt1.Month && tmpMonth2 == dt2.Month)
32
{
33
for (int i = 0; i <= (int)tmpdt.DayOfWeek - 1; i++)
34
{
35
System.Console.Write("{0}{1}", " ", " ");
36
}
37
}
38
else//不是本月就不要打了
39
{
40
System.Console.Write("");
41
}
42
}
43![]()
44
//打印每一天
45
if (tmpdt.Day < 10)//如果日期<10,在前面多打一个空格
46
{//正常情况正常打印
47
if (tmpMonth1 == dt1.Month && tmpMonth2 == dt2.Month)
48
{
49
System.Console.Write(" {0} ", tmpdt.Day);
50
}
51
else
52
{//否则不打印日期,只打印一个占位间隔
53
if (change == 0 && tmpMonth1 != dt1.Month)
54
{
55
System.Console.Write(" {0} ", " ");
56
}
57
if (change == 1 && tmpMonth2 != dt2.Month)
58
{
59
System.Console.Write(" {0} ", " ");
60
}
61
}
62
}
63
else
64
{
65
System.Console.Write("{0} ", tmpdt.Day);
66
}
67![]()
68
//处理周六的情况
69
if (tmpdt.DayOfWeek == System.DayOfWeek.Saturday)
70
{//打印周六后是打印月间隔(单月)还是换行(偶月),同时收回打印控制
71![]()
72
if (change == 0)
73
{//单月
74
dt1 = tmpdt.AddDays(1);
75
System.Console.Write(" ");//月间隔
76
tmpdt = dt2;//交换控制
77
}
78
else
79
{//双月
80
dt2 = tmpdt.AddDays(1);
81
System.Console.WriteLine("");//换行
82
tmpdt = dt1;//交换控制
83
}
84
change = 1 - change;//切换标志
85
}
86
else//仅仅转到下一天
87
{
88
tmpdt = tmpdt.AddDays(1);
89
if (change == 0)
90
{ dt1 = tmpdt; }
91
else
92
{ dt2 = tmpdt; }
93
}
94![]()
95
//交换单偶月
96![]()
97
}
98
while (tmpMonth1 == dt1.Month || tmpMonth2 == dt2.Month);//单月和偶月都结束
99![]()
100
System.Console.WriteLine();
101![]()
102![]()
103![]()
104![]()
105![]()
106![]()
107![]()
108![]()
109![]()
110![]()
111
}
public static void Main(string[] args)2
{3

4

5
System.DateTime dt1 = new System.DateTime(2004, 1, 1);6
System.DateTime dt2 = new System.DateTime(2004, 2, 1);7
System.DateTime tmpdt;8
int tmpMonth1;//记录当前要操作的单月9
int tmpMonth2;//记录当前要操作的偶月10
int change = 0;//0为单月,1为偶月11
char[] weekChar = "日一二三四五六".ToCharArray();12

13
//输出标题,每个标题之间空2个间隔,每个月之间空4个间隔14
for (int j = 0; j <= 1; j++)15
{16
for (int i = 0; i <= weekChar.Length - 1; i++)17
{18
System.Console.Write("{0} ", weekChar[i]);19
}20
System.Console.Write(" ");21
}22
System.Console.WriteLine();23
tmpMonth1 = dt1.Month; tmpMonth2 = dt2.Month;24
tmpdt = dt1;//将要打印的月交给打印控制25

26
do//控制月27
{28
//定位每月的第一个打印位置(跳出需要打印月的不要打印)29
if (tmpdt.Day == 1)30
{//如果是当前控制月的第一天,先需要打印定位31
if (tmpMonth1 == dt1.Month && tmpMonth2 == dt2.Month)32
{33
for (int i = 0; i <= (int)tmpdt.DayOfWeek - 1; i++)34
{35
System.Console.Write("{0}{1}", " ", " ");36
}37
}38
else//不是本月就不要打了39
{40
System.Console.Write("");41
}42
}43

44
//打印每一天45
if (tmpdt.Day < 10)//如果日期<10,在前面多打一个空格46
{//正常情况正常打印47
if (tmpMonth1 == dt1.Month && tmpMonth2 == dt2.Month)48
{49
System.Console.Write(" {0} ", tmpdt.Day);50
}51
else52
{//否则不打印日期,只打印一个占位间隔53
if (change == 0 && tmpMonth1 != dt1.Month)54
{55
System.Console.Write(" {0} ", " ");56
}57
if (change == 1 && tmpMonth2 != dt2.Month)58
{59
System.Console.Write(" {0} ", " ");60
}61
}62
}63
else64
{65
System.Console.Write("{0} ", tmpdt.Day);66
}67

68
//处理周六的情况69
if (tmpdt.DayOfWeek == System.DayOfWeek.Saturday)70
{//打印周六后是打印月间隔(单月)还是换行(偶月),同时收回打印控制71

72
if (change == 0)73
{//单月74
dt1 = tmpdt.AddDays(1);75
System.Console.Write(" ");//月间隔76
tmpdt = dt2;//交换控制77
}78
else79
{//双月80
dt2 = tmpdt.AddDays(1);81
System.Console.WriteLine("");//换行82
tmpdt = dt1;//交换控制83
}84
change = 1 - change;//切换标志85
}86
else//仅仅转到下一天87
{88
tmpdt = tmpdt.AddDays(1);89
if (change == 0)90
{ dt1 = tmpdt; }91
else92
{ dt2 = tmpdt; }93
}94

95
//交换单偶月96

97
}98
while (tmpMonth1 == dt1.Month || tmpMonth2 == dt2.Month);//单月和偶月都结束99

100
System.Console.WriteLine();101

102

103

104

105

106

107

108

109

110

111
}

浙公网安备 33010602011771号