c语言完成输入八位数的日期,输出是该年份的第几天。 除了main函数,要求编写判断闰年的函数和判断是第几天的函数。 输入格式: 20100205 输出: 36
时间: 2023-06-06 14:04:39 浏览: 87
这是一个很好的编程问题!根据你的要求,我可以给你以下 C 代码:
```c
#include <stdio.h>
int isLeapYear(int year) {
if ((year % 4 == 0 && year % 100 != 0) || year % 400 == 0) {
return 1; // 闰年
} else {
return 0; // 平年
}
}
int dayOfYear(int year, int month, int day) {
int daysInMonth[] = {
31, 28 + isLeapYear(year), 31, 30, 31, 30,
31, 31, 30, 31, 30, 31
};
int i, totalDays = 0;
for (i = 0; i < month - 1; i++) {
totalDays += daysInMonth[i];
}
totalDays += day;
return totalDays;
}
int main() {
int year, month, day;
scanf("%4d%2d%2d", &year, &month, &day); // 输入格式化,注意占位符
int dayOfYearResult = dayOfYear(year, month, day); // 获取当年第几天
printf("%d\n", dayOfYearResult); // 输出结果
}
```
这个代码中,主要的函数是 `isLeapYear` 和 `dayOfYear`。`isLeapYear` 判断是否是闰年,如果是,返回 `1`,否则返回 `0`。`dayOfYear` 接收一个年月日,返回该日期在当年的第几天。
在 `main` 函数中,我们首先输入日期,并且用 `%4d%2d%2d` 的占位符格式化输入,分别存储在 `year`、`month`、`day` 中。然后调用 `dayOfYear` 函数获取当年日期是第几天,最后输出结果即可。当然,在实际编写代码时,需要对输入格式进行判断和错误处理,这里为了简化代码就省略了。
希望我的回答能解决你的问题!
阅读全文