为什么循环到后面n=0时代码不会停止运行,明明有逻辑运算符判断啊?
如果让n=0时程序停止运行,应该怎么改动?
判断要明确写==0或者>0需要明白的是在C++中除了0之外有值都是真的包括负数。
【以下回答由 GPT 生成】
#include <stdio.h>
int main() {
int n, m, a, sum;
while (scanf("%d", &n) && n) {
sum = 0;
while (n & (m--)) {
scanf("%d", &a);
sum += a;
n = n - 1;
}
printf("sum = %d\n", sum);
printf("n = %d\n", n);
}
return 0;
}
对于你的代码中的外层循环,判断条件是while (scanf("%d", &n) && n)
,这个条件只判断n是否非零,而不会判断n是否小于或等于0。所以在输入n为0时,循环不会结束。
为了使循环在n等于0时停止运行,你可以将循环条件改为while (scanf("%d", &n) && n > 0)
,这样循环会一直执行,直到n等于0或小于0时才会终止。
修改后的代码如下:
#include <stdio.h>
int main() {
int n, m, a, sum;
while (scanf("%d", &n) && n > 0) {
sum = 0;
while (n & (m--)) {
scanf("%d", &a);
sum += a;
n = n - 1;
}
printf("sum = %d\n", sum);
printf("n = %d\n", n);
}
return 0;
}
这样,当输入的n为0时,外层循环会结束,程序会停止运行。希望这可以帮助到你!如有更多问题,请随时提问。 ```
【相关推荐】