2012-04-04 5 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); 
    } 

} 

Выхода я получаю:

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 

переменной счетчика не уменьшает, когда я вхожу n или N, почему нет? Он должен уменьшаться, чтобы выйти из цикла, и использование break; тоже не работает!

+0

В вашей [c:] [i:] отладке вы должны добавить [ответ:]. Если вы посмотрите на цикл, единственное, что имеет смысл, - это то, что вы не думаете. Вы также должны проверить возвращаемое значение scanf. – Corbin

+0

Распечатайте 'answer', чтобы проверить, что вы на самом деле получаете. –

+0

Используйте цикл do while с переменной char 'answer', чтобы определить, должен ли цикл заканчиваться или нет. –

ответ

7

Возможно, вы захотите сделать answer типа char вместо int.

+0

Вау, я всегда попадаю в немые ловушки вроде этого. Спасибо! – eveo

Смежные вопросы