|
编写一个函数,要求输入年月日时分秒,输出该年月日时分秒的下一秒。如输入2004年12月31日23时59分59秒,则输出2005年1月1日0时0分0秒。
#include <stdio.h>
#include <stdlib.h>
void next_second(int *year, int *month, int *day, int *hour, int *min, int *second);
int main()
{
int year, month, day, hour, min, second;
printf("input year: ");
scanf("%d", &year);
printf("\n");
printf("input month: ");
scanf("%d", &month);
printf("\n");
printf("input day: ");
scanf("%d", &day);
printf("\n");
printf("input hour: ");
scanf("%d", &hour);
printf("\n");
printf("input min: ");
scanf("%d", &min);
printf("\n");
printf("input second: ");
scanf("%d", &second);
printf("\n");
next_second(&year, &month, &day, &hour, &min, &second);
}
void next_second(int *year, int *month, int *day, int *hour, int *min, int *second)
{
int leap = 0;
if ((*year % 4 == 0 && *year % 100 != 0) || *year % 400 == 0)
leap = 1;
if ( *year < 1900 || *year > 2099 ) {
printf("请输入在 1900 年与2099 年之间的年数!\n");
exit(1);
}
if( (*second < 0 || *second > 59) || (*min < 0 || *min > 59) || (*hour < 0 || *hour > 23) || (*day < 0 || *day > 31) || (*month < 0 || *month > 12)){
printf("输入时间错误!\n");
exit(1);
}
if( *month == 2 || *month == 4 || *month == 6 || *month == 9 || *month == 11) {
if( *day > 30 ) {
printf("对应月份没有 31 天!\n");
exit(1);
}
}
if ( *month == 2 && *day > 28) {
if (!leap ) {
printf("非闰年2月最大天数为28天!\n");
exit(1);
}
}
if (*second != 59) {
printf("下一秒时间为:%d年%d月%d日%d时%d分%d秒\n", *year, *month, *day, *hour, *min, *second+1);
exit(0);
}
if (*min != 59) {
printf("下一秒时间为:%d年%d月%d日%d时%d分%d秒\n", *year, *month, *day, *hour, *min+1, 0);
exit(0);
}
if (*hour != 23) {
printf("下一秒时间为:%d年%d月%d日%d时%d分%d秒\n", *year, *month, *day, *hour+1, 0, 0);
exit(0);
}
if (*day < 28) {
printf("下一秒时间为:%d年%d月%d日%d时%d分%d秒\n", *year, *month, *day+1, 0, 0, 0);
exit(0);
}
if (*day == 28 && *month == 2 && leap == 0) {
printf("下一秒时间为:%d年%d月%d日%d时%d分%d秒\n", *year, 3, 1, 0, 0, 0);
exit(0);
}
if (*day == 29 && *month == 2) {
printf("下一秒时间为:%d年%d月%d日%d时%d分%d秒\n", *year, 3, 1, 0, 0, 0);
exit(0);
}
if (*day == 31 && *month == 12) {
printf("下一秒时间为:%d年%d月%d日%d时%d分%d秒\n", *year+1, 1, 1, 0, 0, 0);
exit(0);
} else if (*day == 31 && *month != 12) {
printf("下一秒时间为:%d年%d月%d日%d时%d分%d秒\n", *year, *month+1, 1, 0, 0, 0);
exit(0);
} else {
printf("下一秒时间为:%d年%d月%d日%d时%d分%d秒\n", *year, *month+1, 1, 0, 0, 0);
exit(0);
}
} |
|
|