#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");
}
}
所以这是我的代码,一个使用switch case的简单计算但它到底有什么问题。它在CODEBLOCKS IDE中不起作用。我尝试了30次,但仍然没有运气。如果您发现任何错误,请告诉我。
非常感谢你提前
答案 0 :(得分:0)
问题是你的上一个scanf("%c",...)
消耗了换行符(或空格,或任何其他非数字字符),这是让scanf("%d",&num2)
完成输入数字所必需的。因此,如果您输入第二个号码,然后按enter
,则会将enter
个字符扫描到您的op
并将switch
- 语句引导至default
1}}。 (顺便说一句:如果你输入123+
,你的代码应该可以工作)。
尝试使用scanf
之前消耗此类空白区域,然后将第一个不是空格的字符作为运算符。请注意%c
之前的空白,它表示要忽略的一系列空格:
scanf(" %c",&op);