Почему зацикливаеться while ? - C (СИ)

Узнай цену своей работы

Формулировка задачи:

Функция scanf() возвращает количество успешно прочитанных символов.. если в данном коде ввести НЕ число программа должна повторить цикл. так и есть но при повторном выполнении кода в цикле ф-ия scanf не выполняется ... ПОЧЕМУ идет зацикливание !!!__ ,??
do{
        printf ("VVedite nomer\n");
    }while  (!scanf ("%i",&i));

Решение задачи: «Почему зацикливаеться while ?»

textual
Листинг программы
int n, i;
    char s[300];
    
   do
   {
        printf ("Vvedite nomer:");
        n=scanf ("%i",&i);
        if(!n) gets(s);
   }while(!n);
   printf ("%d",i);

Объяснение кода листинга программы

  1. Объявлены две переменные: n и i.
  2. Введен цикл do, который будет выполняться до тех пор, пока условие в while не станет ложным.
  3. Внутри цикла выводится сообщение Vvedite nomer: и происходит чтение введенного числа в переменную i с помощью функции scanf.
  4. Если чтение числа не удалось (то есть n равно 0), то с помощью функции gets считывается строка, которую программа использует как строку-заполнитель.
  5. После выхода из цикла do, выводится значение переменной i.

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

11   голосов , оценка 3.636 из 5