#include<stdio.h>
#include<math.h>
int main(){
int i,n;
int den=1;
int flag=1;
double sum=0,item=1;
scanf("%d",&n);
for(i=1;i<=n;i++){
sum=sum+item;
flag=pow(-1,i-1)*i;
den=den+2;
item=flag*1.0/den;
}
printf("%.3f\n",sum);
return 0;
}
测试图:
#include<stdio.h>
#include<math.h>
int main(){
int i,n;
int den=1;
int flag=1;
double sum=0,item=1;
scanf("%d",&n);
for(i=1;i<=n;i++){
flag=pow(-1,i-1)*i;
den=den+2;
item=flag*1.0/den;
sum=sum+item;
}
printf("%.3f\n",sum);
return 0;
}
②调整一下运算语句+顺序
#include<stdio.h>
#include<math.h>
int main(){
int i,n;
int den=1;
int flag=1;
double sum=0,item=0;
scanf("%d",&n);
for(i=1;i<=n;i++)
{
flag=pow(-1,i-1)*i;//分子
den=2*i; //分母(此时为偶数)
den-=1; //通过观察发现分母实际上为奇数 所以减去1即可
item=flag*1.0/den; //分数
sum=sum+item;//求和
}
printf("%.3f\n",sum);
return 0;
}
希望对题主有所帮助,可以的话,帮忙点个采纳!
题主的想法复杂了点,修改如下,供参考:
#include<stdio.h>
int main() {
int n, fm = 1, fz = 1, fh = 1;
double sum = 0;
scanf("%d", &n);
while (n--) {
sum = sum + (1.0 * fz * fh) / fm;
fh = -fh;
fm += 2;
fz++;
}
printf("%.3f\n", sum);
return 0;
}