2012-03-12 97 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,那麼程序的行爲將與預期一致。