我的代码: 我是初学者 - 所以对我很轻松 因此,以下代码中的switch语句执行多个case的语句。我似乎无法找到问题。一切似乎都是正确的。 检查输出图像和我的代码,我需要帮助。
//write a program that acts as a simple "printing" calculator
//enter expressions in the format "operator number"
//include operators to 'set accumulator' and 'end execution'
#include<stdio.h>
int main()
{
float number, accumulator;
char operator;
printf("Begin Calculations: (Enter 'S' operator to set the accumulator and 'E' operator to end execution)\n");
printf("-------------------\n\n");
while(operator != 'E')
{
scanf("%c%f", &operator, &number);
switch(operator)
{
case 'S':
accumulator = number;
break;
case '+':
accumulator += number;
break;
case '-':
accumulator -= number;
break;
case '*':
accumulator *= number;
break;
case '/':
accumulator /= number;
break;
case 'E':
printf("End of Calculations.\n");
break;
default:
printf("Enter proper Expression.\n");
break;
}
printf("= %f\n", accumulator);
}
return 0;
}
答案 0 :(得分:1)
scanf
返回一个整数,表示从格式说明符中成功分配的变量数。
您没有检查scanf
的返回值,而是继续使用您希望它分配值的变量。这总是一个错误。
scanf
可能失败,您的循环继续使用之前的operator
值。
你应该检查一下,在这种情况下,scanf
返回2.否则,它没有得到有效的输入,你的变量也没有改变。