<九度 OJ>题目1070:今年的第几天?

题目描述:

输入年、月、日,计算该天是本年的第几天。

输入:

包括三个整数年(1<=Y<=3000)、月(1<=M<=12)、日(1<=D<=31)。

输出:
输入可能有多组测试数据,对于每一组测试数据,
输出一个整数,代表Input中的年、月、日对应本年的第几天。
样例输入:
1990 9 20
2000 5 1
样例输出:
263
122


#include "iostream"  
 
using namespace std;
 
int leap(int a)          //自定义函数leap用来指定年份是否为闰年
{
    if (a % 4 == 0 && a % 100 != 0 || a % 400 == 0)//闰年判定条件
        return 1;                //是闰年返回1
    else
        return 0;         //不是闰年返回0
}
 
int number(int year, int m, int d) //自定义函数number计算输入日期为该年第几天
{
    int sum = 0, i;
    //数组a存放平年每月的天数
    int a[12] = { 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31 };
    int b[12] = { 31, 29, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31 };      //数组b存放闰年每月的天数
    if (leap(year) == 1)           //判断是否为闰年
    {
        for (i = 0; i < m - 1; i++)
            sum += b[i];   //是闰年,累加数组b前m-1个月份天数
    }
    else
    {
        for (i = 0; i < m - 1; i++)
            sum += a[i]; //不是闰年,累加数组a钱m-1个月份天数
    }
    sum += d;                                       //将前面累加的结果加上日期,求出总天数
    return sum;                                     //将计算的天数返回
}
 
int main()
{
    int year, month, day, n;           //定义变量为基本整型
    while (cin >> year >> month >> day)
    {
        if (year > 3000 || year<1 || month>12 || month<1 || day>31 || day < 1)
            break;
         
        n = number(year, month, day);            //调用函数number
        cout << n << endl;
    }
     
    return 0;
}
/**************************************************************
    Problem: 1070
    User: EbowTang
    Language: C++
    Result: Accepted
    Time:170 ms
    Memory:1520 kb
****************************************************************/

注:本博文为EbowTang原创,后续可能继续更新本文。如果转载,请务必复制本条信息!

原文地址:http://blog.csdn.net/ebowtang/article/details/43643037

原作者博客:http://blog.csdn.net/ebowtang


你可能感兴趣的:(算法,字符串,面试,数组,数学)