任务描述
用switch语句编程设计一个简单的计算器程序。 要求根据用户从键盘输入的表达式(注意操作数与运算符之间没有空格): 操作数1 运算符op 操作数2 计算表达式的值,指定的算术运算符为加(+)、减(-)、乘(*)、除(/)。 编程要求:程序能进行浮点数的算术运算,有用户输入输出提示信息。 提示:因为除法中的除数不能为0,因此关键在于如何比较浮点变量data2和常数0是否相等。作为整型变量跟0的比较,简单的==就可以解决。而浮点型等实型变量需要用 if (fabs(data2) <= 1e-7) 进行判断(即判断其是否足够小)。若使用函数fabs,需要包含头文件math.h
注意事项
- 输入的数据中操作数与运算符之间没有空格,例如1+5
- 需要处理除数为0的情况。如果除数为0,则输出提示信息: 除数不能为0
- 需要判断用户输入的运算符是否是+-*/,如果符号不对,输出:运算符有误
- 结果输出保留2位小数
相关知识
为了完成本关任务,你需要掌握:switch语句使用。
switch语句使用
(1)If和switch都是用于进行选择判断的,但是switch一般用于离散的值的判断条件选择,如果值不是离散的,还需要进行一些转换,让其为离散的,然后再用switch语句进行判断,相关例子,比如统计各个分数段的学生人数。
(2)编码的时候,要根据具体问题的需要来进行选择,哪种方式方便就用哪种方式。
(3)本题理论上也可以用if-else实现,但是题目要求必须使用switch语句完成。在本题中,使用switch语句可读性更好。
测试说明
测试输入:
1+2
预期输出:
3.00
测试输入:
1/3
预期输出:
0.33
测试输入:
1/0
预期输出:
除数不能为0
测试输入:
1@3
预期输出:
运算符有误
代码实现
#include<stdio.h>
#include<math.h>
int main()
{
float a, b;
int flag = 0;
char op;
scanf("%f", &a);
scanf("%c", &op);
scanf("%f", &b);
switch(op)
{
case '+':
a += b;
printf("%.2f", a);
break;
case '-':
a -= b;
printf("%.2f", a);
break;
case '*':
a *= b;
printf("%.2f", a);
break;
case '/':
if(fabs(b) <= 1e-7)
{
printf("除数不能为0");
break;
}
else
{
a /= b;
printf("%.2f", a);
break;
}
default:
printf("运算符有误");
break;
}
return 0;
}
5054

被折叠的 条评论
为什么被折叠?



