C语言实现:【问题描述】用指针来定义一个专用函数,来计算第二天日期。 输入:当天日期,结构体类型 返回:第二天日期,结构体类型。 (闰年分为以下两种: 1.普通闰年:公历年份是4的倍数,且不是100的倍数的,为闰年(如2004年、2020年等就是闰年)。 2.世纪闰年:公历年份是整百数的,必须是400的倍数才是闰年(如1900年不是闰年,2000年是闰年)。)【样例输入】 3 14 2008 【样例输出】 Tomorrow's date is 3/15/2008.
时间: 2024-01-22 20:21:36 浏览: 159
以下是C语言实现代码:
```c
#include <stdio.h>
struct date {
int month;
int day;
int year;
};
int is_leap_year(int year) {
if ((year % 4 == 0 && year % 100 != 0) || year % 400 == 0) {
return 1;
} else {
return 0;
}
}
struct date next_day(struct date d) {
int days_in_month[] = {31, 28 + is_leap_year(d.year), 31, 30, 31, 30, 31, 31, 30, 31, 30, 31};
if (d.day < days_in_month[d.month - 1]) {
d.day++;
} else {
d.day = 1;
if (d.month == 12) {
d.month = 1;
d.year++;
} else {
d.month++;
}
}
return d;
}
int main() {
struct date today, tomorrow;
printf("Enter today's date (mm dd yyyy): ");
scanf("%d %d %d", &today.month, &today.day, &today.year);
tomorrow = next_day(today);
printf("Tomorrow's date is %d/%d/%d.\n", tomorrow.month, tomorrow.day, tomorrow.year);
return 0;
}
```
代码中,我们首先定义了一个 `date` 结构体用于存储日期,包括月、日、年三个成员变量。接着,我们定义了一个 `is_leap_year` 函数,用于判断给定年份是否为闰年,返回值为1表示是闰年,为0表示不是闰年。最后,我们定义了一个 `next_day` 函数,用于计算给定日期的下一天日期,返回值为一个新的 `date` 结构体。
在 `next_day` 函数中,我们首先定义了一个数组 `days_in_month`,用于存储每个月的天数。注意到二月份的天数可能会因为闰年而有所不同,因此我们通过 `is_leap_year` 函数来判断一下是否为闰年,并将结果加到二月份天数上。
接着,我们判断给定日期的日数是否小于该月天数,如果小于,则直接将日期加1即可;否则,日期归零,月份加1,如果月份已经是12月了,则年份也加1。
最后,在 `main` 函数中,我们先输入当天日期,然后调用 `next_day` 函数计算出明天日期,并输出结果即可。
阅读全文