数字时钟C代码不会显示正确的时间

时间:2018-02-15 04:29:28

标签: c loops cygwin clock

在我的大学编程课上,我用C编码这个数字时钟。我无法弄清楚为什么没有出现正确的时间。分钟和秒都停留在数字60上。

这是代码。

#include <stdio.h>
#include <stdlib.h>
int main ()
{
    int h=0,m=0,s=0;
    printf("enter time in format of hh mm ss");
    scanf("%d%d%d", &h,&m,&s);
    start:;
    for (h;h<12;h++) {
        for (m;m<60;m++) {
            for (s;s<60;s++) {
                printf("%d:%d:%d",h,m,s);
                for (double i=0;i<99999999; i++) {
                    i++;
                    i--;
                }
            }
            s=0;
        }
        m=0;
    }  
goto start;
}

1 个答案:

答案 0 :(得分:2)

嗯,有一些问题:

#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>

int main ()
{
    int h=0,m=0,s=0;
    printf("enter time in format of hh mm ss");
    scanf("%d %d %d", &h,&m,&s);
start:
      for (;h<12;h++) {
          for (;m<60;m++) {
              for (;s<60;s++) {
                  printf("%d:%d:%d\n",h,m,s);
                  /*
                  for (double i=0;i<99999999; i++) {
                      i++;
                      i--;
                      */
                  sleep(1);

              }
              s=0;
          }
          m=0;
      }  
      goto start;
}
  1. 如果可能的话,尽量避免使用goto - 这个构造应该只使用几个地方......这不是其中之一
  2. for循环毫无意义 - 因为它会增加和减少相同的值 - 它将被卡在一个infinte循环中
  3. 未指定位数的scanf声明%d%d%d无法使用,请使用我的代码示例或尝试%2d%2d%2d
  4. 您未验证输入
  5. 在for循环中第一部分中变量的用途是什么
  6. 睡觉 - 会产生看起来不错但却不准确的东西 - 我建议阅读更多有关时间功能的内容......
  7. 重要说明:这个例子编码不好,但我希望它可以给你一个起点..就是这样,简单地说就是......坏了