将兩個月曆并排列印
如果你可以獨立完成,那說明你對程式設計已經有了一定的控制能力了
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
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
60
61
62
63
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
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
90
{ dt1 = tmpdt; }
91
92
{ dt2 = tmpdt; }
93
94
95
//交換單偶月
96
97
98
while (tmpMonth1 == dt1.Month || tmpMonth2 == dt2.Month);//單月和偶月都結束
99
100
101
102
103
104
105
106
107
108
109
110
111
本文轉自shyleoking 51CTO部落格,原文連結:http://blog.51cto.com/shyleoking/806890