曲径通幽论坛

 找回密码
 立即注册
搜索
查看: 4376|回复: 0
打印 上一主题 下一主题

输出下一秒时间

[复制链接]

4918

主题

5880

帖子

3万

积分

GROAD

曲径通幽,安觅芳踪。

Rank: 6Rank: 6

积分
34397
跳转到指定楼层
楼主
发表于 2009-7-25 23:20:23 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
编写一个函数,要求输入年月日时分秒,输出该年月日时分秒的下一秒。如输入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);
    }
        
   

}
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|曲径通幽 ( 琼ICP备11001422号-1|公安备案:46900502000207 )

GMT+8, 2025-6-18 19:14 , Processed in 0.066703 second(s), 22 queries .

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表