• 额外:星期计算小程序


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

    // 额外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.
    //
  • 相关阅读:
    2008年总结
    感触
    24105
    事情总喜欢蜂拥而至
    最后的稻草
    什么叫服务
    sigh,终于submit了
    在工作和生活的狭缝中生存着
    不应该,不应该
    ren 人 认 忍 韧 仁
  • 原文地址:https://www.cnblogs.com/jiangyuechen/p/12237114.html
Copyright © 2020-2023  润新知