2012-03-12 99 views
-2

我想申请一个while循环并写入了while (a!=-1);它应该退出,但它总是打印“0”,我不知道为什么。你可以解释吗?在while循环中打印零位

#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;如何避免这样只会退出?

+0

你能想出一个显示问题行为的最小例子吗?这里有很多事情要做,因为你使用了单字母变量,所以很难确定这个过程应该做什么。 – 2012-03-12 04:50:28

+0

为什么printf(“ - 1”)?为什么不打印(“ - 1”)? – DanRedux 2012-03-12 04:50:34

+2

我注意到在进入'while'循环之前你还没有初始化'a'。 – chrisaycock 2012-03-12 04:50:57

回答

-1

我得到了我的答案,实际上我不得不把我的scanf("%d",&a);以外的while循环;

0

你想写while(a != 0),但你实际上写了while(a != -1)

修复此问题。然后,当您输入0时,循环将退出。

3

首先,在运行while循环之前,您未初始化a,所以程序的行为将是未定义的,它可能会立即终止。其次,你在你的问题中说“while(a!= 0)”,但你的代码说“while(a!= -1)”。哪一个是正确的:0或-1?也许如果你只是将-1改为0,那么程序的行为将与预期一致。