2017-02-20 7 views
0

のために申し訳ありませんこんにちはこれは愚かな質問かもしれないが、そう、私はCで私の最初のステップを移動していると私は、任意の特定の答えを見つけることができませんでした:問題は、ループ

はのは、私がする必要があるとしましょういくつかの整数を集計すると、式sum += sumはなぜこのコードで最後の数字だけを返しますか?時間2(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:私はsum += xで式を置き換える場合、この問題が解決されます。 しかし、なぜ私は理解できません。ライン

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

は、ユーザーが入力した新しい値で反復ごとに和の値を上書きして

+0

'sum + = sum' ==' sum = sum + sum'これが 'sum * 2'であることを確認してください –

+2

もう一つの変数を入力目的に使うのはどうですか? –

+0

コードをインデントしてください。 –

答えて

1

。あなたはscanfの(...、&合計)を行う場合

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

あなたが実際にその値をオーバーライドします。その後、あなたは2つの変数を使用していることを回避することができます

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

で再びユーザ変数を追加します。 だから、あなたは何もしません。 一般的に、変数を各目的に捧げることをお勧めします。つまり変数には合計が含まれ、他の変数にはユーザー入力があります。

0

あなたはおそらくこれが欲しい:

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

sum = sum + sum;に相当sum += sum;及び(2 *和)と同等(合計+合計)ので。