如果用C或者Cpp从txt中读取数据

想做一个倒计时的程序,最后显示的效果 是“”还剩余??小时??分钟??秒“” 这个程序貌似只可以在30分钟以内运行,希望大家能帮我看看如何优化下。

代码:
#include <iostream>
using namespace std;
#include <ctime>
//#include <math.h>//还用不到你,嘿嘿。

int main()
{
    int ii, h,m;
   for (int i=7200; i>0; i--)// i 代表多少秒
    {
        long t = time(NULL);
        for(;;)
                {
            long n = time(NULL);
            if(n != t)
                break;
        }
        system("cls");
      ii = i;
       h = i / 3600;
       m = 0;
      if (h != 0)
      {
         i = i - (3600 * h);
         m = i / m;
      }
      else
      {
         h = 0;
         m = i / 60;
         if (m != 0 )
            i = i - (60 * m);   
      }
         
         
      
      cout << h <<"hour"<< m <<"minute"<< i << "second" << endl;
      i = ii;
   }
}

作者: hardware   发布时间: 2011-05-18

表示本程序在我的电脑上运行失败……

作者: qgymib   发布时间: 2011-05-18

你的程序有误啊,正确的应该是这样:
代码:
/*
* File:   main.cpp
* Author: qgymib
*
* Created on 2011年5月18日, 上午11:07
*/


#include <iostream>
using std::cout;
using std::endl;
#include <ctime>

/*
*
*/
int main(int argc, char** argv)
{
    int ii, h, m;
   
    for(int i = 7200; i > 0; i--)
    {
        long t = time(NULL);
       
        while(1)
        {
            long n = time(NULL);
            if(n != t)
            {
                break;
            }
        }
       
        system("cls");
   
        ii = i;
        h = i / 3600;
        m = 0;
   
        if(h == 0)
        {
            i = i - 3600 * h;
            m = i / m;
        }
        else
        {
            h = 0;
            m = i / 60;

            if(m != 0)
            {
                i = i - 60 * m;
            }
        }
   
        cout << h << "hour" << m << "minute" << i << "second" << endl;
        i = ii;
    }
   
    return 0;
}


把 if (h != 0) 改为 if(h == 0)

作者: qgymib   发布时间: 2011-05-18

这个程序的计数范围取决于你的机器的字长,因为你的计时系统是以int类型来计时的,而int类型的计数范围取决于字长。
更好的方法是使用字符串类型变量来储存时间数据,这样计数的范围就取决于你的内存容量了。因为你是使用C++,推荐使用vector,其操作和数组差不多。

作者: qgymib   发布时间: 2011-05-18