Next date
enter a date , output the next date
#include "stdio.h" #include "stdlib.h" typedef struct { int year; int month; int day; }Date; int days[2][12] = { {31,28,31,30,31,30,31,31,30,31,30,31}, {31,29,31,30,31,30,31,31,30,31,30,31} }; int is_leap_year(int year) { return ((year%4 == 0 && year%100 != 0) || year%400 == 0); } int is_error_date(Date date) { return (date.day < 1 || date.day > days[is_leap_year(date.year)][date.month - 1] || date.month < 1 || date.month > 12 || date.year < 1); } Date next_day(Date cur) { int m_days = days[is_leap_year(cur.year)][cur.month - 1]; int n_day = cur.day + 1; // printf("%d\n", n_day); // printf("%d\n", m_days); if (n_day > m_days){ cur.day = 1; cur.month++; if (cur.month > 12){ cur.month = 1; cur.year++; } } else{ cur.day++; } return cur; } int main(int argc, char const *argv[]) { Date date; Date next; scanf("%d%d%d",&date.year,&date.month,&date.day); if (is_error_date(date)){ printf("error date\n"); exit(0); } next = next_day(date); printf("%d-%d-%d\n", next.year,next.month,next.day); return 0; }