切换语句执行多个案例 - C编程

时间:2016-11-19 14:44:48

标签: c switch-statement

我的代码: 我是初学者 - 所以对我很轻松 因此,以下代码中的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;
}

click for output:

1 个答案:

答案 0 :(得分:1)

scanf返回一个整数,表示从格式说明符中成功分配的变量数。

您没有检查scanf的返回值,而是继续使用您希望它分配值的变量。这总是一个错误。

scanf可能失败,您的循环继续使用之前的operator值。

你应该检查一下,在这种情况下,scanf返回2.否则,它没有得到有效的输入,你的变量也没有改变。