Почему выход идет так? - PullRequest
       41

Почему выход идет так?

0 голосов
/ 03 сентября 2018

Когда я пытался сделать деление 6/3, вывод получился следующим образом 2 / -1431650288. Что не так в коде? Моя программа на c выглядит так:

#include <stdio.h>

int main(){

    char Operator;
    int num1, num2;

    printf("Enter the operator in which you want to perform calculation(+, -, *, /)\n");
    scanf(" %c", &Operator);

    if (Operator == '/'){
        printf("Enter two numbers: ");
    scanf(" %d %d", &num1, &num2);
     if (num2==0){
            printf("\a Denominator must be greater than 0.\n");
        }
        else{
            printf(" %d / %d", num1/num2);
        }
    } 
    else{
    printf("Enter two integer numbers: ");
    scanf(" %d %d", &num1, &num2);

    if(Operator =='+'){
        printf(" %d + %d = %d", num1, num2, num1+num2);
    }
    else if(Operator == '-'){
      printf(" %d - %d = %d", num1, num2, num1-num2);
    }
    else if(Operator == '*'){
      printf(" %d * %d = %d", num1, num2, num1*num2);
    }

    else{
       printf("\t \a Invalid Operator.\n");
    }

    }
}

1 Ответ

0 голосов
/ 03 сентября 2018

Эта строка:

printf(" %d / %d", num1/num2);

Первый '% d' является результатом num1 / num2, и этого достаточно. Второй% d и символ '/' не должны быть здесь. Измените его на:

printf(" %d ", num1/num2);

Кроме того, для вашей цели структура регистра переключателя больше подходит для читабельности кода (и я думаю, что для лучшей оптимизации)

...