在while循环中打印零
Printing zero in while loop
我想应用while循环,并且已经编写了while (a!=-1)
;它应该退出,但它总是打印"0",我不知道为什么。你能解释一下吗?
#include <stdio.h>
int main()
{
long num;
int a,i,j;
int arr[10000];
float x;
while( a != -1)
{
scanf("%d",&a);
int sum=0;
for(i=0;i<a;i++)
{
scanf("%d",&arr[i]);
sum = sum + arr[i];
}
x = sum%a;
if (x == 0)
{
int z = sum/a;
int y=0;
for(j=0;j<a;j++)
{
if (arr[j]>z)
{
y = (arr[j] - z) + y ;
}
}
printf("%d",y);
}
else
printf("-1");
}
}
我认为它正在打印y
;如何避免,使它只退出?
首先,在运行while循环之前未能初始化a
,因此程序的行为将是未定义的,它可能会立即终止。
第二,您在问题中说了"while(a!=0)",但您的代码说了"while(a!=-1)"。哪一个是正确的:0还是-1?也许如果您只是将-1更改为0,程序将按预期运行。
您想要编写while( a != 0)
,但实际上已经编写了while( a != -1)
。
解决这个问题。然后,当您输入0
时,循环将退出。
我得到了答案,实际上我必须在循环时将我的scanf("%d",&a);
带到外面;
相关文章:
- 如何循环打印顶点结构
- 在循环C++中指定字符串之后,不会打印该字符串
- 了解嵌套循环打印星号图案
- 在无向图中打印循环
- C++ 无法在字符数组中使用 for 循环打印字母模式
- C++声明双链表,使用两个 for 循环双向遍历列表并打印
- 为什么我在尝试在单向链表中打印元素时会出现这个永无止境的循环
- 如何在 for 循环中的特定时间内获取要打印的额外值
- 如何在循环中打印两个相邻的行,同时在 c++ 中将它们都保留在一行中
- :CIN 不断打印用户在每次循环后输入的内容
- 打印系列时循环出现问题
- 打印循环链表
- 为什么这个 IF 语句在循环内不打印
- 该程序没有产生输出,而是卡在一个循环中,几秒钟后消失并打印被杀死?
- 如何在循环中使用scanf,将值存储到一个变量中,然后打印出来?
- 我的 if 语句打印在我的 while 循环中的每个 if 语句上,无论它是否为假
- 为什么我在使用 for 循环和 cout 命令时没有打印出矢量
- 如何在c++中仅使用for循环打印此代码的垂直直方图
- 递归回溯打印长度为N的二进制数的所有组合,而不使用循环
- 如何编写一个c++数组打印循环,每次迭代从不同的点开始