题目描述
给定如下定义:
struct date_rec
{
int day ;
int month ;
int year ;
} ;
struct date_rec current_date ;
写一个程序包含如下的函数,完成:
-
输入current_date的值:
void input_date(struct date_rec *current_date) -
将current_date增加1天: void increment_date(struct date_rec
*current_date) -
显示current_date的值: void output_date(struct date_rec *current_date)
考虑每个月的实际天数,同时也考虑闰年的情况。
输入输出提示
**输入格式要求:"%d%d%d" 提示信息:"请输入当前日期(年 月 日):"
**输出格式要求:"当前日期:%d年%d月%d日!" (加1天后的新日期)
程序运行实例
程序运行示例:
请输入当前日期(年 月 日):2020 5 20
当前日期:2020年5月21日!
一、解题思路
水题,加一天即可
二、题解
源代码
代码如下:
/*
* Author: FeverTwice
* Date: 2021-06-02
* Func: Solution for Competition
*/
#include <stdio.h>
struct date_rec
{
int day;
int month;
int year;
} ;
struct date_rec current_date;
int days_of_month[][13] = {{0, 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31}, {0, 31, 29, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31}
} ;
int is_leap(int year)
{
return ((year % 400 == 0) || ((year % 4 == 0) && (year % 100 != 0)));
}
void input_date(struct date_rec *current_date)
{
printf("请输入当前日期(年 月 日):");
scanf("%d%d%d", ¤t_date->year, ¤t_date->month, ¤t_date->day);
}
void increment_date(struct date_rec *current_date)
{
current_date->day++;
if (current_date->day > days_of_month[is_leap(current_date->year)][current_date->month])
{
current_date->day = current_date->day - days_of_month[is_leap(current_date->year)][current_date->month]
;
current_date->month++;
if (current_date->month > 12)
{
current_date->year++;
current_date->month = current_date->month - 12;
}
}
}
void output_date(struct date_rec *current_date)
{
printf("当前日期:%d年%d月%d日!", current_date->year,
current_date->month, current_date->day);
}
int main()
{
input_date(¤t_date);
increment_date(¤t_date);
output_date(¤t_date);
return 0;
}
写在最后
各位看官,都看到这里了,麻烦动动手指头给博主来个点赞8,您的支持作者最大的创作动力哟! <(^-^)>
才疏学浅,若有纰漏,恳请斧正
本文章仅用于各位同志作为学习交流之用,不作任何商业用途,若涉及版权问题请速与作者联系,望悉知