Erstellen Sie ein C-Programm, das fasst die Positiven und Negativen Zahlen Ohne arrays?
Einem Programm, fügt alle positiven zahlen und legt Sie in einer variable
und addiert alle negativen zahlen und legt Sie in einer variable. Am Ende sollte das Programm
drucken Sie die Werte in beiden Variablen, und auch berechnen Sie den Durchschnitt der beiden Variablen. Das Programm soll beendet werden, wenn der Benutzer die Typen null.
Dies ist, was ich habe, so weit.
int sumPositive, sumNegative;
int n, c = 1;
int main ()
{
printf("Enter Positive integers:\n");
scanf("%d", &n);
for (c = 1; c <=n ; c++)
{
scanf("%d",&n);
sumPositive = sumPositive + n;
}
printf("The value of positive numbers is: %d", sumPositive);
return 0;
}
- plz dont ask Zuordnung Frage bei Stackoverflow.
- Sie haben einen guten Anfang gemacht - was bestimmtes problem haben Sie jetzt ?
- Es zurück nicht eine richtige Antwort
- Sie sollten nicht die gleichen Variablennamen
n
sowohl die Anzahl der Eingänge und die Eingabe der Nummer. - Globale Variablen sind
0
initialisiert. - Sie gehen zu müssen, um die Anzahl der positiven Werte sowie die Summe; ebenso für die negativen Werte. Sie müssen eine Schleife
while ((scanf("%d", &value) == 1 && value != 0)
zu erfüllen 'weitermachen, bis der Benutzer 0' erforderlich. Sie können den Wert für die entsprechende Summe und erhöhe den entsprechenden Zähler bei jeder iteration. Am Ende können Sie drucken die erforderlichen Daten. Denken Sie daran, dass müssen Sie möglicherweise einen floating-point-Berechnung für den Durchschnitt. - Beachten Sie, dass Sie beginnen sollte das lernen jetzt zu vermeiden, Globale Variablen. Keine der Variablen muss global sein; jeder, daher sollten lokale. In der kurzen Frist, werden Sie nicht viel falsch machen mit 'Globale Variablen schlecht; lokale Variablen gut". In der Mittel-und lange Begriffe, die Sie lernen, über dynamisch zugewiesenen Variablen zu, und Sie erkennen, dass einige Globale Variablen sind sinnvoll, aber Sie Schränken Ihren Gebrauch so viel wie möglich.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Deine Schleife sollte wahrscheinlich verwenden, während, statt, da Sie auf eine Eingabe wartet, und nicht das ändern eines loop control variable. Also:
Könnte man auch eine Verringerung der Zeiten, die Sie schreiben
scanf
mithilfe einer while(true) - Schleife, wenn Sie wollen:Als Jonathan Leffler wies darauf hin, sollten Sie überprüfen das Ergebnis der
scanf
zu sehen, ob der Wert richtig gelesen wurde. Der einfachste Weg, um dies in die Schleife ist wie folgt:scanf()
selbst; es sagt Ihnen, ob es erfolgreich konvertiert einen Wert.while (scanf("%d", &in) == 1 && n != 0)
.scanf()
zurückgeben kann EOF beim Lesen auf EOF, und 0, wenn es nicht am Dateiende, aber es ist eine nicht-Ziffer in der Eingabe (z.B. ein Buchstabe). Der test für!= EOF
ist daher falsch; der!= 1
test korrekt ist (wenn es ein einzelnes conversion-Spezifikation in derscanf()
format-string). Wenn Sie brauchen, um keine Verwechslungen EOF und andere Fehler, und nehmen Sie dann die return-Wert vonscanf()
.Fangen!:)
Zum Beispiel, wenn geben
dann wird die Ausgabe
scanf()
so dass Sie nicht wissen, wenn es nicht zu Lesen, eine Nummer. Die Schleife musswhile (scanf("%d", &in) == 1 && n != 0)
.