题目要求是n个奇数的倒数和,你这个代码,只求了n/2个奇数的倒数和啊
#include<stdio.h>
int main()
{
int i,n;
double sum = 0;
scanf("%d",&n) ;
for(i=1;i<=2*n-1;i+=2)
sum += 1.0/i;
printf( "sum = %lf" , sum);
return 0;
}
人家提示你用双精度,你为什么非要单精度
float全改成double
%f改成%lf
前n项和,不是到n为止
#include<stdio.h>
int main()
{
int i,n;double sum;
scanf("%d",&n) ;sum=0;
for(i=1;i<= 2 *n-1;i++){
if(i%2!=0)
sum=sum+1.0/i;
}
printf( "sum = %lf" , sum);
return 0;
}
你的代码没错,这道题也没错。但是这道题说的不明白所以让你理解错了。
你理解的是1/1一直加到1/23,这样的话确实是2.22。
但是题目说的是奇数倒数的前23项,也就是1/1一直加到1/47
因为题目你就理解错了,题目让你求的是奇数分之一的和,并且项数的个数是 n 个。而你求的是 n 以内的奇数分支一的和。
一段网上现成的代码,看了后你就理解是什么意思了:
#include<stdio.h>
int main(void)
{
int n;
double i=1;
double s=0;
scanf("%d",&n);
for(;n>0;n--)
{
s+=1/i;
i+=2;
}
printf("sum = %.6lf",s);
return 0;
}
按照这个思路改改你的代码即可。