C#顺序万年历自写的求余函数与周位移算法

cs 复制代码
        static int 返回月的天数(int 年, int 月)
        {
            return (月 == 2 ?
                (((年 % 4 == 0 && 年 % 100 > 0) || 年 % 400 == 0) ? 29 : 28) :
                (((月 <= 7 && 月 % 2 > 0) || (月 > 7 && 月 % 2 == 0)) ? 31 : 30));
        }
        static int 返回年总天数(int 年, int 标 = 0)
        {//跳过标年之前,包含标年,因标年1月1日是周1。
            return ((年 -= (标 > 0 ? --标 : 标)) > 0 ? 365 * 年 + ((年 / 4) - (年 / 100) + (年 / 400)) : 0);
        }
        static int 求余(int 数, int 模)
        {
            return (数 - 数 / 模 * 模);
        }
        static void 顺序万年历(int 年, int 月)
        {//计算本年之前的总天数+本月的前月累计+本月1号
            int 天 = 返回年总天数(年 - 1, 1900) + 1, 周 = 月, 填 = 返回月的天数(年, 月 - 1);
            while (--周 > 0) 天 += 返回月的天数(年, 周);
            周 = 填 - 求余(求余(天, 7) + 6, 7);
            Console.WriteLine("一 二 三 四 五 六 天");
            天 = 0;
            while (天 < 42)
            {
                Console.Write((++周).ToString("00 "));
                if (周 >= 填)
                {
                    周 = 0;//转计算本月天数填
                    填 = 返回月的天数(年, 月); 
                }
                if (求余(++天, 7) == 0) Console.WriteLine();
            }
        }

2020年2月

2020年8月

2020年9月

cs 复制代码
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using 农历引用;//工程引用中添加DLL文件

namespace 控制台
{
    class Program
    {
        static int 返回月的天数(int 年, int 月)
        {
            return (月 == 2 ?
                (((年 % 4 == 0 && 年 % 100 > 0) || 年 % 400 == 0) ? 29 : 28) :
                (((月 <= 7 && 月 % 2 > 0) || (月 > 7 && 月 % 2 == 0)) ? 31 : 30));
        }
        static int 返回年总天数(int 年, int 标 = 0)
        {//跳过标年之前,包含标年,因标年1月1日是周1。
            return ((年 -= (标 > 0 ? --标 : 标)) > 0 ? 365 * 年 + ((年 / 4) - (年 / 100) + (年 / 400)) : 0);
        }
        static int 求余(int 数, int 模)
        {
            return (数 - 数 / 模 * 模);
        }
        static void 顺序万年历(int 年, int 月)
        {//计算本年之前的总天数+本月的前月累计+本月1号
            int 天 = 返回年总天数(年 - 1, 1900) + 1, 周 = 月, 填 = 返回月的天数(年, 月 - 1), 侬 = 月 - 1;
            while (--周 > 0) 天 += 返回月的天数(年, 周);
            周 = 填 - 求余(求余(天, 7) + 6, 7);
            Console.WriteLine(系统农历.月历加载(年, 月, DateTime.Now.Day));
            Console.WriteLine("周一浓 周二浓 周三浓 周四浓 周五浓 周六浓 周天浓");
            天 = 0;
            while (天 < 42)
            {
                Console.Write((++周).ToString("00"));
                Console.Write(系统农历.月历加载(年, 侬, 周).Substring(4, 2) + " ");
                if (周 >= 填)
                {
                    周 = 0;//转计算本月天数填
                    ++侬;
                    填 = 返回月的天数(年, 月); 
                }
                if (求余(++天, 7) == 0) Console.WriteLine();
            }
        }
        static void Main(string[] args)
        {

            顺序万年历(DateTime.Now.Year, DateTime.Now.Month);
            Console.WriteLine(".......按任意键退出");
            Console.ReadKey();
        }
    }
}
cs 复制代码
        private void 窗体绘图(object sender, PaintEventArgs e)
        {
            int 天 = 返回年总天数(DateTime.Now.Year - 1, 1900) + 1, 周 = DateTime.Now.Month, 填 = 返回月的天数(DateTime.Now.Year, DateTime.Now.Month - 1), 侬 = DateTime.Now.Month - 1;
            while (--周 > 0) 天 += 返回月的天数(DateTime.Now.Year, 周);
            周 = 填 - 求余(求余(天, 7) + 6, 7);
            string 输出 = 农历引用.系统农历.月历加载(DateTime.Now.Year, DateTime.Now.Month, DateTime.Now.Day).Substring(0, 6) + "\n周一浓 周二浓 周三浓 周四浓 周五浓 周六浓 周天浓\n";
            天 = 0;
            while (天 < 42)
            {
                输出 += (++周).ToString("00") + 系统农历.月历加载(DateTime.Now.Year, 侬, 周).Substring(4, 2) + " ";
                if (周 >= 填)
                {
                    周 = 0;//转计算本月天数填
                    ++侬;
                    填 = 返回月的天数(DateTime.Now.Year, DateTime.Now.Month);
                }
                if (求余(++天, 7) == 0) 输出 += "\n";
            }
            if (Convert.ToUInt16(this.WindowState) == 2) e.Graphics.DrawString(输出, new Font("隶书", 14), new SolidBrush(Color.Blue), new PointF(4.0F, this.Height / 2));
        }
相关推荐
2301_81074631几秒前
CKA冲刺40天笔记 - day24 Kubernetes Clusterrole 和 Clusterrole Binding
笔记·容器·kubernetes
AI小怪兽几秒前
轻量、实时、高精度!MIE-YOLO:面向精准农业的多尺度杂草检测新框架 | MDPI AgriEngineering 2026
开发语言·人工智能·深度学习·yolo·无人机
码农小韩几秒前
基于Linux的C++学习——循环
linux·c语言·开发语言·c++·算法
CoderCodingNo10 分钟前
【GESP】C++五级/四级练习(双指针/数学) luogu-P1147 连续自然数和
开发语言·c++·算法
IT=>小脑虎11 分钟前
PHP零基础衔接进阶知识点【详解版】
开发语言·学习·php
颜酱13 分钟前
前端算法必备:双指针从入门到很熟练(快慢指针+相向指针+滑动窗口)
前端·后端·算法
Wect17 分钟前
LeetCode 274. H 指数:两种高效解法全解析
算法·typescript
Q741_14717 分钟前
海致星图招聘 数据库内核研发实习生 一轮笔试 总结复盘(2) 作答语言:C/C++ 哈夫曼编码 LRU
c语言·数据库·c++·算法·笔试·哈夫曼编码·哈夫曼树
你怎么知道我是队长20 分钟前
C语言---位域
c语言·开发语言
stars-he23 分钟前
FPGA学习笔记-图书馆存包柜,乒乓球游戏电路设计
笔记·学习·fpga开发