【发布时间】:2015-11-10 15:26:14
【问题描述】:
我正在尝试编写一个简单的计算器。
这是我的代码:
#include <stdio.h>
#include <stdlib.h>
int main(void) {
char operator = 0;
float num1 = 0.0;
float num2 = 0.0;
float sol = 0.0;
while (operator != 'q') {
printf("Operator: ");
scanf("%c", &operator);
printf("First Number: ");
scanf("%f", &num1);
printf("Second Number: ");
scanf("%f", &num2);
switch (operator)
{
case '+': sol = num1 + num2; break;
case '-': sol = num1 - num2; break;
case '*': sol = num1 * num2; break;
case '/': sol = num1 / num2; break;
case 'q': printf("Finished!"); exit(0);
default: printf("Error!"); exit(0);
}
printf("The solution is: %.2f\n\n", sol);
}
return 0;
}
所以对我来说,代码很好。如您所见,我使用 while 循环执行此操作,该循环可让您进行计算,直到您输入 'q' 作为运算符。循环的第一次运行运行良好,但随后变得令人毛骨悚然(我的控制台):
Operator: +
First Number: 5
Second Number: 4
The solution is: 9.00
Operator: First Number:
为什么程序不让我在第二次循环运行时输入运算符?
【问题讨论】:
-
处理错误时,不要只说“错误!”。您需要生成尽可能多的信息。
printf ("Error! Didn't expect operator %c (%d)\n", operator, operator);发生的事情是您在输入的第一行末尾捕获换行符。
标签: c switch-statement calculator break