输入一个时间,某年某月某日,输出下一天
主要就是边界控制,不使用愚蠢写法,无技术含量,仅仅逻辑性考验
注释完善,自行理解
执行环境:Ubuntu18.04 CLion/GCC
WIndows环境也无需修改
Code:
#include <stdio.h>
#include <stdlib.h>
int main(void) {
int monArray[13] = {0, 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31};
printf("输入年月日[Format:xx年xx月xx日]:\n");
char *time = malloc(64);
scanf("%s", time);
int year, mon, day;
sscanf(time, "%d年%d月%d日", &year, &mon, &day);
if ((year % 4 == 0 && year % 100 != 0) || (year % 400 == 0))
monArray[2]++;
if ((mon <= 12 && mon >= 1) && (day <= monArray[mon])) {
if (day == monArray[mon]) {
if (mon == 12) {
day = 1;
mon = 1;
year++;
}
else {
day = 1;
mon++;
}
}
else {
day++;
}
}
else {
printf("Data Error\n");
return EXIT_FAILURE;
}
printf("Next Day is:%d年%d月%d日\n", year, mon, day);
return EXIT_SUCCESS;
}
