上次和大家分享了C语言如何计算两个日期之间相隔的天数,今天反其道行之,计算某天数之后的日期 输入:一组日期数据,再输入一个整数。格式为: 请输入一个日期:xxxx xx xx 请输入天数:xx 输出:所得日期为:xxxx xx xx 示例:请输入一个日期:2012 3 4 请输入天数:2 所得日期为:2012 3 6 代码:
#define _CRT_SECURE_NO_WARNINGS#include<stdio.h>#include<stdlib.h>typedef struct DATE{ int year; int month; int day;}DATE;int isrunyear (int year); //判断是否为闰年int month_days (int month, int year); //给定每个月的天数int main (){ DATE date1; DATE date2; int days; PRintf ("请输入一个日期:"); scanf ("%d%d%d", &date1.year, &date1.month, &date1.day); //为date1赋值 date2.year = date1.year; date2.month = date1.month; date2.day = date1.day; //将date1赋值给date2 printf ("/n请输入一个天数:"); scanf ("%d", &days); //核心代码,和上期思想一致 while (days) { days--; if (date2.day != month_days (date2.month, date2.year)) { date2.day++; } else { if (date2.month != 12) { date2.month++; date2.day = 1; } else { date2.year++; date2.month = 1; date2.day = 1; } } } printf ("所得日期为:%d %d %d", date2.year, date2.month, date2.day); system ("pause"); return 0;}int isrunyear (int year){ if (year % 400 == 0 || year % 4 == 0 && year % 100 != 0) return 1; else return 0;}int month_days (int month, int year){ switch (month) { case 1: case 3: case 5: case 7: case 8: case 10: case 12: return 31; case 4: case 6: case 9: case 11: return 31; case 2: return isrunyear (year) ? 29 : 28; default:return -1; }}欢迎关注微信公众号:C语言二伟
新闻热点
疑难解答