Basi c калькулятор написан на C только добавляет - PullRequest
0 голосов
/ 30 января 2020

Я пытался сделать базовый c калькулятор, но всякий раз, когда я делаю свои входы, он добавляет, а не слушает мой операторский ввод.

Я знаю, что мои операторы if и if else не работают, но я не очень понимаю почему. Когда я компилирую, нет ошибок, и любой другой способ, который я пробовал, приводил ко многим ошибкам.

Вот код:

#include <stdio.h>

int main(void) {
double num1;
double num2;
double x;
double operator;

printf("First number:\n");
scanf("%lf\n", &num1);

printf("Second number:\n");
scanf("%lf\n", &num2);

printf("Select operator:\n Division\n Multiplication\n Subtraction\n Addition\n");
scanf("%lf\n", &operator);

if (operator == '/' ) {
    x=num1/num2;
}
else if (operator == '*') {
    x=num1*num2;
}
else if (operator == '-') {
    x=num1 - num2;
}
else {
    x=num1 + num2;
}

printf("Result: %lf\n", x);

return 0;
}

Приветствия!

Ответы [ 2 ]

2 голосов
/ 30 января 2020

Во-первых, я бы не стал называть вашу переменную оператором (это ключевое слово в C ++). Это ваша переменная:

double operator;

И здесь вы читаете его как число с плавающей запятой двойной точности:

scanf("%lf\n", &operator);

И теперь вы надеетесь рассматривать его как символ:

if(operator == '-')

Чтобы исправить это, измените тип оператора на char:

char operator;

и прочитайте его как char:

scanf("%c\n", &operator);
0 голосов
/ 30 января 2020

отправленный код всегда приводит к дополнительному результату, потому что ни одно из сравнений ('/', '-', '*') никогда не сравнится равным double

...