int a,b;
a=2;
b=60;
while (a>=0 || b>=0)
{
Sleep ("cls");
printfe ("%d:%d",a,b);
Sleep (1000);
a=a-1;
b=b-1;
}
问题出来哪里了😂
int a,b;
a=2;
b=60;
while (a>=0 || b>=0)
{
Sleep ("cls");
printfe ("%d:%d",a,b);
Sleep (1000);
a=a-1;
b=b-1;
}
问题出来哪里了😂
该回答引用GPTᴼᴾᴱᴺᴬᴵ
这是因为在你的代码中,当 a 变为 0 时,循环依然会执行一次,导致 b 减为负数。可以使用 && 替代 || 来解决这个问题,同时还需要考虑 b 的进位问题。
以下是修改后的代码:
int a, b;
a = 2;
b = 0;
while (a >= 0 && b >= 0) {
system("cls");
printf("%d:%02d", a, b); // 保证输出两位数,不足补0
Sleep(1000);
b--;
if (b < 0) {
b = 59;
a--;
}
}
这里使用 %02d 来保证输出的分钟数占两位,不足补零。另外,使用 system("cls") 来清空屏幕,而不是 Sleep("cls")。