日期:2014-05-20 浏览次数:21094 次
SU MO TU WE TH FR SA
         01 02 03 04
05 06 07 08 09 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace ConsoleApplication1
{
    class Program
    {
        static void Main(string[] args)
        {
            string calendar = "";
            // 在这里编写代码
            Console.WriteLine(calendar);
        }
    }
}
            string calendar = "";
            // 在这里编写代码
            DateTime now = DateTime.Today;
            DateTime dt1 = new DateTime(now.Year, now.Month, 1);
            DateTime dt2 = dt1.AddMonths(1).AddDays(-1);
            StringBuilder sb = new StringBuilder();
            for (int i = (int)DayOfWeek.Sunday; i <= (int)DayOfWeek.Saturday; i++)
            {
                sb.Append(((DayOfWeek)i).ToString().Substring(0, 2).ToUpper() + " ");
            }
            for (DateTime dt = dt1.AddDays(-(int)now.DayOfWeek); dt <= dt2; dt = dt.AddDays(1))
            {
                if (dt.Month < now.Month)
                    sb.Append("   ");
                else
                    sb.Append(dt.Day.ToString().PadLeft(2, '0') + " ");
                if (dt.DayOfWeek == DayOfWeek.Saturday)
                    sb.AppendLine();
            }
            calendar = sb.ToString();
            Console.WriteLine(calendar);
------解决方案--------------------
方法笨点。。
  string calendar = "";
            // 在这里编写代码
            DateTime date = DateTime.Now;
            DateTime firstDay = new DateTime(date.Year, date.Month, 1);
            int daysCount = DateTime.DaysInMonth(date.Year, date.Month);
            int weekOfFirstDay = Convert.ToInt32(firstDay.DayOfWeek);
            calendar = "\tSU\tMO\tTU\tWE\tTH\tFR\tSA\n";
            for (int i = 1; i < daysCount + 1; i++)
            {
                if (i == 1)
                {
                    for (int j = 0; j < weekOfFirstDay; j++)
                    {
                        calendar += "\t";
                    }
                }
                string str = i < 10 ? i.ToString().PadLeft(2, '0') : i.ToString();
                calendar += "\t" + str;
                if ((i + weekOfFirstDay) % 7 == 0)
                {
                    calendar += "\n";
                }
            }
            Console.WriteLine(calendar);
            Console.ReadLine();
------解决方案--------------------
拿出手机,调出日历,照着画
Console.WriteLine("SU MO TU WE TH FR SA");
Console.WriteLine("         01 02 03 04");
Console.WriteLine("05 06 07 08 09 10 11");
Console.WriteLine("12 13 14 15 16 17 18");
Console.WriteLine("19 20 21 22 23 24 25");
Console.WriteLine("26 27 28 29 30      ");
临走别忘记淡定的说句,"这公司太弱了,出这么简单的题目,老子来了一次不想来第二次了"
------解决方案--------------------
动动手,写个:
static void GenerateCalendar(int year, int month)
{
    var num = 7;
    var cols = Enumerable.Range(0, num).ToArray();
    var row = Enumerable.Range(0, num).Select(x => "__").ToArray();
    var begin = new DateTime(year, month, 1);
    var end = begin.AddDays(DateTime.DaysInMonth(year, month) - 1);
    while (begin.Month == end.Month && begin.Day <= end.Day)
    {
        row[(int)begin.DayOfWeek] = begin.Day.ToString("00");
        if ((int)begin.DayOfWeek == cols[cols.Length-1])
        {
            Console.WriteLine(string.Join(" ", row));
            row = Enumerable.Range(0, num).Select(x => "__").ToArray();
        }
        begin = begin.AddDays(1);
    }
    Console.WriteLine(string.Join(" ", row));
}