2016-10-25 19 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) –