接收用户输入的年月(1990年以后),在控制台中输出当月日历。

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace ConsoleApplication1
{
    class Program
    {
        static void Main(string[] args)
        {
            //接收用户输入的年月(1990年以后),在控制台中输出当月日历。
            int year, month;//定义变量年和月
            List<string> s = new List<string>();//定义集合用来保存星期几
            int yearofDays = 0;//年的天数
            int monthofDays = 0;//月的天数
            //判断用户输入是否正确
            while (true)
            {
                #region 判断用户输入的日期是否符合要求
                while (true)
                {
                    Console.Write("请输入年份(1990):");
                    year = int.Parse(Console.ReadLine());
                    if (year < 1990)
                    {
                        Console.WriteLine("年份错误,请按回车键继续!");
                        Console.ReadLine();//鼠标等待输入
                        Console.Clear();//清除屏幕
                    }
                    else
                    {
                        Console.Write("请输入月份(1-12):");
                        month = int.Parse(Console.ReadLine());
                        if (month <= 0 || month > 12)
                        {
                            Console.WriteLine("月份错误,请按回车继续!");
                            Console.ReadLine();
                            Console.Clear();
                        }
                        else
                        {
                            break;//输入年月都正确,则保存变量并结束循环
                        }
                    }
                }
                #endregion

                #region 1990年到year-1年总共的天数
                for (int i = 1990; i < year; i++)//计算平年还是闰年
                {
                    //闰年一年有多少天
                    if (i % 4 == 0 && i % 100 != 0 || i % 400 == 0)
                    {
                        yearofDays += 366;
                    }
                    //平年一年有多少天
                    else
                    {
                        yearofDays += 365;
                    }
                }
                #endregion

                #region year年1月到month-1月总共的天数
                for (int j = 1; j < month; j++)
                {
                    //二月的天数
                    if (j == 2)//判断是否为闰年的二月
                    {
                        //平年的二月
                        if (year % 4 == 0 && year % 100 != 0 || year % 400 == 0)
                        {
                            monthofDays += 29;
                        }
                        //闰年的二月
                        else
                        {
                            monthofDays += 28;
                        }
                    }
                    //大月的天数
                    else if (j == 1 || j == 3 || j == 5 || j == 7 || j == 8 || j == 10 || j == 12)
                    {
                        monthofDays += 31;
                    }
                    //小月的天数
                    else
                    {
                        monthofDays += 30;
                    }
                }
                #endregion

                #region  输出星期前面的空格
                int AllDays = yearofDays + monthofDays;//经过的总天数
                int dayofWeek = AllDays % 7 + 1;//到这个月1号是星期几
                int space = dayofWeek - 1;//1号前面的空格数量
                for (int k = 0; k < space; k++)
                {
                    s.Add("");//循环输出1号前面的空格
                }
                int days = 0;//定义month整个月多少天
                #region 计算月份对应的天数
                if (month == 2)
                {
                    if (year % 4 == 0 && year % 100 != 0 || year % 400 == 0)
                    {
                        days = 29;
                    }
                    else
                    {
                        days = 28;
                    }
                }
                else if (month <= 7 && month % 2 != 0 || month > 7 && month % 2 == 0)
                {
                    days = 31;
                }
                else
                {
                    days = 30;
                }
                #endregion
                //將天数添加到集合
                for (int y = 1; y <= days; y++)
                {
                    s.Add(y.ToString());//将整型数据添加到集合中
                }

                #endregion

                #region 输出天数对应是星期几
                Console.WriteLine("*****************************************************");
                Console.Write("一\t二\t三\t四\t五\t六\t七");

                //循环输出日历
                for (int m = 0; m < s.Count; m++)
                {
                    if (m % 7 == 0)//判断当前日期是否需要换行
                    {
                        Console.WriteLine();
                    }
                    Console.Write(s[m] + "\t");//在每天的日期与日期之间加上空格
                }
                Console.WriteLine();
                Console.WriteLine("******************************************************");
                Console.WriteLine("请按回车键继续");
                Console.ReadLine();
                Console.Clear();
                #endregion
            }

        }
    }
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值