首页 行业资讯 宠物日常 宠物养护 宠物健康 宠物故事

c语言高手急救:计算以下公式的值:s=1\1^2+1\2^2+1\3^2+……+1\n^2...

发布网友

我来回答

2个回答

热心网友

这个显然不能用整数除法来做,如果用整数除法的话,大概结果总是1.

我也没有什么好的思路,想到一个笨办法,用两个数模拟分数加法,比如 1/2 + 1/3,你就模拟通分运算,== 3/6 + 2/6 = 5/6,分别记录当前分子和分母,然后一直这样计算下去,因为求分母的最小公倍数有现成算法,而且从一到n可以用循环来实现,所以实际编程的难度并不像表面上看起来这么繁琐复杂。最后求得分数后可以再用double型出发来求小数解,这样在除法以前是没有计算误差的。

另外你的式子给的是 \ 而实际除法应该为 /, C语言我没有试过两者差别,但是matlab里两者是不一样的,这里请多加注意。

我的方法比较一般,希望有好的方法的话楼主贴出来,大家共同学习。

热心网友

int main()
{
int n,i;
double s = 0;
scanf("%d",&n);
for(i = 1;i <= n;i++)
{
s += 1/(double)(i*i);
}
printf("%f\n",s);
return 0;
}

声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com