题解 | 华为HJ73#计算日期到天数转换#
计算日期到天数转换
https://www.nowcoder.com/practice/769d45d455fe40b385ba32f97e7bcded
描述
根据输入的日期,计算是这一年的第几天。
保证年份为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
}
总结
①数学问题没什么难点;
②当前帖子仅供自我精进、学习使用,有不足之处欢迎指正;
华为-HJ 文章被收录于专栏
机试的题解
