2301_81036089 2024-03-09 20:18 采纳率: 0%
浏览 33

c语言,为什么输出结果一直为零

img

img


如图,为什么一直为零,无论有没有初始化也是这样?有没有人来解答一下

  • 写回答

6条回答 默认 最新

  • 专家-赤兔[在线] 优质创作者: 编程框架技术领域 2024-03-09 20:18
    关注

    引自免费微信小程序:皆我百晓生

    在您提供的C++代码中,B的计算公式存在一些问题。根据您的描述和给出的代码片段,我们看到B的计算表达式如下:

    B = a * ((L - x) / c) + (L + x) / d;
    

    然而,在这个表达式中,由于cd分别代表两个根号下的距离值,它们的结果应该大于0。如果B始终输出为0,则可能的原因有以下几点:

    1. 输入的 x 值使得 (L-x)(L+x) 很小,以至于除以较大的 cd 后得到的结果非常接近于0。

    2. 可能是因为输入的 x 使得 scanf 函数读取出现问题,但鉴于您没有提供具体输入实例,这一点暂时无法确认。

    3. 还有可能是浮点数计算精度的问题,当涉及大量小数运算时,可能会因为舍入误差而导致结果看似为零。

    为了进一步排查,请尝试将中间变量cd的计算结果打印出来,看它们是否正确计算得到预期的非零数值:

    printf("c = %lf, d = %lf\n", c, d);
    

    如果cd计算错误导致分母过小或者为0,需要检查sqrt函数的调用以及xLr的赋值是否正确。

    此外,注意到您的代码中main函数定义有误,应当修正为:

    int main()
    

    确保编译器能够正确识别主函数并执行。同时,请确保所有必要的头文件包含无误,并且代码是在支持C++语法的环境下运行。

    评论 编辑记录

报告相同问题?

问题事件

  • 创建了问题 3月9日