在输入运算符时,前面的换行符(\n)仍然存在输入缓冲区中,并被scanf(“%c”, &operator)读取为值。这会导致scanf直接读取了换行符,而不是实际的运算符。
解决这个问题的方法是在scanf(“%c”, &operator)之前添加一个空格,以去除输入缓冲区中的换行符。
int main(){
char operator;
double num1 , num2 ,result;
printf("请输入第一个数字:");
scanf("%lf",&num1);
printf("请输入运算符(+,-,×,÷):");
scanf(" %c",&operator);
printf("请输入第二个数字:");
scanf("%lf",&num2);
switch (operator)
{
case '+':
result = num1 + num2;
printf("结果:%.2lf\n",result);
break;
case '-':
result = num1 - num2 ;
printf("结果:%.2lf\n",result);
break;
case '*':
result = num1 * num2 ;
printf("结果:%.2lf\n",result);
break;
case '/':
if (num2 != 0){
result = num1 / num2;
printf("结果:%.2lf\n",result);
}
else {
printf("除数不能为0!\n");
}
break;
default:
printf("请输入有效的运算符。\n");
}
return 0;
}