Я пытаюсь сделать цикл, чтобы пользователь мог ввести число, и после каждого номера им предлагается, если они хотят ввести другой номер или нет. Если они выбирают что-либо, кроме 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;
тоже не работает!
В вашей [c:] [i:] отладке вы должны добавить [ответ:]. Если вы посмотрите на цикл, единственное, что имеет смысл, - это то, что вы не думаете. Вы также должны проверить возвращаемое значение scanf. – Corbin
Распечатайте 'answer', чтобы проверить, что вы на самом деле получаете. –
Используйте цикл do while с переменной char 'answer', чтобы определить, должен ли цикл заканчиваться или нет. –