zoukankan      html  css  js  c++  java
  • 第十一周项目5-当年第几天

    定义一个函数,其参数为年、月、日的值,返回这一天为该年的第几天。要求在main函数中输入年月日,然后调用这个函数求值,并在main函数中输出结果。

    /*
     *Copyright (c) 2014,烟台大学计算机学院
     *All gight reserved.
     *文件名称:temp.cpp
     *作者:邵帅
     *完成时间:2014年11月5日
     *版本号:v1.0
    */
    #include <iostream>
    using namespace std;
    int main()
    {
        int day(int y, int x, int d);
        int year, month, cday;
        cout << "输入年-月-日:" ;
        cin >> year >> month >> cday;
        cout << "这是该年的第" << day(year, month, cday) << "天。" << endl;
        return 0;
    }
    
    int day(int y, int m, int d)
    {
        int sum;
        if ((y % 4 == 0 && y % 100 != 0) || (y % 400 == 0 && y % 100 == 0))
        {
            switch (m)
            {
    
            case 1:
                sum = d;
                break;
            case 2:
                sum = d + 31;
                break;
            case 3:
                sum = d + 60;
                break;
            case 4:
                sum = d + 91;
                break;
            case 5:
                sum = d + 121;
                break;
            case 6:
                sum = d + 152;
                break;
            case 7:
                sum = d + 182;
                break;
            case 8:
                sum =  d + 213;
                break;
            case 9:
                sum =  d + 244;
                break;
            case 10:
                sum = d + 274;
                break;
            case 11:
                sum =  d + 305;
                break;
            case 12:
                sum =  d + 335;
                break;
            }
        }
        else
        {
            switch (m)
            {
            case 1:
                sum = d;
                break;
            case 2:
                sum = d + 31;
                break;
            case 3:
                sum =  d + 59;
                break;
            case 4:
                sum =  d + 90;
                break;
            case 5:
                sum = d + 120;
                break;
            case 6:
                sum =  d + 151;
                break;
            case 7:
                sum =  d + 181;
                break;
            case 8:
                sum =  d + 212;
                break;
            case 9:
                sum =  d + 243;
                break;
            case 10:
                sum =  d + 273;
                break;
            case 11:
                sum = d + 304;
                break;
            case 12:
                sum =  d + 334;
                break;
            }
        }
      return sum;
    }

    运行结果:


    心得:说实话、因为考虑到闰年与平年,代码变得十分的冗长,明白会有更好的处理方法对于闰年的天数可以在平年的基础上(大于2月份)上+1,这样,代码会变得简洁明了,最重要的是,程序运行的效率会大大提高。

    更改后的代码:

    /*
     *Copyright (c) 2014,烟台大学计算机学院
     *All gight reserved.
     *文件名称:temp.cpp
     *作者:邵帅
     *完成时间:2014年11月5日
     *版本号:v1.0
    */
    #include <iostream>
    using namespace std;
    int main()
    {
        int day(int y, int x, int d);
        int year, month, cday;
        cout << "输入年-月-日:" ;
        cin >> year >> month >> cday;
        cout << "这是该年的第" << day(year, month, cday) << "天。" << endl;
        return 0;
    }
    
    int day(int y, int m, int d)
    {
        int sum;
    
        switch (m)
        {
        case 1:
            sum = d;
            break;
        case 2:
            sum = d + 31;
            break;
        case 3:
            sum =  d + 59;
            break;
        case 4:
            sum =  d + 90;
            break;
        case 5:
            sum = d + 120;
            break;
        case 6:
            sum =  d + 151;
            break;
        case 7:
            sum =  d + 181;
            break;
        case 8:
            sum =  d + 212;
            break;
        case 9:
            sum =  d + 243;
            break;
        case 10:
            sum =  d + 273;
            break;
        case 11:
            sum = d + 304;
            break;
        case 12:
            sum =  d + 334;
            break;
        }
        if ((y % 4 == 0 && y % 100 != 0) || (y % 400 == 0 && y % 100 == 0))
        {
            if (m>2)
                sum--;
        }
        return sum;
    }
    
    运行结果:



    @ Mayuko

  • 相关阅读:
    java 多线程(synchronized)
    java 多线程(daemon)
    【转】 Nginx深入详解之多进程网络模型
    Linux 网络编程(epoll)
    Linux 网络编程(多路复用)
    Linux 网络编程(UDP)
    Linux 网络编程(TCP)
    STM32F0xx_看门狗(独立+窗口)配置详细过程
    STM32F0xx_FLASH编程(片内)配置详细过程
    STM32F0xx_RTC实时时钟配置详细过程
  • 原文地址:https://www.cnblogs.com/mayuko/p/4567635.html
Copyright © 2011-2022 走看看