using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;namespace ConsoleApplication8
{
    class Program
    {
        static void Main(string[] args)
        {
            Console.WriteLine("*******");
            Console.Write("\n year");
            int year = int.Parse(Console.ReadLine());
            Console.Write("\n month");
            int month = int.Parse(Console.ReadLine());
            int days = 0;
            Boolean isRn;
            if   ( (year %4 == 0 && year%100 != 0) || (year%400 == 0))
            {
                isRn = true;
            }
            else { isRn = false; }
            int totaldays = 0;
            for (int i = 1900; i <year; i++)
            {
                if (year % 4 == 0 && !(year % 100 == 0) || year % 400 == 0)
                {
                    totaldays = totaldays + 366;                }
                else { totaldays = totaldays + 365; }
            }
            int beforedays = 0;
            for (int i = 1; i <= month; i++) { 
            switch (i){
                    case 1:
                    case 3:
                    case 5:
                    case 7:
                    case 8:
                    case 10:
                    case 12:
                   days=31;
                  break;
                    case 2:
                    if(isRn)
                    {
                    
                       days=29;                    
                    
                    }
                    else {days=28;}
                    break;
                default:
                    days=30;
                    break;
            }
            if (i < month) {
                beforedays = beforedays + days;
            
            
            }
            }
            totaldays = totaldays + beforedays;
            int firsdayofmonth; //存储当月第一天是星期几,周日是0,周一到周六1-6
            int temp = 1+totaldays % 7;            if (temp == 7)
            {
                firsdayofmonth = 0;
            }
            else { firsdayofmonth = temp; }            Console.WriteLine("星期日\t星期一\t星期二\t星期3\t星期4\t星期5\t星期6");
            for (int nullno = 0; nullno < firsdayofmonth; nullno++) {                Console.Write("\t");
            
            
            
            }
            for (int i = 1; i <= days; i++) {
                Console.Write(i + "\t");
                if ((totaldays + i -1) % 7 == 5) //当天为周六换行输出
               {                    Console.WriteLine();
                
                
                }                                        }
            }
        }
    }

解决方案 »

  1.   

    http://wenku.baidu.com/view/9293a103b52acfc789ebc952.html 百度文库的地址,有注释
      

  2.   

       if ((totaldays + i -1) % 7 == 5) //当天为周六换行输出
    为什么这样写看不懂。
      

  3.   

     Console.Write("\n year");
                int year = int.Parse(Console.ReadLine());
                Console.Write("\n month");
                int month = int.Parse(Console.ReadLine());
    不是数字字符能转为int ?所以for只一次1900
      

  4.   

      Console.WriteLine("*******");
                    Console.Write("\n year");
                    int year = int.Parse(Console.ReadLine());
                    Console.Write("\n month");
                    int month = int.Parse(Console.ReadLine());                var dateTime = new DateTime(year, month, 1);
                    Console.WriteLine("星期日\t星期一\t星期二\t星期三\t星期四\t星期五\t星期六");
                    var week = (int)dateTime.DayOfWeek;
                    for (int nullno = 0; nullno < week; nullno++)
                    {  
                        Console.Write("\t");
                    }
                    for (int i = week; i < (dateTime.AddMonths(1)-dateTime).Days+week; i++)
                    {
                        Console.Write((i-week+1) + "\t");
                        if ( i% 7 == 6) 
                        {
                            Console.WriteLine();
                        }
                    }
      

  5.   

     你输出year 看是什么?
      

  6.   


            static void Main(string[] args)
            {
                Console.WriteLine("*******");
                Console.Write("\n year");
                int year = int.Parse(Console.ReadLine());
                Console.Write("\n month");
                int month = int.Parse(Console.ReadLine());            DateTime dt = new DateTime(year, month, 1);                                   int firsdayofmonth; //存储当月第一天是星期几,周日是0,周一到周六1-6
                firsdayofmonth = (int)dt.DayOfWeek;            int days = (dt.AddMonths(1) - dt).Days;            Console.WriteLine("星期日\t星期一\t星期二\t星期3\t星期4\t星期5\t星期6");            for (int nullno = 0; nullno < firsdayofmonth; nullno++)
                {
                    Console.Write("\t");
                }
                for (int i = 1; i <= days; i++)
                {
                    Console.Write(i + "\t");
                    if (i % 7 == 5) //当天为周六换行输出
                    {
                        Console.WriteLine();
                    }
                }
            }
      

  7.   

      DateTime dt = new DateTime(year, month, 1); //解释下。
           firsdayofmonth = (int)dt.DayOfWeek; // 这个月第一天是星期几?
           int days = (dt.AddMonths(1) - dt).Days; //解释下。
      

  8.   

    new DateTime(year, month, 1); 
    这个月的第一天firsdayofmonth = (int)dt.DayOfWeek;
    这天是星期几int days = (dt.AddMonths(1) - dt).Days;
    这个月一共有多少天
      

  9.   

    谢谢,关键语句能解释下吗?
     var dateTime = new DateTime(year, month, 1);
      for (int i = week; i < (dateTime.AddMonths(1)-dateTime).Days+week; i++)
                    {
                        Console.Write((i-week+1) + "\t");
                        if ( i% 7 == 6) 
                        {
                            Console.WriteLine();
                        }
                    }
      

  10.   

    (dt.AddMonths(1) - dt).Days 是什么意思,这个dt.AddMonths(1)是加一天,那么 - dt.day是什么意思,麻烦说下,对C#的DATATIME,用的不太多。
      

  11.   


    for (int i = 1; i <= days; i++)
                    {
                        Console.Write(i + "\t");
                        if ((i + firsdayofmonth - 1) % 7 == 6) //当天为周六换行输出
                        {
                            Console.WriteLine();
                        }
                    }
      

  12.   

    dt.AddMonths
      

  13.   

    这个+firsdayofmonth - 1有点不太懂大神说的详细点吧,还有
    int days = (dt.AddMonths(1) - dt).Days;  (dt.AddMonths(1) - dt).Days;看的不太懂。麻烦说下,谢谢!
    这个月一共有多少天