C#实现控制台打印年历
1 using System; 2 using System.Collections.Generic; 3 using System.Linq; 4 using System.Text; 5 using System.Threading.Tasks; 6 7 namespace test2._17 8 { 9 internal class Program 10 { 11 #region C#实现控制台打印年历 12 /** 13 * 1.在控制台中实现年历的方法 14 * 调用12遍历实现月历 15 * 2.在控制台中实现阅历的方法 16 * 显示表头 Console.WriteLine("日\t一\t二...") 17 * 计算当月一日星期数,输出空白(\t) 18 * Console.WriteLine(\t); 19 * 计算当月天数,输出1\t2\t... 20 * 每逢6换行 21 * 3.根据年月日,计算星期数 22 * 4.计算指定月份的天数 23 * 5.判断闰年的方法: 24 * 2月闰年29天 平年28天 25 * 年份能被4整除但是不能被100整除 26 * 年份被400整除 27 */ 28 29 ///<summary> 30 ///根据年月日,计算星期数的方法 31 /// </summary> 32 /// <param name="year">年</param> 33 /// <param name="month">月</param> 34 /// <param name="day">天</param> 35 private static int GetWeekByDay(int year,int month,int day) 36 { 37 DateTime dt = new DateTime(year,month,day); 38 return (int)dt.DayOfWeek; 39 } 40 /// <summary> 41 /// 判断闰年 42 /// </summary> 43 /// <param name="year">月</param> 44 private static bool IsLeapYear( int year) 45 { 46 return(year % 4 == 0 && year % 100 != 0 || year % 400 == 0); 47 } 48 /// <summary> 49 /// 获取一个月的天数 50 /// </summary> 51 /// <param name="year">年</param> 52 /// <param name="month">月</param> 53 /// <returns></returns> 54 private static int GetDayByMonth( int year,int month) 55 { 56 if (month < 1 || month > 12) return 0; 57 switch (month) 58 { 59 case 2: 60 /*if (IsLeapYear(year)) 61 return 29; 62 else 63 return 28;*/ 64 return IsLeapYear(year) ? 29 : 28; 65 case 4: 66 case 6: 67 case 9: 68 case 11: 69 return 30; 70 default: 71 return 31; 72 73 } 74 } 75 /// <summary> 76 /// 输出月历 77 /// </summary> 78 /// <param name="year">年</param> 79 /// <param name="month">月</param> 80 81 private static void PrintMonthCalendar(int year, int month) 82 { 83 //1.显示表头 84 Console.WriteLine("{0}年{1}月", year, month); 85 Console.WriteLine("日\t一\t二\t三\t四\t五\t六"); 86 //2.计算每个月的1号是星期几 87 int week = GetWeekByDay(year, month, 1); 88 for(int i=0; i<week; i++) 89 Console.Write("\t"); 90 91 //3.根据当月总天数,显示日 92 int days=GetDayByMonth(year, month); 93 for(int i = 1; i <= days; i++) 94 { 95 Console.Write(i+"\t"); 96 //4.逢六换行 97 if (GetWeekByDay(year, month, i) == 6) 98 Console.WriteLine(); 99 } 100 } 101 private static void PrintYearCalendar(int year) 102 { 103 for(int i=1; i<=12; i++) 104 { 105 PrintMonthCalendar(year, i); 106 Console.WriteLine(); 107 } 108 } 109 #endregion 110 111 static void Main() 112 { 113 Console.WriteLine("请输入年份:"); 114 int year = int.Parse(Console.ReadLine()); 115 PrintYearCalendar(year); 116 } 117 } 118 }
我一直想从你的窗户里看月亮。
浙公网安备 33010602011771号