2012-04-04 9 views
1

私は、ユーザーが数字を入力できるようにループを作ろうとしています。そして、それぞれの数字の後に別の数字を入力するかどうかを尋ねるメッセージが表示されます。彼らがnまたはN以外を選択した場合、カウントが増加するので、ループは継続しますが、そうではありません!Cでこのループが機能しないのはなぜですか?

#include <stdio.h> 

main() { 

    int nums[10], i, tot = 0; 
    int answer; 
    double avg; 

    int count = 1; 

    for (i = 0; i < count; i++) { 
     printf("Enter number %d: ", i + 1); 
     scanf("%d", &nums[i]); 
     printf("Enter another number? "); 
     scanf(" %c", &answer); 
     tot += nums[i]; 
     if (answer != 78 && answer != 110) { 
      count++; 
     } 
     else { count = count - 1; } 
     printf("[c:%d][i:%d]", count, i); 
    } 

} 

出力私が手:私はnまたはNを入力したときに

Enter number 1: 2 
Enter another number? y 
[c:2][i:0]Enter number 2: 3 
Enter another number? y 
[c:3][i:1]Enter number 3: 4 
Enter another number? n 
[c:4][i:2]Enter number 4: 1 
Enter another number? n 
[c:5][i:3]Enter number 5: 2 
Enter another number? n 
[c:6][i:4]Enter number 6: 2 
Enter another number? n 
[c:7][i:5]Enter number 7: ^C 

カウント変数は減少しません、なぜ?ループから抜け出すために減少すると思われ、break;を使用するとどちらも機能しません!

+0

[c:] [i:]デバッグでは、[answer:]を追加する必要があります。ループを見ると、答えはあなたが思うものではないということだけが意味をなさないでしょう。 scanfの戻り値も確認する必要があります。 – Corbin

+0

実際に何が得られるかを確認するために 'answer'を出力します。 –

+0

ループが終了するかどうかを検出するためにdo 'ループをchar' answer '変数で使用します。 –

答えて

7

charの代わりにanswerをintとする必要があります。

+0

うわー、私はいつもこのようなダムの罠に陥る。ありがとうございました! – eveo

関連する問題