华为机试HJ73:计算日期到天数转换

Posted 翟天保Steven

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了华为机试HJ73:计算日期到天数转换相关的知识,希望对你有一定的参考价值。

作者:Steven
版权声明:著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处

题目描述:

根据输入的日期,计算是这一年的第几天。

输入描述:

输入一行,每行空格分割,分别是年,月,日

输出描述:

输出是这一年的第几天

示例:

输入:

2012 12 31

输出:

366

解题思路:

本题是个数学问题,也是生活题。闰年要满足两个条件,年份可以被4整除,且不被100整除。首先用year判断是否为闰年;其次,建立闰年的月份天数表和非闰年的月份天数表;根据当前月份,累加其前n-1个月的完整天数,再加上当月的天数,完毕。

测试代码:

#include <iostream>
#include <string>
#include <vector>
using namespace std;

int main()
{
    int year,month,day;
    while(cin>>year>>month>>day)
    {
        bool flag=(year%4==0&&year%100!=0)?true:false;
        vector<int> months1={31,28,31,30,31,30,31,31,30,31,30,31};     // 非闰年
        vector<int> months2={31,29,31,30,31,30,31,31,30,31,30,31};     // 闰年
        int sum=0;
        for(int i=0;i<(month-1);++i)
        {
            if(flag)
            {
                sum+=months2[i];
            }
            else{
                sum+=months1[i];
            }
        }
        sum+=day;
        cout<<sum<<endl;
    }
    return 0;
}

以上是关于华为机试HJ73:计算日期到天数转换的主要内容,如果未能解决你的问题,请参考以下文章

华为机试题 HJ73计算日期到天数转换

华为机试HJ52:计算字符串的距离(动态规划)

华为机试HJ95:人民币转换

华为机试HJ95:人民币转换

华为机试HJ55:挑7

华为机试HJ5:进制转换