2017-04-11 103 views
-5
#include <stdio.h> 

void main() 
{ 
    char op; 
    int num1, num2, result; 


    printf("Enter 1 Value\n"); 
    scanf("%d",&num1); 
    printf("Enter 2 Value\n"); 
    scanf("%d",&num2); 
    printf("Enter Choice Value\n"); 
    scanf("%c",&op); 

    switch(op) 
    { 
     case '+': result = num1 + num2; 
      break; 
     case '-': result = num1 - num2; 
      break; 
     case '*': result = num1 * num2; 
      break; 
     case '/': result = num1/num2; 
      break; 
     default: printf("Invalid operator"); 
    } 
} 

所以這是我的代碼,一個簡單的計算使用開關的情況下,但它到底是什麼地方是錯誤的。它不適用於CODEBLOCKS IDE。我嘗試了30次,但仍然沒有運氣。請讓我知道,如果你可以找到它的任何錯誤。開關...案例不工作

非常感謝你提前

+6

「不工作」是不是一個很描述性問題發言。確切地說,是 – NathanOliver

+3

。哪裏不對?錯誤?沒有顯示?如果是後者,那是因爲你沒有打印結果,你只是在計算它。 –

+0

我的意思是它正在詢問2個數字,但只要它詢問「char」值,它就會停止工作,並在開關盒中打印默認選項 –

回答

0

的問題是,你的最後scanf("%c",...)消耗換行符(或空格,或者任何其他非數字字符),這是必要的,讓scanf("%d",&num2)完成號碼的輸入。因此,如果您輸入第二個數字,然後按enter,則此enter-字符將被掃描到您的op中並導致switch-陳述到default。 (順便說一句:如果你輸入,例如,123+,你的代碼應該工作)。

嘗試一個scanf,它會在手前消耗這些空白區域,然後將第一個不是空白的字符作爲您的操作員。注意空白%c之前,它代表的白色空間的序列被忽略:

scanf(" %c",&op); 
+0

你好, 你真不可思議,你做了我的一天,非常感謝。盟友爲我工作:) –

+0

如此熱情地標記答案被接受爲了關閉這個話題。謝謝! –