上次和大家分享了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語言二偉 
新聞熱點
疑難解答