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

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);
        }
    }

}

原文地址:https://www.cnblogs.com/BruceKing/p/11772692.html

时间: 2024-11-06 19:34:37

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

基姆拉尔森公式--计算日期周几

基姆拉尔森公式计算日期周几 #include <iostream> using namespace std; string week[] ={"Mon","tue","Wen","Thu","Fri","Sat","Sun"}; int main(){ int y,m,d; while(cin>>y>>m>>d){ if

万年历计算星期-基姆拉尔森公式

#include /* * 基姆拉尔森计算公式 * W= (d+2*m+3*(m+1)/5+y+y/4-y/100+y/400) mod 7 */ int week(int y, int m, int d) { if (m < 3) { m += 12; y--; } int w = (d + 2 * m + 3 * (m + 1) / 5 + y + y / 4 - y / 100 + y / 400) % 7; return w; } int main() { printf("%d\n

nyoj 219 An problem about date 日期计算 附加最优代码(基姆拉尔森公式)

第一次直接计算的   超时了.后来把天数存贮在数组中 也算过了 不知道这题为什么分类在动态规划里面 #include <stdio.h> int main() { int a[13]={0,31,29,31,30,31,30,31,31,30,31,30,31},year,mon,day; long long b[9605]={0},sum=0; for(int i=1600;i<9600;i++) { if(i%4==0&&i%100||i%400==0) sum+=3

用基姆拉尔森计算公式做一个课表

因为最近上网课,我大部分时间是用电脑上课,课程APP得在手机上打开,我觉得麻烦,就写了一个可以看当天有什么课的程序. 既然要写课表,我们就得创建一个7天循环,并每7天更改一次单双周的判断.这里我用的是基姆拉尔森公式(你不必纠结他的原理,只有能合理的使用就行),用它来获取年月日. 然后我设定了开学的那一天为起始天,每过7天改变单双周课表,这样就完成了啦!. 大概可以实现的功能就是这样,当然也可以用QT再去写一些界面来美化程序,或者用easyX可以,但是代码就是这些了. 写完发现这个根本没什么卵用.

[ C ]根据年月日判断周几(基姆拉尔森计算公式)

基姆拉尔森计算公式 是个好东西啊!那我们在什么时候用呢? 偶尔写程序会用上它,当我们在已知年月日的情况下想要快速的知道这天是周几时,用此公式很方便. 那下面来见见它的容颜: W= (d+2*m+3*(m+1)/5+y+y/4-y/100+y/400) mod 7 个人感觉挺复杂的,不过sei叫它有用呢 具体例子: int W=(d+2*m+3*(m+1)/5+y+y/4-y/100+y/400)%7;    switch(W)    {    case 0: printf("星期一\n"

利用“三角化”计算行列式快速求解程序(验证过很多题目的,绝对准确)

#include<iostream>#include<cmath>using namespace std;void main(){ //输入行列式开始 int n,i,j,a[10][10],T[10],max[10],b[10],k,q,p; float t[10][10],c,sum=-1; cout<<"阶数:"; cin>>n; cout<<"行列式:"<<endl; for(i=1;i

一个简单的计算分数的小程序

一个简单的计算分数的小程序 代码如下: package Day05; public class ExamGradeDemo { public static void main(String[] args) { char[][] answers = { {'C','B','D','C','A','A','D','C','D','C'}, {'A','C','B','D','C','A','D','C','B','D'}, {'A','C','B','D','B','D','C','A','A','

MapReduce计算框架高级特性程序运行并发度

2019/2/19 星期二 MapReduce计算框架高级特性程序运行并发度 所谓的并发度,就是在MapReduce执行程序的过程中有多少个map task进程和reduce task进程,来一起完成程序的处理. MapReduce就是把业务处理逻辑变成分布式来处理. reduce task 数量的决定机制 //全局的聚合操作 由业务场景决定1.业务逻辑需要2.数据量大小设置方法:job.setNumReduceTasks(5) //reduce task的数量不能够任意的指定,比如:我们在一大

编写程序,试用公式计算圆面积和周长陈天艺1636050045

public class Circle{private double r;public Circle(double r){this.r =r;}public double getLength(){return 2*Math.PI*r;}public double getArea(){return Math.PI*r*r;}}