我想用C语言编写一个简单的计算器,但是当我运行此代码时,它只会获取我的数字,而不会获取我的运算符,并且会从运行窗口中消失!当我将scanf运算符移动到另一个scanf的顶部时,它工作正常!为什么?!!!!
float num1, num2;
char op;
scanf("%f", &num1);
scanf("%f", &num2);
scanf("%c", &op);
switch(op)
{
case '+':
printf("%f + %f = %f", num1, num2, num1 + num2);
break;
case '-':
printf("%f - %f = %f", num1, num2, num1 - num2);
break;
case '*':
printf("%f * %f = %f", num1, num2, num1 * num2);
break;
case '/':
printf("%f / %f = %f", num1, num2, num1 / num2);
break;
default :
printf("error");
}
return 0;
答案 0 :(得分:2)
此调用中的格式字符串
scanf("%c", &op);
用于从输入缓冲区读取所有字符,包括空格字符。因此,在您输入了最后一个数字之后,此呼叫将读取换行符'\n'
。
代替使用
scanf(" %c", &op);
^^^
这允许跳过输入缓冲区中的空白字符。