c语言,这个while循环有什么问题,请详细解析一下,谢谢

为什么这个while循环不停止,而把n=n-1改成了while(n-->0);就可以呀;
2025-04-06 08:17:48
推荐回答(1个)
回答1:

一、为什么这个while循环不停止

当执行代码 

pound(times);

此时, n = 5,下面的代码:

while(n>0)
  printf("#");

循环条件 n>0  --> 满足条件 -->运行循环体 --> 由于循环体中并没有改变终止条件的语句(即 n 始终是 5) --> 进入“死循环”

二、而把n=n-1改成了while(n-->0);就可以呀

能正常运行的原因在于:在循环过程中,循环条件是改变的(逐渐减小)。

如下代码:

while(n-->0)
  printf("#");

其循环过程(以 n = 5 为例):

  1. 第1次运行:n--后,n = 4,循环条件满足,继续

  2. 第2次运行:n--后,n = 3,循环条件满足,继续

  3. 第3次运行:n--后, n = 2,循环条件满足,继续

  4. 第4次运行:n--后, n = 1,循环条件满足,继续

  5. 第5次运行:n--后,n = 0 , 循环条件不满足,终止

三、

综合推测,代码可以修改为:

void pound(int n)
{
while(n>0){
printf("#");
n = n-1;
}
printf("\n");
}