给定如下定义: struct date_rec { int day ; int month ; int year ; } ; struct date_rec current_date ; 写一个程序包含如下的函数,完成: (a) 输入current_date的值: void input_date(struct date_rec *current_date) (b) 将current_date增加1天: void increment_date(struct date_rec *current_date) (c) 显示current_date的值: void output_date(struct date_rec *current_date) 考虑每个月的实际天数,同时也考虑闰年的情况。 **输入格式要求:"%d%d%d" 提示信息:"请输入当前日期(年 月 日):" **输出格式要求:"当前日期:%d年%d月%d日!" (加1天后的新日期)
时间: 2023-06-05 15:47:34 浏览: 176
(a) 输入current_date的值:
void input_date(struct date_rec *current_date) {
printf("请输入当期日期(年 月 日):");
scanf("%d%d%d", ¤t_date->year, ¤t_date->month, ¤t_date->day);
}
(b) 将current_date增加1天:
void increment_date(struct date_rec *current_date) {
int days_of_month[12] = {31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31};
if (current_date->year % 4 == 0 && current_date->year % 100 != 0 || current_date->year % 400 == 0) {
days_of_month[1] = 29;
}
current_date->day++;
if (current_date->day > days_of_month[current_date->month - 1]) {
current_date->day = 1;
current_date->month++;
if (current_date->month > 12) {
current_date->month = 1;
current_date->year++;
}
}
}
(c) 显示current_date的值:
void output_date(struct date_rec *current_date) {
printf("当前日期:%d年%d月%d日!\n", current_date->year, current_date->month, current_date->day);
}
考虑每个月实际天数的数组days_of_month,如果当前年是闰年,2月天数设为29。在增加日期时,将当前日期加1,判断是否大于当月天数,如果是则将日期设为1,月份加1,判断是否大于12,如果是则将月份设为1,年份加1。对于输出函数,按要求按照格式输出即可。
阅读全文