在循环中打印零

时间:2012-03-12 04:47:37

标签: c++ c

我想应用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;如何避免它只退出?

3 个答案:

答案 0 :(得分:3)

首先,在运行while循环之前未能初始化a,因此程序的行为将是未定义的,它可能会立即终止。

其次,你在问题中说“while(a!= 0)”但你的代码却说“while(a!= -1)”。哪一个是正确的:0还是-1?也许如果您只是将-1更改为0,程序将按预期运行。

答案 1 :(得分:0)

您想写while( a != 0),但实际上您已写过while( a != -1)

解决这个问题。然后,当您输入0时,循环将退出。

答案 2 :(得分:-1)

我得到了我的回答,实际上我必须在我的scanf("%d",&a);外面循环;