人间词话·CODE

但行好事,莫问前程。

计算日期到天数转换【编程题】

题目

描述

根据输入的日期,计算是这一年的第几天。。
详细描述:
输入某年某月某日,判断这一天是这一年的第几天?。

输入

输入三行,分别是年,月,日

输出

成功:返回outDay
输出计算后的第几天;
失败:返回-1

样例输入

2016 12 31

样例输出

366

思路

是先建立一个数组保存每月累计的日子,判断是否是闰年,然后加1

代码

#include <iostream>
using namespace std;

bool loopyear(int year)    //判断是否是闰年
{
    if((year%4==0&&year%100!=0)||year%400==0)
    {
        return 1;
    }
    else
    {
        return 0;
    }

}
bool checkDay(int month, int day)//检查输入的合法性
{
    int a[13]= {0,31,59,90,120,151,181,212,243,273,304,334,365};
    if(day>0&&day<=(a[month]-a[month-1]))
    {
        return true;
    }
    return false;
}

int getOutDay(int year, int month, int day)
{
    int sum=0;
    int a[12]= {0,31,59,90,120,151,181,212,243,273,304,334};
    bool isDayOk=checkDay(month,day);
    if (loopyear(year)&&month>2&&isDayOk)//如果是闰年且月份大于2
    {
        sum=a[month-1]+day+1;
    }
    else if(isDayOk)
    {
        sum=a[month-1]+day;
    }
    else
    {
        sum=-1;
    }
    return sum;
}

int main()
{
    int year,month,day;
    cin>>year;
    cin>>month;
    cin>>day;
    cout<<getOutDay(year,month,day);
    return 0;
}
阅读更多
版权声明:本文为博主原创文章,欢迎转载,分享是一种态度。 https://blog.csdn.net/u010352111/article/details/53991609
上一篇公共字串计算(最长公共子串/序列)C++
下一篇成绩排序【编程题】
想对作者说点什么? 我来说一句

没有更多推荐了,返回首页

关闭
关闭