Scanf, ввожу не цифры, а буквы, чтобы вызвать условный оператор else - C (СИ)

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

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

Как сделать так? допустим я ввожу цифру не от 0 до 100, а какое нибудь слово, после чего вызывался бы условный оператор else?
printf("Enter your current percent in the class: ");
    scanf("%lf", &currentGrade);
    if ( (currentGrade>=0) && (currentGrade<=100 ) ) 
        currentGrade = currentGrade;
    else {
        printf("Invalid formatting. Ending program.");
        _Exit (EXIT_SUCCESS);
    }

Решение задачи: «Scanf, ввожу не цифры, а буквы, чтобы вызвать условный оператор else»

textual
Листинг программы
    int n = scanf("%lf", ¤tGrade);
    if ( n == 1 && currentGrade >= 0 && currentGrade <= 100 ) 
        currentGrade = currentGrade;
    else {
        printf("Invalid formatting. Ending program.");
        _Exit (EXIT_SUCCESS);
    }

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

  1. int n = scanf(%lf, &currentGrade); - ввод значения с помощью функции scanf в переменную currentGrade. Возвращает количество успешно введенных значений, в данном случае ожидается 1 значение.
  2. if ( n == 1 && currentGrade >= 0 && currentGrade <= 100 ) - проверка условия, что было введено корректное значение. Если условие выполняется, то значение currentGrade не изменяется.
  3. currentGrade = currentGrade; - присваивание текущего значения переменной currentGrade.
  4. else - если условие в предыдущем операторе не выполнилось.
  5. printf(Invalid formatting. Ending program.); - вывод сообщения об ошибке ввода.
  6. _Exit (EXIT_SUCCESS); - завершение программы с кодом успеха.

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

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