2017-02-20 2 views
0

Hallo leider dieses kann eine dumme Frage, aber ich bin meine ersten Schritte in C nur zu bewegen und ich konnte keine konkrete Antwort finden, so:Ausgabe mit Summe in for-Schleife

Lassen Sie uns sagen, ich habe zu summiere einige ganze Zahlen, warum der Ausdruck sum += sum, in diesem Code nur die letzte Nummer zurückgibt ich Zeit 2 eingeben (lastNumber * 2)?

unsigned int count = 0, sum = 0; 
printf("How many numbers do you want to sum: "); 
scanf("%u", &count); 

for (int i = 1; i <= count; ++i) { 
    printf("enter the integer: "); 
    scanf("%u", &sum); 
    sum += sum; 
} 

printf("the sum of all the %u numbers is: %u\n", count, sum); 

PS: Dieses Problem wird gelöst, wenn ich den Ausdruck mit sum += x ersetzen; Aber ich kann nicht verstehen warum.

+0

'summe + = summe' ==' summe = summe + summe' sicher es ist 'summe * 2' –

+2

Wie wäre es mit einer weiteren Variablen für den Eingabezweck? –

+0

Bitte Code einrücken. –

Antwort

1

Mit der Linie

scanf ("%u", &sum); // Let's say the user enters "7" 

Sie den Wert der Summe bei jeder Iteration außer Kraft setzen mit einem neuen Wert vom Anwender eingegeben. Anschließend fügen Sie die Benutzervariable wieder mit

sum = sum + sum; // equivalent to sum = 7 + 7; 

Sie, dass durch die Verwendung von zwei Variablen vermeiden:

int sum = 0; 
int userIn = 0; 
scanf ("%u", &userIn); // userIn has now the value of the user input 
sum += userin; // Add that value to the sum 
0

Wenn Sie scanf tun (..., & sum) Sie tatsächlich seinen Wert außer Kraft setzen. Also, iterieren Sie jeweils nichts tun. Im Allgemeinen empfiehlt es sich, Variablen für jeden Zweck zu verwenden. Welche bedeutet - Variable enthält die Summe, und andere erhält die Benutzereingabe.

0

Sie wollen wahrscheinlich diese:

unsigned int count = 0, sum = 0; 
printf("How many numbers do you want to sum: "); 
scanf("%u", &count); 

for (int i = 1; i <= count; ++i) { 
    printf("enter the integer: "); 
    unsigned int value; 
    scanf("%u", &value); 
    sum += value; // or sum = sum + value; 
} 

printf("the sum of all the %u numbers is: %u\n", count, sum); 
0

Da sum += sum; entspricht sum = sum + sum; und (Summe + Summe) entspricht (2 * sum).