心鲜旅人 发表于 2020-2-29 11:43:24

写的一个公式中出现了一个隐藏的bug,找不到啊。

代码如下:
#include <stdio.h>

int main()
{
        int a;
        int b;
    int c;
        int d;
        int n;
        float k2;
       
        a = ;
        b = ;
        c = ;
        d = ;
        n = a + b + c + d;
        k2 = 1.0 * n * (a * d - b * c) * (a * d - b * c) / ((a + b) * (c + d) * (a + c) * (b + d));
       
        printf("K2 = %.3f",k2);
       
        return 0;
}
例如,当输入40 10 30 20这四个数据时,可以正确打印结果4.762,
可当我输入3929157 167时输出的是1.779,然而正确答案是1.493。哪里有bug呢?
求解{:10_254:}

最后的魁拔 发表于 2020-2-29 11:49:59

会不会是除法的问题,在c语言中,3/2=1

jackz007 发表于 2020-2-29 12:15:28

       楼主分明是在怀疑编译器有 BUG 嘛,至少应该有其他和代码平行的信息,比如,问题描述,计算公式等等。

小笨笨难得糊涂 发表于 2020-2-29 12:57:59

正确答案就是1.779,你的标准答案哪来的?自己可以验算一下。

major_lyu 发表于 2020-2-29 13:14:01

自己验算好了吗?你的正确答案哪里来的?

心鲜旅人 发表于 2020-2-29 15:07:31

小笨笨难得糊涂 发表于 2020-2-29 12:57
正确答案就是1.779,你的标准答案哪来的?自己可以验算一下。

抱歉,我的老师答案错了,浪费了您的时间,真对不起。{:10_266:}

心鲜旅人 发表于 2020-2-29 15:09:11

major_lyu 发表于 2020-2-29 13:14
自己验算好了吗?你的正确答案哪里来的?

抱歉,我的老师答案错了,浪费了您的时间,真对不起。{:10_266:}

心鲜旅人 发表于 2020-2-29 15:09:51

jackz007 发表于 2020-2-29 12:15
楼主分明是在怀疑编译器有 BUG 嘛,至少应该有其他和代码平行的信息,比如,问题描述,计算公式等等 ...

抱歉,我的老师答案错了,浪费了您的时间,真对不起。{:10_266:}

心鲜旅人 发表于 2020-2-29 15:10:46

最后的魁拔 发表于 2020-2-29 11:49
会不会是除法的问题,在c语言中,3/2=1

抱歉,我的老师答案错了,浪费了您的时间,真对不起。{:10_266:}
页: [1]
查看完整版本: 写的一个公式中出现了一个隐藏的bug,找不到啊。