搜索
查看: 915|回复: 3
打印 上一主题 下一主题

分钟没有+1,秒也停在了59,程序就不动了,,,哪里出问题了?求教!!

[复制链接]
跳转到指定楼层
楼主
发表于 2014-1-27 21:53:48 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式
写一个时分秒 的c语言,发现一个问题,就是在 秒 走到59时,分钟没有+1,秒也停在了59,就不动了,,,哪里出问题了??求教!!~
      
推荐
发表于 2014-1-28 13:15:39 | 只看该作者
有没有试过在程序不动以后再输入一个值?
你会发现在输入一个值并按回车后程序又开始动了,并且秒数是从你刚刚输入的数开始的。
为什么是这样?我们来看代码。
  1. while(b<=59)
  2.         {
  3.                         scanf("%d",&c);
  4.                         while(c<=59)
  5.                         {
  6.                                 system("cls");
  7.                                 printf("%d:%d:%d",a,b,c);
  8.                                 Sleep(1000);
  9.                                 c++;
  10.                         }
  11.                         c=0;
  12.                         b++;
  13.         }
复制代码

当计算机执行到c=59后,再执行一次内层循环(while(c<=59)这一层)导致c变为60,内层循环的条件不再被满足,因此不再执行内层循环,此时计算机开始执行内层循环体后的代码,即
  1. c=0;
  2.          b++;
复制代码

到现在为止还很正常,但执行完以上两条语句后,只要b≠60,计算机就会继续执行外层循环(while(b<=59)这一层),此时计算机会读到……
  1. scanf("%d",&c);
复制代码

这句要求用户输入一个值分配给c变量,若你什么也不输入,计算机当然就在那儿干等着
同理当分钟到59时也会有同样的问题,只不过楼主还没碰到。
修改方法:在程序一开始设置时间的初始值,而不是在循环开始时设置。
附修改后的代码
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include <windows.h>
  4. int main()
  5. {
  6.         int a,b,c;
  7.     scanf("%d %d %d",&a,&b,&c);
  8.     while(a<=23)
  9.     {
  10.         while(b<=59)
  11.         {
  12.                         while(c<=59)
  13.                         {
  14.                                 system("cls");
  15.                                 printf("%d:%d:%d",a,b,c);
  16.                                 Sleep(1000);
  17.                                 c++;
  18.                         }
  19.                         c=0;
  20.                         b++;
  21.         }
  22.         b=0;
  23.         c=0;
  24.         a++;
  25.     }
  26.         system("pause");
  27.         return 0;
  28. }
复制代码

另外,下次提问题不要用图片,贴代码上来,方便别人复制到编译器里编译和修改。

评分

参与人数 1啊哈币 +2 收起 理由
李掌柜 + 2 赞一个!

查看全部评分

板凳
 楼主| 发表于 2014-1-28 14:25:05 | 只看该作者
981013 发表于 2014-1-28 13:15
有没有试过在程序不动以后再输入一个值?
你会发现在输入一个值并按回车后程序又开始动了,并且秒数是从你 ...

,明白了,这么回事 ,,十分感谢赛
地板
发表于 2014-2-25 17:44:01 | 只看该作者
981013 发表于 2014-1-28 13:15
有没有试过在程序不动以后再输入一个值?
你会发现在输入一个值并按回车后程序又开始动了,并且秒数是从你 ...

求教,那个图是怎么搞的,
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

广播台
特别关注
快速回复 返回顶部 返回列表