为了账号安全,请及时绑定邮箱和手机立即绑定

请大神指教这段代码哪里错了

请大神指教这段代码哪里错了

C C++
路卡利欧 2016-10-19 15:59:14
//;利用函数求s=1/2^2+3/4^2+5/6^2+……+(2n-1)/(2n)^2,直到最后一项的值<=10^-4,并把计算结果作为函数返回值。 #include <stdio.h> #include <math.h> double p(); int main() { double a; a=p(); printf("result=%lf",a); return 0; } double p() { int n; double t,s=0; for(n=1;(int)fabs(t)*10000<=1;n++) { t=(2*n-1)/((2*n)*(2*n)); s=s+t; } return s; }运行结果显示的是0.000000,是哪里有问题?
查看完整描述

3 回答

已采纳
?
JustWannaHugU

TA贡献452条经验 获得超796个赞

#include <stdio.h>
#include <math.h>
double p();
int main()
{
    double a;
    a=p();
    printf("result=%lf",a);
    return 0;
}
double p()
{
    
    double t,s=0;
    for(double n=1;(int)(fabs(t)*10000)<=1;n++)
    {
        t=(2*n-1)/((2*n)*(2*n));
        s=s+t;
    }
    return s;
}


查看完整回答
反对 回复 2016-10-19
  • 路卡利欧
    路卡利欧
    咦!好神奇!!可以请你详细地解释一下为什么要把n改成double吗?还有什么是优先级的问题?
  • JustWannaHugU
    JustWannaHugU
    优先级的问题你再仔细看看代码,我加了个括号。 double n 的原因是分母过大的时候会直接就近似了,所以应该改为double类型
  • 路卡利欧
    路卡利欧
    原来是这样!我明白了,感谢指教!OwO
?
JustWannaHugU

TA贡献452条经验 获得超796个赞

把n改成double试试看
查看完整回答
反对 回复 2016-10-19
  • 3 回答
  • 0 关注
  • 1523 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信