c语言编写2分钟倒计时2:00,1:59……0:00遇到问题,

img


下面是具体代码:
#include <stdio.h>
#include <Windows.h>
int main()
{
system("color a");
printf("2分钟倒计时开始!\n");
int a,b,n;
n = 120;
a = 2;
b = 59;
while (n>=1)
{
if (a==2)
{
printf("%d:00\n",a);
Sleep(1000);
}//完成对时间2:00的输出
a = 1;
if (b>=10)
{
printf("%d:%d\n", a, b);
b = b - 1;
Sleep(1000);
}//完成1:101:59的输出
if (b<=9&&b>=0)
{
printf("%d:0%d\n", a, b);
b = b - 1;
Sleep(1000);
}//完成1:00
1:09的输出
if (b<0&&b>=-50)
{
a = 0;
printf("%d:%d\n", a, b+60);
b = b - 1;
Sleep(1000);
}//完成0:100:59的输出
if (b < -50)
{
a = 0;
printf("%d:0%d\n", a, b + 60);
b = b - 1;
Sleep(1000);
}//完成0:00
0:09的输出
n = n - 1;

}
printf("%d\n", n);
printf("倒计时结束!");
return 0;

}//问题:输出结果中好像循环了124次。

因为你的逻辑有点混乱,a==2的 时候sleep了,n也需要--,a=1需要放在if(a==2)里面,
if 之间应该用 if else if,而不是全都是if语句,否则当b==10成立的时候,执行if(b>=10)以后,b-=1,b=9,下面的if(b>0&&b<10)成立,这里又会sleep,所以,你的输出是错的。

代码修改如下:

#include <stdio.h>
#include <Windows.h>
int main()
{
    system("color a");
    printf("2分钟倒计时开始!\n");
    int a,b,n;
    n = 120;
    a = 2;
    b = 59;
    while (n>=1)
    {
        if (a==2)
        {
            printf("%d:00\n",a);
            Sleep(1000);
            a = 1; //移动到if里面
            n--; //这里n--
        }//完成对时间2:00的输出
        
        if (b>=10)
        {
            printf("%d:%d\n", a, b);
            b = b - 1;
            Sleep(1000);
        }//完成1:101:59的输出
        else if (b<=9&&b>=0)
        {
            printf("%d:0%d\n", a, b);
            b = b - 1;
            Sleep(1000);
        }//完成1:001:09的输出
        else if (b<0&&b>=-50)
        {
            a = 0;
            printf("%d:%d\n", a, b+60);
            b = b - 1;
            Sleep(1000);
        }//完成0:100:59的输出
        else if (b < -50)
        {
            a = 0;
            printf("%d:0%d\n", a, b + 60);
            b = b - 1;
            Sleep(1000);
        }//完成0:000:09的输出
        n = n - 1;
    }
    printf("%d\n", n);
    printf("倒计时结束!");
    return 0;
}//问题:输出结果中好像循环了124次。