2012-03-12 4 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

문제의 동작을 보여주는 최소한의 예를 생각해 낼 수 있습니까? 여기서 많은 일이 일어나고 있으며, 단일 문자 변수를 사용 했으므로이 절차가 수행해야하는 작업을 결정하기가 어렵습니다. –

+0

왜 printf ("- 1")입니까? 왜 그냥 인쇄하지 않습니까 ("- 1")? – DanRedux

+2

'while' 루프를 시작하기 전에'a'를 초기화하지 않았 음을 알았습니다. – chrisaycock

답변

-1

사실 내 답변을 가지고 있는데, 내 while 루프를 가지고 내 scanf("%d",&a);을 가져 가야합니다.

0

while(a != 0)으로 쓰고 싶은데 실제로는 while(a != -1)이라고 써야합니다.

수정. 그런 다음 0을 입력하면 루프가 종료됩니다.

3

우선 while 루프를 실행하기 전에 a을 초기화하지 못했습니다. 따라서 프로그램의 동작은 정의되지 않고 즉시 종료 될 수 있습니다.

둘째, "while (a! = 0)"이라고 질문했지만 코드에 "while (a! = -1)"이라고 표시되었습니다. 어느 것이 옳은가? 0 또는 -1? 아마도 -1을 0으로 변경하면 프로그램이 예상대로 작동합니다.

관련 문제