c语言高手急救:计算以下公式的值:s=1\1^2+1\2^2+1\3^2+……+1\n^2即数列第n项为n的平方的倒数,n由键盘输入(1

来源:学生作业帮助网 编辑:作业帮 时间:2024/05/02 17:23:10
c语言高手急救:计算以下公式的值:s=1\1^2+1\2^2+1\3^2+……+1\n^2即数列第n项为n的平方的倒数,n由键盘输入(1

c语言高手急救:计算以下公式的值:s=1\1^2+1\2^2+1\3^2+……+1\n^2即数列第n项为n的平方的倒数,n由键盘输入(1
c语言高手急救:计算以下公式的值:s=1\1^2+1\2^2+1\3^2+……+1\n^2
即数列第n项为n的平方的倒数,n由键盘输入(1

c语言高手急救:计算以下公式的值:s=1\1^2+1\2^2+1\3^2+……+1\n^2即数列第n项为n的平方的倒数,n由键盘输入(1
int main()
{
int n,i;
double s = 0;
scanf("%d",&n);
for(i = 1;i

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

全部展开

这个显然不能用整数除法来做,如果用整数除法的话,大概结果总是1.
我也没有什么好的思路,想到一个笨办法,用两个数模拟分数加法,比如 1/2 + 1/3,你就模拟通分运算,== 3/6 + 2/6 = 5/6,分别记录当前分子和分母,然后一直这样计算下去,因为求分母的最小公倍数有现成算法,而且从一到n可以用循环来实现,所以实际编程的难度并不像表面上看起来这么繁琐复杂。最后求得分数后可以再用double型出发来求小数解,这样在除法以前是没有计算误差的。
另外你的式子给的是 \ 而实际除法应该为 /, C语言我没有试过两者差别,但是matlab里两者是不一样的,这里请多加注意。
我的方法比较一般,希望有好的方法的话楼主贴出来,大家共同学习。

收起