Chinaunix首页 | 论坛 | 博客
  • 博客访问: 27712
  • 博文数量: 17
  • 博客积分: 2510
  • 博客等级: 少校
  • 技术积分: 180
  • 用 户 组: 普通用户
  • 注册时间: 2010-04-18 15:15
文章分类
文章存档

2010年(17)

我的朋友
最近访客

分类: C/C++

2010-05-07 17:50:05

最近有朋友说,他在笔试时,遇到下面这道题,大意是这样的:

  函数的功能实现: 输入 年 月 日 时 分 秒,结果显示下一秒的时间。 
  比如输入 2009年12月31日23时59分59秒 显示2010年01月01日0时0分0秒
  比如输入 2010年8月8日 22时0分59秒 显示2010年8月8日 22时1分0秒
  比如输入 2010年8月8日 22时8分7秒 显示2010年8月8日 22时8分8秒 


运行环境是在Linux下,要求用最简单的方法。

本人分享了自己的解答:


/*
  Author: Alvin
  函数的功能实现: 输入 年 月 日 时 分 秒,结果显示下一秒的时间。 
  比如输入 2009年12月31日23时59分59秒 显示2010年01月01日0时0分0秒
  比如输入 2010年8月8日 22时0分59秒 显示2010年8月8日 22时1分0秒
  比如输入 2010年8月8日 22时8分7秒 显示2010年8月8日 22时8分8秒 
*/


#include <stdio.h>
#include <memory.h>
#include <time.h>

int main()
{
    struct tm inputtm,*p;
    time_t timep;
    char buf[20];

    printf("Input the year,month,day,hour,min,sec:");
    scanf("%d%d%d%d%d%d",&inputtm.tm_year,&inputtm.tm_mon,&inputtm.tm_mday,

&inputtm.tm_hour,&inputtm.tm_min,&inputtm.tm_sec);

    memset(buf,0,sizeof(buf));

    sprintf(buf,"%d-%d-%d %d:%d:%d",inputtm.tm_year,inputtm.tm_mon,inputtm.tm_mday,

inputtm.tm_hour,inputtm.tm_min,inputtm.tm_sec);

    strptime( buf, "%Y-%m-%d %H:%M:%S", &inputtm);
    timep = mktime(&inputtm);

    while(1)
    {
        timep++;

        p = localtime( &timep );
        printf("%d-%d-%d %d:%d:%d\n",1900+p->tm_year,1+p->tm_mon,p->tm_mday,p->tm_hour,p->tm_min,p->tm_sec);

        sleep(1);
    }
    return 0;
}




本人水平有限,不能保证给出的是最佳答案。

阅读(829) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~