编写程序输入一个日期和一个正整数k计算k天以后是哪天。例如输入的日期为2019年5月15日k为16则2019年4月15日的16天后 是2019年5月1日输出2019-5-1。输入:四个整数前三个分别表示年、月、日 后一个标识天数k输出:k天之后的日期数据间用英文减号隔开。【输入输出样例】输入:2019 4 15 16输出:2019-5-1提示:1日期用结构体。2先考虑加1一天的函数。3函数可以返回
#include <stdio.h>
// 定义日期结构体 typedef struct { int year; int month; int day; } DATE;
// 计算某年某月的天数 int daysInMonth(int year, int month) { switch (month) { case 2: if ((year % 4 == 0 && year % 100 != 0) || year % 400 == 0) { return 29; } else { return 28; } case 4: case 6: case 9: case 11: return 30; default: return 31; } }
// 计算某个日期加 n 天后的日期 DATE adddays(DATE date, int n) { int year = date.year; int month = date.month; int day = date.day; while (n > 0) { int days = daysInMonth(year, month); if (day + n <= days) { day += n; n = 0; } else { n -= days - day + 1; day = 1; if (month == 12) { year++; month = 1; } else { month++; } } } DATE result = {year, month, day}; return result; }
// 输出日期 void print(DATE date) { printf("%d-%d-%d\n", date.year, date.month, date.day); }
int main() { DATE d1, d2; int k; scanf("%d %d %d", &d1.year, &d1.month, &d1.day); scanf("%d", &k); d2 = adddays(d1, k); print(d2); return 0;
原文地址: http://www.cveoy.top/t/topic/cwSK 著作权归作者所有。请勿转载和采集!