2013-09-28 2 views
0

저는 C로 프로그래밍하는 초보자입니다. 여기서 도와주세요. 숫자를 입력하도록 사용자에게 요청하는 루프를 작성하는 프로그램을 작성하려고합니다. 숫자가 양수이면 합계에이를 추가하고 음수이면 프로그램을 종료하고 평균, 최저 입력 및 최고 입력을 표시합니다. 불행히도 내가 낮고 높은 것들로 변할지라도 나는 낮은 것에 대해 '나노'를 계속 유지하고, 높은 것에 대해서는 음수가된다. 제발 도와주세요! 일반적인 실수를 -C 프로그래밍 프로그래밍 출력 N/A

#include<stdio.h> 
int main(void) 
{ 
    float input; 
    float total; 
    float low; 
    float high; 
    float average; 
    int count=0; 

    printf("\n\nPlease enter a positive number to continue or a negative number"); 
    printf(" to stop: "); 

    scanf("%f", &input); 

    while (input > 0) 
    { 
     count = count + 1; 
     printf("\nPlease enter a positive number to continue or a negative"); 
     printf(" number to stop: "); 
     scanf("%f", &input); 
     total = total + input; 

     if (low < input) 
     { 
      (low = input); 
     } 
     else 
     { 
      (low = low); 
     } 
    } 
    if (input < high) 
    { 
     (high = input); 
    } 
    else 
    { 
     (high = high); 
    } 

    average = total/count; 
    printf("\n\n\nCount=%d",count); 
    printf("\n\n\nTotal=%f",total); 
    printf("\nThe average of all values entered is %f\n", average); 
    printf("\nThe low value entered: %f\n", low); 
    printf("\nThe highest value entered: %f\n", high); 
    return 0; 
} 

다음의 gcc로 컴파일하고, 숫자 1, 5, 4를 테스트 한 후 -1 나는 당신은 쓰레기 값으로 피해자를 떨어

Count=3 


Total=8.000000 
The average of all values entered is 2.666667 

The low value entered: nan 

The highest value entered: -1.000000 
+0

당신이 당신의 변수를 초기화 할 수 있습니다에 의해 주어진 초기화 대답은 그렇다하고, 실행의 순서를 변경하십시오. 낮은 것을 아직 정의하지 않았기 때문에'low

답변

0

다음과 같은 출력을 얻을 초보자를위한. 특히,이 줄에서 일어나는 일 -

float total; 
float low; 
float high; 
float average; 

이 글을 쓸 때, 시스템은 변수에 메모리 위치를 할당합니다. 하지만 컴퓨터는 무한하지 않으므로 다른 곳에서 사용하던 메모리 위치를 사용하지만 더 이상 사용되지 않습니다. 대부분의 경우, '다른 것'은 자체적으로 (시간이 많이 걸리기 때문에) 정리하지 않기 때문에 거기에 있던 정보가 fdaba7e23f과 같이 남아 있습니다. 이것은 우리에게는 전혀 의미가 없으므로 이것을 쓰레기 값이라고 부릅니다.

당신과 같이, 변수를 초기화하여이 문제를 해결할 수 있습니다 - 당신이해야합니다

float total=0; 
float low; 
float high; 
float average=0; 

참고가 낮은 변수에 대한 몇 가지 추가 로직을 추가 할 수 있습니다. 당신이 볼 수 있듯이

printf("\n\nPlease enter a positive number to continue or a negative number"); 
printf(" to stop: "); 

scanf("%f", &input); 
low=input; 
high=input; 

while (input > 0) 
.... 
.... 

, 나는 당신의 코드를 복사 처음 scanf 후 두 줄을 추가 - 여기 한 가지 방법이다.

+0

저는 값을주는 변수를 변경했습니다. 낮은 값과 높은 값을 해결하기 위해 코드 블록을 제안하는 가장 좋은 방법은 무엇입니까? –

+0

@SalZ. 방법을 보여주기 위해 답변을 업데이트했습니다. –

+0

낮은 진술을하기 전에 낮은 = 입력 및 높은 입력 = 진술 그냥 낮은 및 높은 값을 음수로 인쇄 할 수 있습니까? –

0

당신이 그것을 알아 차 렸는지, 귀하의 수와 합계가 모두 엉망이되는지는 모르겠습니다.

는 @Drgin

int total = input; 
while (input > 0) 
{ 
printf("\nPlease enter a positive number to continue or a negative"); 
printf(" number to stop: "); 
scanf("%f", &input); 
count = count + 1; 
total = total + input; 
관련 문제