解题思路:

1. 判断闰年:根据闰年规则(能被 4 整除但不能被 100 整除,或能被 400 整除)编写函数,确定年份是否为闰年,以调整 2 月天数。

 

2. 设定每月天数:创建数组存储非闰年每月天数,若为闰年,将 2 月天数改为 29。

 

3. 累加天数:遍历前  month - 1  个月,累加对应天数,再加上当日的  day  值,得到当年第几天。



注意事项:

1. 闰年判断准确性:严格遵循闰年规则,如  2000  年是闰年(能被 400 整除), 1900  年不是(能被 100 整除但不能被 400 整除)。

 

2. 每月天数记忆:1、3、5、7、8、10、12 月为 31 天,4、6、9、11 月为 30 天,非闰年 2 月 28 天,闰年 2 月 29 天。

 

3. 循环边界与累加:确保循环从 1 到  month - 1  累加天数,避免索引越界或遗漏月份。

 

4. 输入与变量处理:正确读取年、月、日,初始化总天数为 0,保证计算逻辑连贯。



参考代码:

#include <stdio.h>


// 定义结构体存储年月日

struct date {

    int year, month, day;

};


// 判断是否为闰年

int is_leap(int year) {

    return (year % 4 == 0 && year % 100 != 0) || (year % 400 == 0);

}


int main() {

    struct date d;

    scanf("%d%d%d", &d.year, &d.month, &d.day);

    

    int total = 0;

    // 非闰年每月天数

    int months_days[] = {0, 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31};

    

    if (is_leap(d.year)) {

        months_days[2] = 29; // 闰年2月改为29天

    }

    

    for (int i = 1; i < d.month; i++) {

        total += months_days[i]; // 累加前month-1个月的天数

    }

    total += d.day; // 加上当日天数

    

    printf("%d\n", total);

    return 0;

}


点赞(0)
 

0.0分

0 人评分

C语言网提供由在职研发工程师或ACM蓝桥杯竞赛优秀选手录制的视频教程,并配有习题和答疑,点击了解:

一点编程也不会写的:零基础C语言学练课程

解决困扰你多年的C语言疑难杂症特性的C语言进阶课程

从零到写出一个爬虫的Python编程课程

只会语法写不出代码?手把手带你写100个编程真题的编程百练课程

信息学奥赛或C++选手的 必学C++课程

蓝桥杯ACM、信息学奥赛的必学课程:算法竞赛课入门课程

手把手讲解近五年真题的蓝桥杯辅导课程

评论列表 共有 0 条评论

暂无评论