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

来源:互联网 发布:面试问题 知乎 编辑:程序博客网 时间:2024/05/22 05:19

题目

描述

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

输入

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

输出

成功:返回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;}
0 0