请编写函数fun,其功能是:按下列公式输出前n个分数计算后y 的值。

img

img


例如,在主函数中从键盘给n输入10后,输出为:y=-0.51。

注意:部分源程序在考生文件夹下的文件“循环.c”中。 请勿改动主函数 main 和其他函数中的任何内容,仅在函数 fun 的花括号中填入你编写的若干语句。

double fun(int n)
{
    double res=0;
    int flag=1,fz=3,fm=7;
    for(int i=1;i<=n;i++)
    {
        res += fz*1.0/fm*flag;
        flag = -flag;
        fz+=2;
        fm++;
    }
    return res;
}

double fun(int n) {
    int i, sign = 1, numerator = 3, denominator = 7;
    double sum = 0.0;

    for (i = 1; i <= n; i++) {
        sum += sign * (double) numerator / denominator;
        sign *= -1;
        numerator += 2;
        denominator += 1;
    }

    return sum;
}

供参考:

double fun(int n)
{
    int i;
    double s;
    for (i = 1, s = 0; i <= n; i++)
        s += i % 2 ? (2 * i + 1) * 1.0 / (i + 6) : (2 * i + 1) * (-1.0) / (i + 6);
    return s;
}

不知道你这个问题是否已经解决, 如果还没有解决的话:
  • 以下回答来自chatgpt:

    答案:

    #include<stdio.h>
    #include<stdlib.h>
    
    double fun(int n){
        double res=0;
        for(int i=1;i<=n;i++){
            res-=double(n)/double(n+i);
        }
        return res;
    }
    
    int main(){
        int n;
        scanf("%d",&n);
        double y=fun(n);
        printf("%.2lf",y);
        return 0;
    }
    

    解析:直接根据题目要求进行求解,代码中 fun() 函数直接模拟公式计算,注意需要将其中一项的 n 值转化为 double 类型,确保小数除不会出错。


如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^您好,我是有问必答小助手,您的问题已经有小伙伴帮您解答,感谢您对有问必答的支持与关注!
PS:问答VIP年卡 【限时加赠:IT技术图书免费领】,了解详情>>> https://vip.csdn.net/askvip?utm_source=1146287632