我的代码: 我是一个初学者 - 所以对我要宽松一些 因此,下面代码中的 switch 语句执行了不止一种情况的语句。我似乎找不到问题。一切似乎都是对的。 查看输出图像和我的代码,我需要帮助。
//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;
}
最佳答案
scanf
返回一个整数,指示从格式说明符成功分配的变量数。
您没有检查 scanf
的返回值,而是继续使用您希望它赋值的变量。这始终是一个错误。
scanf
可能失败,并且您的循环将继续使用 operator
的先前值。
您应该检查,在这种情况下,scanf
返回 2。否则,它没有获得有效的输入,并且您的变量没有更改。
关于c - Switch 语句执行不止一种情况 - C 编程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40694163/