|
有没有试过在程序不动以后再输入一个值?
你会发现在输入一个值并按回车后程序又开始动了,并且秒数是从你刚刚输入的数开始的。
为什么是这样?我们来看代码。
- while(b<=59)
- {
- scanf("%d",&c);
- while(c<=59)
- {
- system("cls");
- printf("%d:%d:%d",a,b,c);
- Sleep(1000);
- c++;
- }
- c=0;
- b++;
- }
复制代码
当计算机执行到c=59后,再执行一次内层循环(while(c<=59)这一层)导致c变为60,内层循环的条件不再被满足,因此不再执行内层循环,此时计算机开始执行内层循环体后的代码,即
到现在为止还很正常,但执行完以上两条语句后,只要b≠60,计算机就会继续执行外层循环(while(b<=59)这一层),此时计算机会读到……
这句要求用户输入一个值分配给c变量,若你什么也不输入,计算机当然就在那儿干等着。
同理当分钟到59时也会有同样的问题,只不过楼主还没碰到。
修改方法:在程序一开始设置时间的初始值,而不是在循环开始时设置。
附修改后的代码
- #include <stdio.h>
- #include <stdlib.h>
- #include <windows.h>
- int main()
- {
- int a,b,c;
- scanf("%d %d %d",&a,&b,&c);
- while(a<=23)
- {
- while(b<=59)
- {
- while(c<=59)
- {
- system("cls");
- printf("%d:%d:%d",a,b,c);
- Sleep(1000);
- c++;
- }
- c=0;
- b++;
- }
- b=0;
- c=0;
- a++;
- }
- system("pause");
- return 0;
- }
复制代码
另外,下次提问题不要用图片,贴代码上来,方便别人复制到编译器里编译和修改。 |
评分
-
查看全部评分
|