编程论坛's Archiver

yelusu 发表于 2008-5-21 20:37

用C语言编出2008年北京奥运会倒计时,天天.时时.分分.秒秒?

想了半天,不知道从何处入手。大家帮忙提示点思路咯!
不知道利用死循环能能编出来?

#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#include <string.h>

int i_sleep(int n)//延迟n秒函数
{
    time_t start,end;
    start=time(NULL);
    end=time(NULL);
    while(end-start<n)
    {
        end=time(NULL);
    }
    return 0;
}

int showtime()
{
        struct tm timestru,*tmtime;
        time_t endtime, curtime;
        long ttime;

        timestru.tm_year = 2008 - 1900;
        timestru.tm_mon = 8 - 1;         
        timestru.tm_mday = 8;        
        timestru.tm_hour = 20;
        timestru.tm_min = 0;
        timestru.tm_sec = 0;
      
        endtime = mktime(&timestru);
        curtime = time(NULL);
        ttime = endtime - curtime;
        tmtime = localtime(&curtime);
      
        printf("\n\n\n");
        printf("\t\t ———————————————————————— \n");
        printf("\t\t|        2008北京奥运倒计时       |\n");
        printf("\t\t|———————————————————————|\n");
        printf("\t\t|     当前时间 %04d年%02d月%02d日 %02d时%02d分%02d秒     |\n",
                tmtime->tm_year + 1900, tmtime->tm_mon + 1, tmtime->tm_mday ,
                tmtime->tm_hour, tmtime->tm_min, tmtime->tm_sec);
        printf("\t\t|———————————————————————|\n");
        printf("\t\t|    距北京奥运 %04d年%02d月%02d日 %02d时%02d分%02d秒    |\n",
                timestru.tm_year + 1900, timestru.tm_mon + 1, timestru.tm_mday,
                timestru.tm_hour, timestru.tm_min, timestru.tm_sec);
        printf("\t\t|———————————————————————|\n");      
        printf("\t\t|           还有%3d天%02d时%02d分%02d秒              |\n",
                ttime/86400, ttime%86400/3600, ttime%86400%3600/60, ttime%86400%3600%60);
        printf("\t\t ———————————————————————— \n\t\t");
      
        return 0;        
}

int main(int argc, char *argv[])
{
        while(1)
        {
                system("cls");
                showtime();
                i_sleep(1);
        }
        return 0;
}

结果:
[attach]34999[/attach]

以下是我找的程序,有一处错误!请高手帮忙解决了!
题目在以下附件里:[attach]35000[/attach]


[[it] 本帖最后由 yelusu 于 2008-5-27 17:22 编辑 [/it]]

[[it] 本帖最后由 yelusu 于 2008-5-27 17:24 编辑 [/it]]

yelusu 发表于 2008-5-22 13:10

咋就没人会呢!
用C语言好像是难了!
不知道用C++能不能做出来!

广陵绝唱 发表于 2008-5-24 21:51

用奥运会开办的时间,减去获取的现在的系统时间,就是剩余的时间了,应该很简单的吧。

伤心的我 发表于 2008-5-24 21:58

我想这应该没这么简单吧,不会是那种像电子表一样秒秒都在倒计时的那种吧!!

josen0205 发表于 2008-5-25 01:12

#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#include <string.h>

int i_sleep(int n)//延迟n秒函数
{
    time_t start,end;
    start=time(NULL);
    end=time(NULL);
    while(end-start<n)
    {
        end=time(NULL);
    }
    return 0;
}

int showtime()
{
        struct tm timestru,*tmtime;
        time_t endtime, curtime;
        long ttime;

        timestru.tm_year = 2008 - 1900;
        timestru.tm_mon = 8 - 1;         
        timestru.tm_mday = 8;        
        timestru.tm_hour = 20;
        timestru.tm_min = 0;
        timestru.tm_sec = 0;
       
        endtime = mktime(&timestru);
        curtime = time(NULL);
        ttime = endtime - curtime;
        tmtime = localtime(&curtime);
       
        printf("\n\n\n");
        printf("\t\t ———————————————————————— \n");
        printf("\t\t|        2008北京奥运倒计时       |\n");
        printf("\t\t|———————————————————————|\n");
        printf("\t\t|     当前时间 %04d年%02d月%02d日 %02d时%02d分%02d秒     |\n",
                tmtime->tm_year + 1900, tmtime->tm_mon + 1, tmtime->tm_mday ,
                tmtime->tm_hour, tmtime->tm_min, tmtime->tm_sec);
        printf("\t\t|———————————————————————|\n");
        printf("\t\t|    距北京奥运 %04d年%02d月%02d日 %02d时%02d分%02d秒    |\n",
                timestru.tm_year + 1900, timestru.tm_mon + 1, timestru.tm_mday,
                timestru.tm_hour, timestru.tm_min, timestru.tm_sec);
        printf("\t\t|———————————————————————|\n");       
        printf("\t\t|           还有%3d天%02d时%02d分%02d秒              |\n",
                ttime/86400, ttime%86400/3600, ttime%86400%3600/60, ttime%86400%3600%60);
        printf("\t\t ———————————————————————— \n\t\t");
       
        return 0;        
}

int main(int argc, char *argv[])
{
        while(1)
        {
                system("cls");
                showtime();
                i_sleep(1);
        }
        return 0;
}

[[it] 本帖最后由 josen0205 于 2008-5-25 12:26 编辑 [/it]]

njinji007 发表于 2008-5-25 01:41

有点那个,不太懂了.

伤心的我 发表于 2008-5-25 09:22

我还没学time这个库函数。它究竟是怎么用?

zhuwei168 发表于 2008-5-25 09:46

回复 5# josen0205 的帖子

顶顶你的代码
牛了~

zhuwei168 发表于 2008-5-25 09:48

time 函数还是不会怎么用
有人能教一下么?
或者推荐一下资料

yelusu 发表于 2008-5-27 17:20

写的确实不错!
只不过不是汇编语言写的有点遗憾!
time函数我也没学过!

StarWing83 发表于 2008-5-27 17:43

[url]http://hi.baidu.com/starwing/blog/item/44c352dac90cc6d8b6fd48b6.html[/url]
发个广告…………

wangjie456258 发表于 2008-6-20 02:10

我也没学过啊,不过上面的朋友写的好啊,有机会教教我这个刚学者啊,我的QQ号是707281634记得联系啊,

coming 发表于 2008-6-20 22:00

不太懂,我最近在想学学各个头文件的用法~~~

伤心的我 发表于 2008-6-20 22:09

閮侀椃

伤心的我 发表于 2008-6-20 22:10

閮侀椃鍛

蒙古狼 发表于 2008-6-21 19:05

自己去网上查啊,有很多啊
关于time的函数啊

页: [1]

Powered by Discuz! Archiver 6.1.0  © 2001-2007 Comsenz Inc.