欢迎来到萧静默的博客

勤为径,学海无涯苦作舟。书山有路

计算周几的程序(基姆拉尔森公式)

复制代码
using System;

namespace HELLO
{
    class Program
    {
        int week;
        int y, m, d;
        static void Main(string[] args)
        {
            int y, m, d;
            Console.WriteLine("请输入年月日");
            Console.WriteLine("现在请输入年份");
            y = int.Parse(Console.ReadLine());
            Console.WriteLine("现在请输入月份");
            m = int.Parse(Console.ReadLine());
            Console.WriteLine("现在请输入日期");
            d = int.Parse(Console.ReadLine());
            Console.WriteLine("您输入的年月日为" + y + m + d);
            Program program = new Program();
          
            int week1 = program.WEEKS(d,m,y);
            if (week1 == 1)
            {
                Console.WriteLine("周一");
            }
            else if (week1 == 2)
            {
                Console.WriteLine("周二");
            }
            else if (week1 == 3)
            {
                Console.WriteLine("周三");
            }
            else if (week1 == 4)
            {
                Console.WriteLine("周四");
            }
            else if (week1 == 5)
            {
                Console.WriteLine("周五");
            }
            else if (week1 == 6)
            {
                Console.WriteLine("周六");
            }
            else if (week1 == 7)
            {
                Console.WriteLine("周七");
            }
            else
            {
                Console.WriteLine("什么乱七八糟的");
            }
            int week;
            //改良版的基姆拉尔森公式在计算1月和2月就完美了
            if (m == 1 | m == 2)
            {
                m += 12;
                y--;
            }
            week = (d + 2 * m + 3 * (m + 1) / 5 + y + y / 4 - y / 100 + y / 400 + 1) % 7;
            if (week == 1)
            {
                Console.WriteLine("周一");
            }
            else if (week == 2)
            {
                Console.WriteLine("周二");
            }
            else if (week == 3)
            {
                Console.WriteLine("周三");
            }
            else if (week == 4)
            {
                Console.WriteLine("周四");
            }
            else if (week == 5)
            {
                Console.WriteLine("周五");
            }
            else if (week == 6)
            {
                Console.WriteLine("周六");
            }
            else if (week == 7)
            {
                Console.WriteLine("周七");
            }
            else
            {
                Console.WriteLine("什么乱七八糟的");
            }
        }
        /// <summary>
        /// 用来输入年月日计算周几
        /// </summary>
        /// <param name="d">日期</param>
        /// <param name="m">月份</param>
        /// <param name="y">年份</param>
        /// <returns></returns>
        int WEEKS(int d, int m, int y) {
            //单独的基姆拉尔森公式在计算1月和二月有缺陷
            week = (d + 2 * m + 3 * (m + 1) / 5 + y + y / 4 - y / 100 + y / 400 + 1) % 7;
            return ( week);
        }
    }

}
复制代码

 

 

 

posted @   萧静默  阅读(706)  评论(2编辑  收藏  举报
编辑推荐:
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
阅读排行:
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· C#/.NET/.NET Core优秀项目和框架2025年2月简报
· 葡萄城 AI 搜索升级:DeepSeek 加持,客户体验更智能
· 什么是nginx的强缓存和协商缓存
· 一文读懂知识蒸馏
点击右上角即可分享
微信分享提示