目的: 练习switch语句题目: 设计一个简单的计算器, 完成两个数的加减乘除--------------------------------------#include <stdio.h>int main(){ float x, y, result; char op; scanf("%f%c%f", &x, &op, &y); /* 输入不能有空格 */ switch (op) { case '+' : result = x + y; break; case '-' : result = x - y; break; case '*' : result = x * y; break; case '/' : if(y == 0.0) op = '#'; /*除数不为0*/ else result = x / y; break; default : op = '#'; /*op不为+ - * / 时做个标记,以便最后结果的输出*/ } if (op != '#') printf("%.2f%c%.2f=%.2f\n", x, op, y, result); else printf("error!\n"); return 0;}运行结果:=================================1.25*4↙1.25*4.00=5.00=================================--------------------------------------★ 在判断除数不为0时用到了 y == 0 ,好像听人说过, 实数之间是不能比较的, 我想可能是因为如果小数位数超过机器所能表示的长度时会进行舍去,这样机器中所存储的值会有所偏差,导致比较的结果不准。但用本程序试验了几次,好像如果进行简单的除运算没什么问题,是不是因为这时所比较的数是一个特例(即0.0)的原因呢? 有待解决……

评论