描述

根据输入的日期,计算是这一年的第几天。
保证年份为4位数且日期合法。
进阶:时间复杂度:O(n) ,空间复杂度:O(1)

输入描述:

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

输出描述:

输出是这一年的第几天

示例1

输入:
2012 12 31
输出:
366

示例2

输入:
1982 3 4
输出:
63
代码部分:
#include <stdio.h>
//以下是Senky的代码
int main() {
    int year = 0;
    int month = 0;
    int day = 0;
    int i = 0;
    int sum = 0; //记录天数
//每个数组下标为月份,数组元素为平年的天数
    int date[13] = {0, 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31};
    while (~scanf("%d %d %d", &year, &month, &day)) {
        //默认不是闰年,则将month前面的月份天数加起来再加month的天数
        for (i = 1; i < month; i++) {
            sum += date[i];
        }
        sum += day;
    }

    //判断闰年进入
    if ((year % 4 == 0 && year % 100 != 0) || year % 400 == 0) {
        if (3 <= month)//超过3月份才加闰年的那一天
            sum += 1; //闰年,month大于三月份,加一天
    }
    printf("%d", sum);
    return 0;//编辑于2022/10/08
}
总结
①数学问题没什么难点;
②当前帖子仅供自我精进、学习使用,有不足之处欢迎指正;