输入的值是0但是while循环没有停止
只有输入一个不是数字的值才听
scanf()的返回值是代表正确读入的数据项数,而输入0,scanf()是可以正常读取到的,其返回值是1,所以while循环不会停止,而输入的不是数字,scanf()不能正确读取到一个整数,它的返回值会是0,所以此时while循环才会退出;
如果要输入0退出,可以在while循环里加个条件x!=0即可。
测试代码如下:
参考链接:
#include <stdio.h>
int main(void){
int x,i,j,k,a=0,sum=0;
// https://blog.csdn.net/HNAKXR/article/details/81046708
// 当输入的数不是0,则循环计算,否则退出计算
while((scanf("%d",&x))!=0&&x!=0){
for(i=(x/5);i>=0;i--){
for(j=(x-i*5)/2;j>=0;j--){
sum++;
k=x-5*i-2*j;
}
}
a++;
}
printf("a=%d,sum=%d\n",a,sum);
return 0;
}
【以下回答由 GPT 生成】
问题的原因是scanf函数在读取失败时会返回EOF,而不是0。所以,while循环的条件应该改为while((scanf("%d", &x)) != EOF)
。
以下是修改后的代码:
#include <stdio.h>
int main() {
int x, i, j, k, a = 0, sum = 0;
while ((scanf("%d", &x)) != EOF) {
for (i = (x / 5); i >= 0; i--) {
for (j = (x - i * 5) / 2; j >= 0; j--) {
sum++;
k = x - 5 * i - 2 * j;
}
}
}
// 执行其他操作...
return 0;
}
这样修改后,当输入为0时,循环会停止。
【相关推荐】
把o改成EOF