描述
根据输入的日期,计算是这一年的第几天。
保证年份为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 }
总结
①数学问题没什么难点;
②当前帖子仅供自我精进、学习使用,有不足之处欢迎指正;