定义一个结构体变量(包括年、月、日),编写程序,要求输入年月日,程序能计算出该日在本年中第几天。注意闰年问题。若输入错误,则输出error
时间: 2023-03-30 11:03:36 浏览: 185
好的,这是一个关于编程的问题。请看下面的代码:
```c
#include <stdio.h>
struct Date {
int year;
int month;
int day;
};
int is_leap_year(int year) {
return (year % 4 == && year % 100 != ) || (year % 400 == );
}
int get_day_of_year(struct Date date) {
int days_of_month[] = {31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31};
int day_of_year = ;
for (int i = ; i < date.month - 1; i++) {
day_of_year += days_of_month[i];
}
day_of_year += date.day;
if (date.month > 2 && is_leap_year(date.year)) {
day_of_year++;
}
return day_of_year;
}
int main() {
struct Date date;
printf("请输入年月日,格式为yyyy-mm-dd:");
scanf("%d-%d-%d", &date.year, &date.month, &date.day);
if (date.month < 1 || date.month > 12 || date.day < 1 || date.day > 31) {
printf("error\n");
return ;
}
if (date.month == 2 && is_leap_year(date.year) && date.day > 29) {
printf("error\n");
return ;
}
if (date.month == 2 && !is_leap_year(date.year) && date.day > 28) {
printf("error\n");
return ;
}
if ((date.month == 4 || date.month == 6 || date.month == 9 || date.month == 11) && date.day > 30) {
printf("error\n");
return ;
}
int day_of_year = get_day_of_year(date);
printf("该日在本年中第%d天\n", day_of_year);
return ;
}
```
这个程序定义了一个结构体 `Date`,包含年、月、日三个成员变量。然后定义了一个函数 `is_leap_year`,用来判断一个年份是否是闰年。接着定义了一个函数 `get_day_of_year`,用来计算一个日期在本年中是第几天。最后在 `main` 函数中,读入用户输入的日期,判断输入是否合法,然后调用 `get_day_of_year` 函数计算出该日在本年中第几天,最后输出结果。
希望这个程序能够帮到你!
阅读全文