使用switch语句制作一个简单的计算器

-2 c calculator switch-statement

我创建了一个程序,使用'switch'语句来制作一个简单的计算器.如果我先取整数输出然后取操作符输出,则b的值始终显示为"0".(代码在这里给出)但是,如果我首先采用运算符输出,程序工作正常.这可能是什么原因?谢谢.

int a;
int b;
char sign;

printf("Enter two required integers: ");
scanf("%d", &a);
scanf("%d", &b);

printf("Enter the operator(+ or - or * or /): ");
scanf(" %s", &sign);


switch(sign){

    case '+': printf("The summation of %d and %d is %d", a,b, a+b);
              break;

    case '-': printf("The subtraction of %d and %d is %d", a,b, a-b);
              break;

    case '*': printf("The product of %d and %d is %d", a,b, a*b);
              break;

    case '/': printf("The division of %d and %d is %d", a,b, a/b);
              break;

    default: printf("Enter the right operator noob!");
}

return 0;
Run Code Online (Sandbox Code Playgroud)

}

Roh*_*han 5

scanf(" %s", &sign);
Run Code Online (Sandbox Code Playgroud)

这是不正确的.signchar这样它只能存储1个字符,但是你正在尝试读取一个需要超过1个字符的字符串,以便覆盖内存.

而是使用

scanf(" %c", &sign);
Run Code Online (Sandbox Code Playgroud)