在while循环中打印零

Printing zero in while loop

本文关键字:打印 循环 while      更新时间:2023-10-16

我想应用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);带到外面;