Почему моя программа, при репите печатает милиард надписей? - C (СИ)

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

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

#include <stdio.h>
#include <stdlib.h>
 
int main()
{
    int n, i, k, t;

    printf("Vvedity 5znacno chislo\n");
    t=scanf("%5d", &n);
    k = 10000;
    if (t==!0 && n<100000 && n>9999)
 
    for(i = 0; k != 0; i++) {
        printf("%d chislo =  %d\n",i+1, n/k%10);
        k/=10;
    }
 
    else {
        printf("Oshibka,nepravilny vvod\n \0");
        main();
 
    }
    return 0;
}
Почему при вводе символа, она запускает цикл else милион раз ? Еще заметил странность ,если ввести 0 то напечатет надпись 2 раза, а если шесть нулей то 3 раза. В чем подвох, опытные программисты ?

Решение задачи: «Почему моя программа, при репите печатает милиард надписей?»

textual
Листинг программы
while((c = getchar()) != '\n' && c != EOF);

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

  1. Программа считывает символ из стандартного ввода (по умолчанию это клавиатура) в переменную типа char с именем c.
  2. Процесс считывания продолжается до тех пор, пока не будет считан символ новой строки (\n) или пока не достигнется конец файла (EOF).
  3. При каждом считывании символа, программа проверяет его значение на равенство новой строке или EOF.
  4. Если условие истинно, то программа прекращает цикл и переходит к следующей итерации.
  5. Если условие ложно, то программа продолжает считывать символы до тех пор, пока не достигнет новой строки или EOF.
  6. Если программа достигает EOF без считывания новой строки, то она выводит миллиард сообщений, что может быть нежелательным.
  7. Чтобы исправить эту проблему, можно добавить дополнительную проверку после каждой итерации цикла, чтобы проверить, достигнут ли EOF, и прекратить цикл, если это так.

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


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

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

5   голосов , оценка 3.6 из 5
Похожие ответы