切换......案例不起作用

时间:2017-04-11 21:19:07

标签: c switch-statement calc

#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次,但仍然没有运气。如果您发现任何错误,请告诉我。

非常感谢你提前

1 个答案:

答案 0 :(得分:0)

问题是你的上一个scanf("%c",...)消耗了换行符(或空格,或任何其他非数字字符),这是让scanf("%d",&num2)完成输入数字所必需的。因此,如果您输入第二个号码,然后按enter,则会将enter个字符扫描到您的op并将switch - 语句引导至default 1}}。 (顺便说一句:如果你输入123+,你的代码应该可以工作)。

尝试使用scanf之前消耗此类空白区域,然后将第一个不是空格的字符作为运算符。请注意%c之前的空白,它表示要忽略的一系列空格:

scanf(" %c",&op);