目录
6-2 多项式求值 (15 分)
本题要求实现一个函数,计算阶数为n,系数为a[0] ... a[n]的多项式f(x)=∑i=0n(a[i]×xi) 在x点的值。
函数接口定义:
double f( int n, double a[], double x );其中n是多项式的阶数,a[]中存储系数,x是给定点。函数须返回多项式f(x)的值。
裁判测试程序样例:
#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;
}
/* 你的代码将被嵌在这里 */输入样例:
2 1.1
1 2.5 -38.7结尾无空行
输出样例:
-43.1结尾无空行
double f( int n, double a[], double x )
{
double y=1,sum=0;//y用于控制x的每一次 次幂变化,sum计算多项式的和
for(int i=0;i<=n;i++)//从0累加到n
{
sum+=(a[i]*y);
y*=x;//每次运算结束后y升幂一次
}
return sum;
}
//最开始另外写了一个循环控制x的次幂,但是第三个测试点超时,所以进行了改进
/*
第一个版本
double f( int n, double a[], double x )
{
double y=1,sum=0;
for(int i=0;i<=n;i++)
{
for(int j=0;j<i;j++)
{
y*=x;
}
sum+=(a[i]*y);
}
return sum;
}
*/版权声明:本文为cow_bi原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。