7-4 计算前n项的和
7-4 计算前n项的和
目录
题目
编程计算
其中n的值在程序运行时由键盘输入。
输入格式:
输入一个正整数。
输出格式:
输出一个浮点数。
输入样例:
在这里给出一组输入。例如:
10
输出样例:
在这里给出相应的输出。例如:
0.841471
代码
思路
由题可知,将计算拆分成每一小块add,然后再拆分成上面pow(-1,n-1)
和下面的阶乘函数fact(2*n-1)
。
pow(-1,n-1)
当n-1为偶数时,add为正,否则add为负。
第一次尝试
#include<stdio.h>
double fact(int m)
{
int k=1;
for(int i=2;i<=m;i++)
{
k=k*i;
}
return k;
}
int main()
{
double i=-1,sum=0;
int n=1;
scanf("%d",&n);
for(int j=1;j<=n;j++)
{
double add=pow(i,j-1)/fact(2*j-1);
sum+=add;
}
printf("%.6f",sum);
return 0;
}
评测详情
错了一个测试点
错误分析
经过一点点尝试,终于发现double fact(int m)
函数的返回值的类型错误,本应返回double型变量,第一次代码却返回了int型,使结果错误。
第二次正确
#include<stdio.h>
double fact(int m)
{
double k=1;
for(int i=2;i<=m;i++)
{
k=k*i;
}
return k;
}
int main()
{
double i=-1,sum=0;
int n=1;
scanf("%d",&n);
for(int j=1;j<=n;j++)
{
double add=pow(i,j-1)/fact(2*j-1);
sum+=add;
}
printf("%.6f",sum);
return 0;
}