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;
}
测评详情

posted @ 2023-11-21 23:21  刘倩_网安2211  阅读(151)  评论(0编辑  收藏  举报