练习PTA基础编程题“6-2多项式求值”本地调试与提交踩坑

熬过大一开会,又来练习PTA编程题,6-2多项式求值。题目要求:
QQ20260911-184207

第一个问题:禁止使用 math.h 时,如何手算 x 的 n 次方?
现象:题目要求不能使用标准数学库math.h
过程:手写整数次方
解决:
方案一尝试:代码如下
QQ20260911-185437
方案二尝试(我并未使用,是下次的使用方案):秦九昭算法
double sum = 0.0;
for(int i = n; i >= 0; i--)
{
sum = sum * x + a[i];

第二个问题:循环顺序写反:先加后乘 vs 先乘后加
过程:第一次写的代码
QQ20260911-185947
现象:当n=1,x=2,a[0] = 1, a[1] = 2时答案为3,正确答案为5
原因:没能搞清循环先后顺序
解决:问一图中代码
分析:先乘后加会导致指数高了一次,先加后乘把ans=1直接视为x的零次方

第三个问题:对库的过于依赖,丧失手写能力
现象:多数时候直接采用库中标准函数,欠缺了手写循环体的能力
正确做法:严格按照题目,强化能力,规范自身

总结:编码的内核很多其实是数学套用,正确的循环顺序依赖思维能力。多数时间都是想代码,而不是敲键盘。
能把优美的数学公式用代码实现才是真本事。

总代码如下

double f( int n, double a[], double x )
{
    int k;
    double sum = 0;
    double ans = 1;
    for(k=0;k<=n;k++){
        sum += a[k]*ans;
        ans *= x;
    }
    return sum;
}
posted @ 2026-09-11 19:11  方块味  阅读(5)  评论(0)    收藏  举报