解题思路:
整体思路可以分成三步。
首先,读入年、月、日三个数据。由于日期包含多个相关信息,所以可以用结构体把年、月、日放在一起,这样逻辑更清晰。
其次,判断输入年份是否是闰年。因为闰年和平年的区别主要体现在二月份:平年二月有 28 天,闰年二月有 29 天。闰年的判断规则是:能被 4 整除且不能被 100 整除,或者能被 400 整除。
然后,从 1 月开始,把目标月份之前的每个月天数累加起来。比如输入的是 5 月 10 日,就先累加 1 月、2 月、3 月、4 月的天数,再加上 10 天。这样得到的结果就是该日期在这一年中的第几天。
在累加月份天数时,需要根据月份分类处理:1、3、5、7、8、10、12 月是 31 天;4、6、9、11 月是 30 天;2 月则根据是否为闰年来决定是 28 天还是 29 天。
最后,将前面月份的总天数加上当前月份的日期数,并输出结果。
注意事项:
参考代码:
#include<stdio.h>
struct time{
int year;
int month;
int day;
}t1;
int main(){
int sum=0;
struct time *p=&t1;
scanf("%d %d %d",&p->year,&p->month,&p->day);
int leap=(p->year%4==0&&p->year%100!=0)||p->year%400==0;
for(int i=1;i<p->month;i++){
if(i==1||i==3||i==5||i==7||i==8||i==10||i==12)sum+=31;
else if(i==2)sum+=leap?29:28;
else sum+=30;
}
printf("%d",sum+=p->day);
return 0;
}
0.0分
0 人评分
C语言网提供由在职研发工程师或ACM蓝桥杯竞赛优秀选手录制的视频教程,并配有习题和答疑,点击了解:
一点编程也不会写的:零基础C语言学练课程
解决困扰你多年的C语言疑难杂症特性的C语言进阶课程
从零到写出一个爬虫的Python编程课程
只会语法写不出代码?手把手带你写100个编程真题的编程百练课程
信息学奥赛或C++选手的 必学C++课程
蓝桥杯ACM、信息学奥赛的必学课程:算法竞赛课入门课程
手把手讲解近五年真题的蓝桥杯辅导课程
发表评论 取消回复