scanf не выполняется. Простой калькулятор

Рейтинг: 2Ответов: 1Опубликовано: 02.08.2023

Это код простого калькулятора на switch и case:

#include <stdio.h>
#include <locale.h>

int main()
{
    int n1,n2;
    char op;

    setlocale(LC_ALL,"Russian");

    printf("Введите два числа: ");
    scanf("%d%d",&n1,&n2);

    printf("Выберите операцию '+,-,*,/' ");
    scanf("%c",&op);

    switch (op)
    {
        case '+':
            printf("%d + %d = %d",n1,n2,(n1+n2));
            break;
        case '-':
            printf("%d - %d = %d",n1,n2,(n1-n2));
            break;
        case '*':
            printf("%d * %d = %d",n1,n2,(n1*n2));
            break;
        case '/':
            printf("%d / %d = %d",n1,n2,(n1/n2));
            break;
        default:
            printf("Такой математической операции не существует!\n");
    }

    return 0;
}

Но, когда я запускаю, он просит два числа. Естественно, ввожу, и он их принимает (убедился в этом, когда проводил debug). Но, когда дело доходит до выбора мат. операции, он не даёт вводить и сразу говорит, что такой операции не существует.

Ответы

▲ 3Принят

Сделайте так:

printf("Выберите операцию '+,-,*,/' ");
scanf("\n%c",&op);

Просто у вас считывается в op символ перевода строки.