for(i=1;i<=n;i++)
{
summ=0;//这里加这个,每一次i的累加和要重置为0,不然下一个数的分母就多加了前一个数;
for(j=1;j<=i;j++)
{
summ+=j;
}
m=1.0/summ;
sum+=m;
}
你的summ在第二次循环的时候没有初始化为0,因此保留了第一次循环的值summ=1,于是第二次summ就变成了=1(初值)+1+2=4,算出来就是1+1/4=1.25,懂了吗。
因此在第二重循环前加一句summ=0;就可以了。
而且你这代码没必要在第二重循环的时候再求前面的和,可以定一个加数在下一次循环的时候增加i就可。
修改代码如下:
#include <stdio.h>
#include <stdlib.h>
int main() {
int n,i,temp;
double sum=0,add;
printf("请输入n值:");
scanf("%d",&n);
for(i=1,temp=0; i<=n; i++) {
temp+=i;
add=1.0/temp;
sum+=add;
}
printf("结果为%f\n",sum);
return 0;
}
本文如未解决您的问题请添加抖音号:51dongshi(抖音搜索懂视),直接咨询即可。