2016-10-25 18 views
-1

我有一个问题我assignements之一:浮点异常(核心转储) - C程序

  1. 编写一个程序,允许用户键入的形式 数操作数
  2. 的简单表达式
  3. 该程序评估表达式并在终端显示结果,精确到小数点后两位。
  4. 但是,程序只能调用scanf函数一次。

#include <stdio.h> 

int main(void) 
{ 
    int num1, num2, sum, difference, product, quotient; 

    num1 = 0; 
    num2 = 0; 

    printf("type in expression"); 
    scanf("%d%d", &num1, &num2); 

    sum = num1+num2; 
    difference = num1-num2; 
    product = num1*num2; 
    quotient = num1/num2; 


    switch (num1) { 
     case 2: printf("%d/%d=%d", num1, num2!=0 , quotient); 
        break; 
     case 1: printf("%d*%d=%d", num1, num2, product); 
        break; 
     case 0: printf("%d-%d=%d", num1, num2, difference); 
        break; 
     default: printf("%d+%d=%d", num1, num2, sum); 
        break; 
    }  
} 

该程序可以被编译,但是当我运行它,这个消息显示了:

浮点异常(核心转储)

是什么这个意思?另外,如果还有其他问题,请告诉我。

+3

什么是输入?该输入的预期输出是多少? –

+1

这意味着'num2'最有可能是0并且被0除是一个问题。 –

+0

为什么打印在开关()?虽然这与例外无关。 – MayurK

回答

0

我认为这是你需要的。

#include <stdio.h> 

    int main(void) 
    { 
     int num1=0, num2=0; 
     char operation= ' '; 

     printf("type in expression\n"); 
     scanf("%d %c %d", &num1, &operation, &num2); 

     switch (operation) { 
      case '/': { 
         if(0 == num2) //This is the solution for your issue. 
         { 
          printf("\nCan not perform %d/%d", num1, num2); 
         } 
         else 
         { 
          printf("\n%d/%d=%d", num1, num2, num1/num2); 
         } 
        } 
        break; 
      case '*': printf("\n%d * %d=%d", num1, num2, num1*num2); 
         break; 
      case '-': printf("\n%d - %d=%d", num1, num2, num1-num2); 
         break; 
      case '+': printf("\n%d + %d=%d", num1, num2, num1+num2); 
         break; 
      default: printf("\nInvalid operation[%c]", operation); 
         break; 
     } 
     return 0;  
    } 
+2

你刚刚为他做了功课。 –

+0

对不起。但我只是回答了他的问题。 – MayurK

+0

[阅读全文](http://meta.stackoverflow.com/questions/334822/how-do-i-ask-and-answer-homework-questions) –