c语言pat基础题改错

img

#include <stdio.h>

#define MAXN 10

double f( int n, double a[], double x );

int main()
{
    int n, i;
    double a[MAXN], x;
    
    scanf("%d %lf", &n, &x);
    for ( i=0; i<=n; i++ )
        scanf("%lf", &a[i]);
    printf("%.1f\n", f(n, a, x));
    return 0;
}

/* 你的代码将被嵌在这里 */

我的答案如下

double f( int n, double a[], double x ){
        double sum=0.0;
        for(int i=0;i<=n;i++){
            double product=1;
            for(int j=0;j<i;j++){
                product*=x;
            }
            sum+=a[i]*product;
        }
        return sum;
}

img


希望可以更正错误,希望得到大家的指导,谢谢!

计算 x ^ i 没必要 弄一个循环吧
这个试试

double f( int n, double a[], double x ){
    double sum=0.0;
    double product=1;
    for(int i=0;i<=n;i++){
        sum+=a[i]*product;
        product *= x;
    }
    return sum;
}

修改如下,供参考:

/* 你的代码将被嵌在这里 */
double f(int n, double a[], double x) {
    double sum = 0.0, product = 1.0;
    for (int i = 0; i <= n; i++) {
        if (i)
            product *= x;
        sum += a[i] * product;
    }
    return sum;
}

先判断a[i]是否为0,为0的话是不需要进行计算的

不知道你这个问题是否已经解决, 如果还没有解决的话:

如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^