解题思路:
使用 isLeapYear函数来判断输入的年份是否为闰年,该函数返回1表示是闰年,返回0表示不是闰年。
然后,使用 calculateDayOfYear函数来计算该日在本年中是第几天。
在函数中,使用了一个数组 daysInMonth来存储每个月份的天数。在循环中,将输入的月份之前的所有天数累加到 dayOfYear中。然后,将输入的日期也加到 dayOfYear中。
注意事项:
如果是闰年且当前月份大于2月,则需要额外加1天。
参考代码:
#include<stdio.h>
typedef struct Date{
int year;
int month;
int day;
}Date;
int isLeapYear(int year) {
if ((year % 4 == 0 && year % 100 != 0) || year % 400 == 0) {
return 1; // 是闰年
}
return 0; // 不是闰年
}
int calculateDayOfYear(Date date) {
int daysInMonth[] = {0, 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31};
int dayOfYear = 0;
for (int i = 1; i < date.month; i++) {
dayOfYear += daysInMonth[i];
}
dayOfYear += date.day;
if (isLeapYear(date.year) && date.month > 2) {
dayOfYear += 1; // 是闰年且当前月份大于2月,则需要额外加1天
}
return dayOfYear;
}
int main()
{
Date date;
scanf("%d %d %d",&date.year,&date.month,&date.day);
int dayOfYear = calculateDayOfYear(date);
printf("%d",dayOfYear);
return 0;
}
0.0分
0 人评分
C语言网提供由在职研发工程师或ACM蓝桥杯竞赛优秀选手录制的视频教程,并配有习题和答疑,点击了解:
一点编程也不会写的:零基础C语言学练课程
解决困扰你多年的C语言疑难杂症特性的C语言进阶课程
从零到写出一个爬虫的Python编程课程
只会语法写不出代码?手把手带你写100个编程真题的编程百练课程
信息学奥赛或C++选手的 必学C++课程
蓝桥杯ACM、信息学奥赛的必学课程:算法竞赛课入门课程
手把手讲解近五年真题的蓝桥杯辅导课程
发表评论 取消回复