C-Programmierung nan-Ausgang
Ich bin sehr viel ein Anfänger in C Programmieren also bitte hier helfen. Ich versuche, ein Programm zu schreiben, dass loops, die den Benutzer auffordert, geben Sie eine Zahl, wenn die Zahl positiv ist, es fügt es zu der Summe, und wenn es negativ ist, beendet das Programm und zeigt den Durchschnitt, den niedrigsten input-und höchsten-Eingang. Leider egal was ich ändern mit dem low-und high-Dinge, die ich immer 'nan' für die low und was auch immer die negative Zahl für den hoch.. bitte um Hilfe!!
#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;
}
Nach dem kompilieren mit gcc und testen Sie es mit den zahlen 1, 5, 4, dann ist -1 ich bekomme die folgende Ausgabe
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
- Sie vielleicht wollen, initialisieren Sie Ihre Variablen. Sie vergleichen gegen einen unbekannten, wenn Sie
low < input
weil Sie noch nicht definiert niedrige noch. Und das gleiche, wenn Sie tuninput < hi
. In C, Variablen sind nicht initialisiert standardmäßig.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ihnen zum Opfer gefallen sind, Müll-Werte - ein häufiger Fehler für Anfänger. Insbesondere passiert in diesen Zeilen -
Wenn Sie schreiben, dass das system weist der Variablen einen Speicherbereich. Der computer ist jedoch nicht unbegrenzt, so dass es nur verwendet, ein Speicherbereich, verwendet, um verwendet werden, durch etwas anderes, aber nicht mehr verwendet wird. Die meisten der Zeit, obwohl, die 'etwas anderes' nicht zu bereinigen nach sich selbst (denn es würde viel Zeit in Anspruch nehmen), so dass Sie die Informationen, die es Links gibt, wie
fdaba7e23f
. Das ist völlig bedeutungslos für uns, so dass wir nennen es Müll Wert.Können Sie dieses Problem beheben, indem die Initialisierung der Variablen, wie so
Beachten Sie, dass Sie haben, fügen Sie einige zusätzliche Logik für die geringe variable. Hier ist ein Weg, es zu tun -
Wie Sie sehen können, ich habe gerade kopiert den code und fügte zwei Zeilen nach der ersten
scanf
.if
s in Ihremwhile
Schleife kümmern, die Verfolgung der Höhen und tiefen.Für eine Sache, ich weiß nicht, ob Sie es bemerkt haben, Ihre Zählung und insgesamt sind alle geschraubt.
Bitte die Reihenfolge der Ausführung ändern, abgesehen von der Initialisierung-die Antwort von @Drgin