You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.26 01:54:01