2015-05-27 6 views
0

Попытка решить этот вопрос у меня есть для HW, но я застрял в одной маленькой проблеме. У меня есть серия , если операторы, но программа просто пропускает инструкцию if, даже если условие выполнено. Пример: пользователь хочет выполнить 5 - 2, вместо перехода на второй , если заявление для проверки, когда пользователь вводил минус, программа просто пропускает каждый , если.C Программа пропущена, если заявления даже при соблюдении условий

Возникает вопрос:

Рассмотрим программу C, которая считывает два действительных числа с клавиатуры следует символ, где символ может быть одним из операторов +, -, *, /, или %, обеспечивающие сложение, вычитание, умножение, деление или остаток соответственно. Затем на экране появится результат . Например, если пользователь вводит: 2,0 3,0%, то ваш код будет отображен: 2% 3 = 2 Примечание: В приведенном выше примере входы представляют собой реальные числа, но остаток выполняет только целую операцию . Следовательно, два действительных числа должны быть отлиты от , что позволяет вычислять остаток. В случае, когда введен неверный оператор (например, $), сообщение об ошибке печатается на стандартный вывод , например. Неверный ввод!

Мой код:

#include <stdio.h> 
int main(void){ 

    double num1, num2, plus, minus, divide, mult, op; 

    printf("Enter two numbers and an operation you would like to perform on those number: \n"); 
    scanf("%lf %lf %lf", &num1, &num2, &op); 
    if(op=='+') 
    { 
    plus=(num1 + num2); 
    printf("%lf + %lf = %lf", num1, num2, plus); 
    } 
    else if(op=='-') 
    { 
    minus=num1-num2; 
    printf("%lf - %lf = %lf", num1, num2, minus); 
    } 
    else if(op=='/') 
    { 
    divide=num1/num2; 
    printf("%lf/%lf = %lf", num1, num2, divide); 
    } 
    else if(op=='%') 
    { 
    int num1, num2, remain; 
    remain= (num1%num2); 
    printf("%d %% %d = %d", num1, num2, remain); 
    } 
    else 
    { 
    printf("Invalid entry!"); 
    } 

    return 0; 
} 

бы очень признателен за помощь по этому вопросу, которые боролись за некоторое время на такой маленькой ошибки.

+2

Вы объявляете op как double, это должен быть символ. –

ответ

2

Попробуйте поставить линию

printf("op=%lf\n",op); 

прямо под вашим scanf заявление, чтобы увидеть, какое значение имеет op для различных операций. Это решает загадку того, почему были пропущены заявления if.

Затем, как @l-l предлагает, попробуйте объявить op как char op;.

0
#include <stdio.h> 

int main(void) 
{ 
    double num1, num2, plus, minus, divide, mult, op; 
    char operation; 
    printf("Enter first number"); 
    scanf("%lf", &num1); 
    printf("Enter second number"); 
    scanf("%lf", &num2); 
    printf("Enter operation"); 
    scanf(" %c", &operation); 

    if(operation=='+') 
    { 
     plus=(num1 + num2); 
     printf("%lf + %lf = %lf", num1, num2, plus); 
    } 
    if(operation=='-') 
    { 
     plus=(num1 - num2); 
     printf("%lf - %lf = %lf", num1, num2, plus); 
    } 
    if(operation=='/') 
    { 
     plus=(num1/num2); 
     printf("%lf/%lf = %lf", num1, num2, plus); 
    } 
    if(operation=='*') 
    { 
     plus=(num1 * num2); 
     printf("%lf * %lf = %lf", num1, num2, plus); 
    } 
    return 0; 
} 

Попробуйте это. Код скомпилирован и работает нормально.

Смежные вопросы