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

  • 相关阅读:
    HDOJ 4747 Mex
    HDU 1203 I NEED A OFFER!
    HDU 2616 Kill the monster
    HDU 3496 Watch The Movie
    Codeforces 347A A. Difference Row
    Codeforces 347B B. Fixed Points
    Codeforces 372B B. Hungry Sequence
    HDU 1476 Sudoku Killer
    HDU 1987 How many ways
    HDU 2564 词组缩写
  • 原文地址:https://www.cnblogs.com/mayuko/p/4567635.html
Copyright © 2011-2022 走看看