C语言编写简易计算器执行各类运算结果均为0问题求助
问题原因
你代码的核心问题是所有输出计算结果的printf语句中,错误给变量ris添加了取地址符&:
- C语言中
scanf函数需要将输入数据写入变量对应的内存空间,因此需要传入变量的地址(搭配&使用); - 但
printf的%f格式符要求传入的是浮点型变量的值,你传入&ris实际是把ris的内存地址当成值传入,程序将地址强行解析为浮点数后就会出现始终输出0的异常。
修复方案
把所有case分支里的输出语句里的&删除即可,比如case 1的语句修改为:
printf("\nThe result is: %f", ris);
其余case 2、case 3、case 4分支里的对应输出语句都做同样修改即可正常运行。
可选优化建议
你代码中判断除数为0的逻辑用了n2 == 0,因为浮点数存在精度误差,实际开发中更推荐判断浮点数的绝对值小于极小阈值来判定是否为0,示例如下:
// 需要先引入头文件 #include <math.h> if (fabs(n2) < 1e-6) { printf("Impossible division"); }
内容的提问来源于stack exchange,提问作者Ermi
相关产品推荐
相关产品推荐

