日期相关:
一个小小的工具函数,也行以后会用到。
#include<stdbool.h>
#include<stdio.h>struct date {int month;int day;int year;// 月 - 日 - 年
};bool isleap(struct date d); //判断是否为闰年
int NumberOfDays(struct date d); //判断天数
bool IsValidDate(struct date d); //检查是否是合法输入int main(void) {struct date today, tomorrow;int flag = 0;printf("Enter today's date:(format: month day year): ");scanf("%d %d %d", &today.month, &today.day, &today.year);if (IsValidDate(today))return 0;if (today.day != NumberOfDays(today)) {tomorrow = today;tomorrow.day++;} else if (today.month != 12) {tomorrow.day = 1;tomorrow.month = today.month + 1;tomorrow.year = today.year;} else {tomorrow.day = 1;tomorrow.month = 1;tomorrow.year = today.year + 1;}printf("Tomorrow is: %d - %d - %d\n", tomorrow.month, tomorrow.day, tomorrow.year);return 0;
}bool IsValidDate(struct date d) {bool flag = false;if (d.day <= 0 || d.day > 31) {printf("illegal input of day!\n");flag = true;}if (d.month <= 0 || d.month > 12) {printf("illegal input of month!\n");flag = true;}if (d.year < 0) {printf("illegal year!\n");flag = true;}return flag;
}int NumberOfDays(struct date d) {int day = 0;int days[12] = { 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31 };if (d.month == 2 && isleap)day = 29;elseday = days[d.month - 1];return day;
}bool isleap(struct date d) {bool leap = false;int year = d.year;if ((year % 4 == 0 && year % 100 != 0) || year % 400 == 0)leap = true;return leap;
}