2017-04-11 96 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

如此热情地标记答案被接受为了关闭这个话题。谢谢! –