tft每日頭條

 > 科技

 > c語言求值的順序

c語言求值的順序

科技 更新时间:2024-11-23 15:40:09

多項式求值,是數學中非常常見的一項,給定一個多項式,給定一個未知數,來求值。

那這道題目呢,就是要求實現一個函數,計算階數為n,系數為a[0]...a[n]的多項式

f(x)=(a[i]*x^i)求和,然後求出在x點的值。

題目也給定了函數接口定義,以及對n、a[]、x的各個說明。

n是多項式的階數,a[]中存儲系數,x是給定點,函數須返回多項式f(x)的值。

c語言求值的順序(C語言實現多項式求值)1

梳理邏輯

看到這麼複雜的測試程序樣例,我一開始還真有些無從下手,反而浪費了不少時間。

我們先來看一下這道題目給的裁判測試程序樣例,可以發現。

這個-43.1是把數組中的每個元素按照多項式的形式進行求和所得到的。

并且最終保留一位小數。

具體實現過程如下圖所示:

c語言求值的順序(C語言實現多項式求值)2

那如何來寫這個子函數呢。

1、要求數組a的元素很好求,就是寫一個for循環遍曆即可。

2、x的幂次方怎麼寫,我們可以調用C語言當中的庫函數#include <math.h>,用裡面的pow函數求x的幂次方,比方說x的三次方,那就是pow(x,3)。

3、求和的話,就是定義一個變量sum=0,然後sum=sum 多項式,每次存儲一個多項式相加。

double f(int n, double a[], double x){ float sum=0; for(int i=0;i<=n;i ){ sum = sum a[i]*pow(x,i); } return sum; }

代碼實現

//多項式求值 #include <stdio.h> #include <math.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){ float sum=0; for(int i=0;i<=n;i ){ sum = sum a[i]*pow(x,i); } return sum; }

結果測試

c語言求值的順序(C語言實現多項式求值)3

c語言求值的順序(C語言實現多項式求值)4

總結

總的來說,這類函數題難度并不大,但關鍵是讀懂題目,像我最開始做這道題的時候,就有些沒看懂這道題目在講些什麼,主要是對數學式子多項式不是很清楚,但後來按照它給的測試樣例代入進行測試後,然後反推邏輯,就知道了整個程序的要求,再來完成這道題目也就快了許多。

,

更多精彩资讯请关注tft每日頭條,我们将持续为您更新最新资讯!

查看全部

相关科技资讯推荐

热门科技资讯推荐

网友关注

Copyright 2023-2024 - www.tftnews.com All Rights Reserved