• 万年历算法


            //万年历输入年份月份查找当月的日历
                #region
    
                Console.WriteLine("==========================Max Jiang的万年历=========================
    ");
    
                int[] daysArr = new int[12] { 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31 };
    
                Console.Write("请输入 1900 至 2099 年之间的年份:");
                int inputYear = Convert.ToInt32(Console.ReadLine());
    
                Console.Write("请输入查询的月份:");
                int inputMonth = Convert.ToInt32(Console.ReadLine());
    
                int yearDays = 0;
                for (int year = 1900; year <= inputYear - 1; year++)
                {
                    if ((year % 4 == 0 && year % 100 != 0) || year % 400 == 0)
                    {
                        yearDays += 366;
                    }
                    else
                    {
                        yearDays += 365;
                    }
                }
                //Console.WriteLine(yearDays);
                int monthDays = 0;
                Console.WriteLine("---------------------第" + inputYear + "年------------第" + inputMonth + "月份--------------------
    ");
                for (int month = 0; month < inputMonth - 1; month++)
                {
                    if ((inputYear % 4 == 0 && inputYear % 100 != 0) || inputYear % 400 == 0)
                    {
                        daysArr[1] = 29;
                        monthDays += daysArr[month];
                    }
                    else
                    {
                        daysArr[1] = 28;
                        monthDays += daysArr[month];
                    }
                }
                //Console.Write(monthDays);
                yearDays += monthDays;  //计算出输入的前一月的天数总和
    
                ////这是将知道的每月的第一天星期几,放在相对应的周几
    
                int dayOfWeek = yearDays % 7 + 1;   //通过总天数计算周数,加1为了计算下一月的第一天星期几
                //Console.WriteLine("本月第一天是星期" + dayOfWeek);
                int[,] weeks = new int[(daysArr[inputMonth - 1] / 7) + 1, 7];//二位数组,加载周
    
    
                Console.WriteLine("星期一	星期二	星期三	星期四	星期五	星期六	星期日	");
                int cols = 0;
                int m = 1;
                switch (dayOfWeek)
                {
                    case 1: cols = 0; break;
                    case 2: cols = 1; break;
                    case 3: cols = 2; break;
                    case 4: cols = 3; break;
                    case 5: cols = 4; break;//通过列cols承载星期几
                    case 6: cols = 5; break;
                    case 7: cols = 6; break;
                    default: break;
                }
                for (int row = 0; row < (daysArr[inputMonth - 1] / 7) + 1; row++)
                {
                    if (cols != 0)
                    {
                        for (int i = 0; i < cols; i++)
                        {
                            weeks[row, i] = 0;//如果新月份的第一天不是星期一,用空填充星期
                            Console.Write("	");
                        }
                    }
                    for (; cols < 7; cols++)//通过cols给每一列赋值,也就是天数
                    {
                        if (m <= daysArr[inputMonth - 1])//小于没月份的天数
                        {
                            weeks[row, cols] = m;
                            Console.Write("" + m + "	");
                            ++m;
                        }
                    }
                    cols = 0;//循环给零,不能放上面,因为就不能循环为零
                    Console.WriteLine();
                }
    
                #endregion

    自己没事瞎写的,有想法请评论。

  • 相关阅读:
    python中list添加元素的方法append()、extend()和insert()
    Python中的短路计算
    Python文件的读写
    Python匿名函数
    Python中的引用传参
    持续学习大纲
    【Mysql】Datetime和Timestamp区别,及mysql中各种时间的使用
    【JDK源码】 ☞ HashMap源码分析及面试汇总
    算法复杂度实例 -- O(1) O(n) O(logN) O(NlogN)
    Solr使用总结
  • 原文地址:https://www.cnblogs.com/DjangoBlogs/p/7822557.html
Copyright © 2020-2023  润新知