C循环中墙上的啤酒问题

C循环中墙上的啤酒问题,c,for-loop,C,For Loop,我已经使程序运行良好,但输出不完全是我想要的。它把“99瓶啤酒挂在墙上,99瓶啤酒,拿一瓶下来,传一圈,99瓶啤酒挂在墙上”,然后相应地下降。但是,我希望最后一个数值是98,而不是99。等等 当我使用数字-,它工作,但有这个问题。当我使用数字-1时,它只是不断循环99,到98,到99,到98,如果可以理解的话 我如何使它从最后一个数字中减去一,然后继续下降到0 #include <stdio.h> int main(int argc, char * argv[]) { int

我已经使程序运行良好,但输出不完全是我想要的。它把“99瓶啤酒挂在墙上,99瓶啤酒,拿一瓶下来,传一圈,99瓶啤酒挂在墙上”,然后相应地下降。但是,我希望最后一个数值是98,而不是99。等等

当我使用数字-,它工作,但有这个问题。当我使用数字-1时,它只是不断循环99,到98,到99,到98,如果可以理解的话

我如何使它从最后一个数字中减去一,然后继续下降到0

#include <stdio.h>

int main(int argc, char * argv[]) {
  int numBeers;

  for (numBeers = 10; numBeers >= 0; numBeers = numBeers) {
    printf("%d bottles of beer on the wall, %d bottles of beer\n", numBeers);
    printf("Take one down, pass it around, %d bottles of beer on the wall.\n\n",
        numBeers - 1);
  }

  return 0;
}
#包括
int main(int argc,char*argv[]){
整数;
for(numbers=10;numbers>=0;numbers=numbers){
printf(“墙上有%d瓶啤酒,%d瓶啤酒”,数字);
printf(“取下一瓶,在墙上传%d瓶啤酒。\n\n”,
数字-1);
}
返回0;
}

在这种情况下,必须更新循环变量。由于此循环将相同的值分配给自身,因此可能导致无限循环。 所以试着去做吧


对于(numbers=99;numbers>=1;numbers=numbers-1)

这真的是它打印的吗?因为您的第一个
printf
语句正在等待2个整数值,而您只给它一个。
numbers=numbers
…您认为这是什么?提示:
numbers--
--numbers
是两个不同的东西。而且,
numbers=numbers
是无用的,什么也不做。甚至可能被编译器删除。您在上一次迭代中也会遇到一个问题,其中数字等于0,因为递减后的最后一行将显示-1啤酒。@Anton谢谢您的朋友!顺便说一句,关于你的第一句话,我现在把numbers作为占位符用了两次。正确的做法是把
numbers-=1
(或
--numbers
)放在
for
语句中,把
numbers-1
放在
printf
中,但是有经验的C程序员会使用
数字--
(或者可能是
--数字--
)。