2015-05-21 79 views
0
#include<stdio.h> 
int main() 
{ 
    int a,b; 
    char op; 
    scanf("%d",&a); 
    scanf("%c",&op); 
    scanf("%d",&b); 
    int w,x; 
    w=a+b; 
    x=a-b; 

    switch(op) 
    { 
     case'+': 
     { 
      printf("%d",w); 
      break; 
     } 
     case'-': 
     { 
      printf("%d",x); 
      break; 
     } 
     default: 
     { 
      printf("Invalid"); 
      break; 
     } 
    } 
    return 0; 
} 

每次輸入所述第二輸入–字符(+或 - )–它直接轉到無效在開關殼體。我在這裏做錯了什麼?C程序基本計算器

+3

使用調試器! –

回答

1

你的scanf序列沒有做你認爲它是什麼。在switch之前打印op的值,您將看到問題。

1

你的程序工作得很好。您的問題與輸入有關:使用123+456而不是在小數點和操作員之間按下輸入。

這裏是你的程序的一個例子:

$ ./basic 
456-123 
333$ 

我建議增加\n到每個printf()的格式字符串,以消除在同一行顯示的提示。