• 额外:星期计算小程序


    今天没做什么好题,分享一个我曾经做过的计算日期的小程序。

    // 额外3.cpp: 定义控制台应用程序的入口点。
    //
    
    #include "stdafx.h"
    #include <iostream>
    
    int totalDays(int year, int month, int day)
    {
        int a;//当年已过的天数
        int leapYear = year / 4 - year / 100 + year / 400;//闰年的总数
        switch (month)
        {
        case 1:
            a = 0;
            break;
        case 2:
            a = 31;
            break;
        case 3:
            a = 31 + 28;//总感觉应该根据是不是闰年而判断加28还是29,但是程序输出总是正确的,不知道这是不是一个bug。
            break;
        case 4:
            a = 31 + 28 + 31;
            break;
        case 5:
            a = 31 + 28 + 31 + 30;
            break;
        case 6:
            a = 31 + 28 + 31 + 30 + 31;
            break;
        case 7:
            a = 31 + 28 + 31 + 30 + 31 + 30;
            break;
        case 8:
            a = 31 + 28 + 31 + 30 + 31 + 30 + 31;
            break;
        case 9:
            a = 31 + 28 + 31 + 30 + 31 + 30 + 31 + 31;
            break;
        case 10:
            a = 31 + 28 + 31 + 30 + 31 + 30 + 31 + 31 + 30;
            break;
        case 11:
            a = 31 + 28 + 31 + 30 + 31 + 30 + 31 + 31 + 30 + 31;
            break;
        case 12:
            a = 31 + 28 + 31 + 30 + 31 + 30 + 31 + 31 + 30 + 31 + 30;
            break;
        }
        return 365 * (year - 2 - leapYear) + leapYear*366 + a + day;//从公元1年1月1日到现在的天数
        /*减2是因为,已经过去的年没有公元0年,且也不包括用户输入的年份。减去闰年数量是因为闰年单算(乘以366)。所以,“year-2-leapYear”就是平年年数。变量a存储了用户输入年份
        之前,当年已经过的月份的天数*/
    }
    int main()
    {
        int year, month, day,total;
        std::cout << "请输入年份:";
        std::cin >> year;
        std::cout << "请输入月份:";
        std::cin >> month;
        std::cout << "请输入日期:";
        std::cin >> day;
        switch (month)//检查输入月份是否存在,或与日期是否匹配
        {
        case 1:
            if (day > 31)
            {
                std::cout << "日期错误!";
                system("pause");
                return 1;
            }
            break;
        case 2:
            if (year % 4 == 0)//闰年情况
            {
                if (day > 29) 
                {
                    std::cout << "日期错误!";
                    system("pause");
                    return 1;
                }
            }
            else //平年情况
            {
                if(day>28)
                {
                    std::cout << "日期错误!";
                    system("pause");
                    return 1;
                }
            }
            break;
        case 3:
            if(day>31)
            {
                std::cout << "日期错误!";
                system("pause");
                return 1;
            }
            break;
        case 4:
            if (day > 30)
            {
                std::cout << "日期错误!";
                system("pause");
                return 1;
            }
            break;
        case 5:
            if(day>31)
            {
                std::cout << "日期错误!";
                system("pause");
                return 1;
            }
            break;
        case 6:
            if(day>30)
            {
                std::cout << "日期错误!";
                system("pause");
                return 1;
            }
            break;
        case 7:
            if(day>31)
            {
                std::cout << "日期错误!";
                system("pause");
                return 1;
            }
            break;
        case 8:
            if(day>31)
            {
                std::cout << "日期错误!";
                system("pause");
                return 1;
            }
            break;
        case 9:
            if(day>30)
            {
                std::cout << "日期错误!";
                system("pause");
                return 1;
            }
            break;
        case 10:
            if(day>31)
            {
                std::cout << "日期错误!";
                system("pause");
                return 1;
            }
            break;
        case 11:
            if(day>30)
            {
                std::cout << "日期错误!";
                system("pause");
                return 1;
            }
            break;
        case 12:
            if(day>31)
            {
                std::cout << "日期错误!";
                system("pause");
                return 1;
            }
            break;
        default:
            std::cout << "日期错误!";
            system("pause");
            return 1;
        }
        total = totalDays(year, month, day);//从公元1年1月1日到现在的总天数
        std::cout << "这个日期的星期是:";
        int b = total % 7;//根据总天数除以7后的余数判断星期(公元1年1月1日是星期一)
        switch (b)
        {
        case 0:
            std::cout << "";
            break;
        case 1:
            std::cout << "";
            break;
        case 2:
            std::cout << "";
            break;
        case 3:
            std::cout << "";
            break;
        case 4:
            std::cout << "";
            break;
        case 5:
            std::cout << "";
            break;
        case 6:
            std::cout << "";
            break;
        }
        std::cout<<"
    ";
        system("pause");
        return 0;
    }
    
    // return 0表示程序正常返回,back=true表示程序异常返回。
    //
    // Copyright JiangYueChen 2018   All Rights Reserved.
    //
  • 相关阅读:
    pgsql批量新增覆盖原表数据
    乘风破浪,遇见最美Windows 11之新微软商店(Microsoft Store)生态 Wondershare HiPDF正式登陆Teams应用市场
    乘风破浪,遇见未来新能源汽车(Electric Vehicle)之特斯拉掀起CTC技术浪潮,5大车企扎堆跟进,想要干掉电池组
    时光卷轴,IT启示录2022年6月刊
    乘风破浪,遇见最美Windows 11之现代Windows桌面应用开发 微软跨平台UI框架.NET MAUI,基于.NET 6构建的通用框架
    HTTP编码和解码与基本认证
    HTTPS&SPDY&HTTP2&QUIC&HTTP3
    HTTP报文结构
    HTTP内容协商机制和断点续传
    HTTP Web安全
  • 原文地址:https://www.cnblogs.com/jiangyuechen/p/12237114.html
Copyright © 2020-2023  润新知