题目是这样的:

已知2022年10月11日是星期二

现在给定你一个日期,你需要计算当天是星期几。

输入格式:

一行三个整数M,D,Y,表示所求日期为:M月D日,Y年

1600≤Y≤2400,保证输入日期均为合法日期。

输出格式:

输出一个数字,表示当前是星期几。

如果星期天,则输出0。

输入样例1:

8 17 1926

输出样例1:

2

输入样例2:

2 29 1904

输出样例2:

1

看完,做何感想?对于初学者来说,是比较麻烦的。但是要克服畏难心理,这是一个程序员所必须具有的能力。

当然,各位肯定可以注意到,要注意平年闰年的问题。

我们可以写两个数组,分别用于存储平年的每个月各自的天数与闰年每个月各自的天数

int ping[12] = { 31,28,31,30,31,30,31,31,30,31,30,31 };
    int ren[12] = { 31,29,31,30,31,30,31,31,30,31,30,31 };

这样方便天数的累加

之后,我们把给到我们的数据分成3类来处理

1、在这个日期之前

2、在这个日期之后

#include <iostream>
#include <cmath>
using namespace std;

bool judge(int n)
{
    if ((n % 4 == 0 && n % 100 != 0) || (n % 400 == 0))
    {
        return 1;
    }
    return 0;
}

int main()
{
    int days = 0;
    int month, day, year;
    cin >> month >> day >> year;
    int ping[12] = { 31,28,31,30,31,30,31,31,30,31,30,31 };
    int ren[12] = { 31,29,31,30,31,30,31,31,30,31,30,31 };
    if (year >= 2022)
    {
        for (int i = 2022; i < year; i += 1)   //  这样的话,多加了2022/10/11之前的天数,少加了所给日期的月与天
        {
            if (judge(i))
            {
                days += 366;
            }
            else
            {
                days += 365;
            }
        }
        //  先减去之前的天数:
        for (int i = 1; i < 10; i += 1)
        {
            days -= ping[i - 1];
        }
        days -= 11;
        //  再加上所给日期的天数与月数
        //  注意所给年的平年润年
        if (judge(year))
        {
            for (int i = 1; i < month; i += 1)
            {
                days += ren[i - 1];
            }
            days += day;
        }
        else
        {
            for (int i = 1; i < month; i += 1)
            {
                days += ping[i - 1];
            }
            days += day;
        }
        //  这样就这样了
    }
    else
    {
        for (int i = year; i < month; i += 1)  //  这样就多加了所给的月数与日数。这样就少加了10/11
        {
            if (judge(i))
            {
                days += 366;
            }
            else
            {
                days += 365;
            }
        }
        //  之后再减去所给的日与月
        if (judge(year))
        {
            for (int i = 1; i < month; i += 1)
            {
                days -= ren[i - 1];
            }
            days -= day;
        }
        else
        {
            for (int i = 1; i < month; i += 1)
            {
                days -= ping[i - 1];
            }
            days -= day;
        }
        //  之后再加上10/11;
        for (int i = 1; i < 10; i += 1)
        {
            days += ping[i - 1];
        }
        days += day;
    }

//  这时候,就开始算了
    int x;
    x = days % 7;
    int real;
    if (2022 * 100 + 10 * 10 + 11 > year * 100 + month * 10 + day)
    {
        real = x + 2;
    }
    else
    {
        real == 9 - x;
    }
    cout << real;
    return 0;
}

7-4 疯狂星期四!!!!!相关推荐

  1. 马斯克凌晨一点半晒“代码审查”现场,编排他的段子比疯狂星期四还多

    梦晨 Pine 发自 凹非寺 来源|AI新媒体量子位( ID: QbitAI) 每一个真正会写代码的人,请在下午2点到总部10层报到. 马斯克在周五向推特工程团队(或者说剩下的部分)发出召集令. 他要 ...

  2. KFC疯狂星期四V50用js代码表示

    KFC疯狂星期四V50用js代码表示 let arr = [         [1, 9, 12, 13, 14, 15, 16, 18, 19, 20, 21, 22],         [2, 8 ...

  3. 疯狂星期四;python摸鱼小游戏,重温童年经典

    前言 今天是6.1号儿童节,刚好也是星期四,疯狂星期四+六一儿童节岂不是得喂我111(50+61)

  4. 讨论度超20亿,肯德基疯狂星期四是如何出圈的?

    每到周四,网上就会出现一股"神秘力量"--今天是星期四,V我50,请我吃肯德基. 肯德基疯狂星期四能有多火? 目前,#肯德基疯狂星期四#话题阅读量超23亿次,参与讨论次数超600万 ...

  5. 疯狂星期四,抢980元超值美食卡,尊享超级特价!

  6. 实时的软件生成 —— Prompt 编程打通低代码的最后一公里?

    PS:这也是一篇畅想,虽然经过了一番试验,依旧有一些不足,但是大体上站得住脚. 传统的软件生成方式需要程序员编写大量的代码,然后进行测试.发布等一系列繁琐的流程.而实时生成技术则是借助人工智能技术,让 ...

  7. 《王者荣耀》突然停运?看到官方公告直接傻眼……

    说起来大侠也算是<王者荣耀>的资深玩家了. 看咱这主页就知道,平时没少挨揍. 除了玩游戏之外,大侠还有一点小小的收集控,看到限定皮肤就有点走不动道的那种. 如果按照原来的节奏,王者一个月也 ...

  8. 克服浮躁_如果您从事技术工作,那就克服自己

    克服浮躁 重点(Top highlight) Working in tech can make you an asshole. 从事技术工作会让您混蛋. I work in tech. I have ...

  9. Web3+品牌的大杀器:DAO如何实现对传统品牌彻底的降维打击

    01 DAO是品牌的大杀器 在我之前的文章就有预测过,Web3与品牌的结合只有两条路径,一个是Web3会自生长原生品牌发起向现实中的品牌扩大共识,另外一个是Web3是只属于现实中具有某些特性的品牌的沃 ...

  10. 2022纪中游记(进行中)

    Day -1 听说林展扁他老弟也是我们学校信奥的,惊了. 而且还说要来,准备去社牛看一眼. Day 0 麻了想到要来一个月就麻了. 然后临进去前跑出去吃了顿好的(什么最后的晚餐),虽然纪中外面也没什么 ...

最新文章

  1. word分散对齐调整宽度_Word中文字很难对齐?有了这4个方法,2秒可对齐Word中所有文字...
  2. Codeforces Round #601 (Div. 2)D. Feeding Chicken,二维压一维,几何平面的分配
  3. Java之Object类与instanceof关键字
  4. HTML禁用Flash文件右键
  5. C语言试题二十九之编写函数int function(int lim,int aa[max])求出小于或等于lim的所有素数并放在aa数组中,该函数返回所求的素数的个数。
  6. 2021年终总结2022未来展望——人生天地之间,若白驹过隙,忽然而已
  7. python列表是顺序表还是链表_Python数据结构与算法(链表使用详解)
  8. 数据文件shrink_SQL Server中的Shrink TempDB数据库概述
  9. configure: error: MySQL library not found ,Not found mysqlclient library
  10. oracledatabase11gr2怎么打开_oracle database 11gR2 + forms and reports 11g安装教程
  11. C#获取电脑硬件信息(CPU ID、主板ID、硬盘ID、BIOS编号)
  12. linux有线网设置方法,有线网络使用教程
  13. 高盛报告:未来5-10年区块链将被广泛应用【附下载】
  14. FastDFS Destination image dimensions must not be less than 0 pixels
  15. Hadoop 推测执行
  16. 使用云服务器搭建Linux学习环境
  17. 【电子学会】2020年09月图形化二级 -- 货运飞船
  18. 我的世界手机版怎么增加服务器,我的世界手机版服务器怎么创建
  19. 学生台灯用led灯好还是荧光灯好?推荐几款高品质的LED灯
  20. 实验10-9 十进制转换二进制 (15分)

热门文章

  1. 单身的程序猿伤不起,在神棍节感慨下
  2. Linux虚拟机(Centos7)桥接模式静态ip配置/克隆后MAC地址配置、主机名修改
  3. 给自己定个小目标:利用python进行数据分析
  4. 聪明的猴子 黑暗爆炸 - 2429
  5. C++ 制作FlappyBird
  6. 三星Galaxy之父×××网秦,网秦安全能否脱胎换骨?
  7. 设计一款照片一键加水印的小工具
  8. 量化投资 --- 技术篇 (1) CAPM模型
  9. Java GUI实现简单弹珠游戏(新手入门练习项目)
  10. Intel CPU 微架构的演进与发展