title
author
date
createtime
categories
pta 6-2 多項式求值
lindexi
2018-06-29 15:24:28 +0800
2018-6-14 22:0:41 +0800
c 演算法
本題要求實現乙個函式
本題要求實現乙個函式,計算階數為n
,係數為a[0]
...
a[n]
的多項式$f(x)=\sum_^(a[i]\times x^i)$在x
點的值。
函式介面定義
doublef( int
n, double
a, double
x );
其中n
是多項式的階數,a
中儲存係數,x
是給定點。函式須返回多項式f(x)
的值。
裁判測試程式樣例
#include#define
maxn
10double
f( int n, double a, double x );
intmain()
/* 你的**將被嵌在這裡 */
輸入樣例
21.11
2.5-
38.7
輸出樣例
-43.1
可通過**
doublef(int
n, double
a, double
x) // 這個值用來做中間的計算,也就是計算 x 的中間計算
// 為什麼 temp 預設值會是 1 ? 原因就是無論多大的數
// 100000000^0 等於 1
double
temp=1;
for (inti=
0; i
<=
n; i
++)
return
sum;}/*
// 裡面存在x的多少次方,就需要重新定義乙個函式來寫,如果直接寫在**,**很不好看
// 但是因為有時間的限制,所以不能使用這個方式,這個方式是每個 x 都需要重新計算多少次方
// 在工程的開發,要盡量避免這種優化
// 但是在寫題目到是可以這樣考慮
// 每次計算的 x 的方都比原來的大 1 次,也就是我第 2 次的計算可以用到第 1 次計算的結果
double pow(double x, int count)
// 這裡使用 i = 1 因為這裡的值預設 sum 就是等於 x
// 如輸入 x^2 那麼就是 x = x count = 2
// 如果這裡的 i = 0 開始就會首先設定 sum = x;
// sum 會迴圈兩次,於是返回 x^3 和需要的不一樣
for (int i = 1; i < count; i++)
return sum;
}double f(int n, double a, double x)
for (int i = 0; i <= n; i++)
return sum;}*/
考點:大概的輸入
閱讀題目能力
第2個考點是有些問題,如果比較會設計的小夥伴,就會寫出我注釋的**
在工程使用是建議使用被注釋的**,但是被注釋的**會多了一次迴圈,於是會執行超時
第3個考點在於一開始的 n 的值,i <= n
的迴圈和i < n
的迴圈次數不相同
另外for (int i = 0; i < n; i++)
和for (int i = 1; i < n; i++)
的迴圈次數也不相同,都是相差 1 ,在於初始化 i 的大小和判斷迴圈。
因為 pta 沒有告訴說**的輸出是什麼,而且輸出在**出錯了,所以對於初學者還是比較難的,很多很難知道自己的程式在哪錯了。乙個建議是使用 codeblock 進行除錯或者 visualstudio 除錯。
兩個除錯是不相同,可以看到 codeblock 支援比較簡單的程式,而且使用也很簡單。比較推薦簡單的**使用 codeblock ,如果訓練的要求是實際使用,那麼建議使用 visualstudio 。可以從安裝的時候看到 visualstuio 很大,而且開始部署環境也是比較困難。但是 visualstudio 可以開發幾乎任何的軟體。
在部署完成visualstudio 之後,可以使用我修改的**執行。需要注意在 visualstduio 需要使用scanf_s
替換scanf
,其他幾乎不需要修改。
下面的**複製之後就可以在 visualstudio 執行除錯,注意 visualstudio
// jisnaicasmanawashar.cpp: 定義控制台應用程式的入口點。#include
"stdafx.h"
#define
maxn
10double
f(int n, double a, double x);
intmain()
double
f(int n, double a, double x)
// 這個值用來做中間的計算,也就是計算 x 的中間計算
// 為什麼 temp 預設值會是 1 ? 原因就是無論多大的數
// 100000000^0 等於 1
double temp = 1;
for (int i = 0; i <= n; i++)
return sum;}/*
// 裡面存在x的多少次方,就需要重新定義乙個函式來寫,如果直接寫在**,**很不好看
// 但是因為有時間的限制,所以不能使用這個方式,這個方式是每個 x 都需要重新計算多少次方
// 在工程的開發,要盡量避免這種優化
// 但是在寫題目到是可以這樣考慮
// 每次計算的 x 的方都比原來的大 1 次,也就是我第 2 次的計算可以用到第 1 次計算的結果
double pow(double x, int count)
// 這裡使用 i = 1 因為這裡的值預設 sum 就是等於 x
// 如輸入 x^2 那麼就是 x = x count = 2
// 如果這裡的 i = 0 開始就會首先設定 sum = x;
// sum 會迴圈兩次,於是返回 x^3 和需要的不一樣
for (int i = 1; i < count; i++)
return sum;
}double f(int n, double a, double x)
for (int i = 0; i <= n; i++)
return sum;}*/
PTA 6 2多項式求值問題筆記
最近才開始真正開始寫 想把錯題當部落格寫,以下是pta基礎演算法的6 2函式題 本題要求實現乙個函式,計算階數為n,係數為a 0 a n 的多項式 在x點的值。錯誤解題 double f int n,double a,double x sum sum a i x return sum 正確解法 第一...
PTA 6 2 多項式求值 (15 分)
本題要求實現乙個函式,計算階數為n,係數為a 0 a n 的多項式f x i 0 n a i x i 在x點的值。double f int n,double a,double x 其中n是多項式的階數,a中儲存係數,x是給定點。函式須返回多項式f x 的值。include define maxn 1...
6 2 多項式求值
6 2 多項式求值 15 分 本題要求實現乙個函式,計算階數為n,係數為a 0 a n 的多項式f x i 0 n a i x i 在x點的值。double f int n,double a,double x 其中n是多項式的階數,a中儲存係數,x是給定點。函式須返回多項式f x 的值。includ...