C循环中墙上的啤酒问题
我已经使程序运行良好,但输出不完全是我想要的。它把“99瓶啤酒挂在墙上,99瓶啤酒,拿一瓶下来,传一圈,99瓶啤酒挂在墙上”,然后相应地下降。但是,我希望最后一个数值是98,而不是99。等等 当我使用数字-,它工作,但有这个问题。当我使用数字-1时,它只是不断循环99,到98,到99,到98,如果可以理解的话 我如何使它从最后一个数字中减去一,然后继续下降到0C循环中墙上的啤酒问题,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
#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程序员会使用数字--
(或者可能是--数字--
)。