注册 登录
编程论坛 数据结构与算法

数据结构的题

我爱C语言。 发布于 2018-10-08 22:37, 1664 次点击
试编写算法,求一元多项式Pn(x)=a0+a1X+……+anXn的值
3 回复
#2
游走的鱼2018-10-09 15:35
#3
MeandC2018-10-12 17:45
还以为是一元多项式相加呢,这个求一元多项式的值可以吧系数a0,a1,a2...分别按顺序存入线性表,利用循环把x的幂次不断升高,同时乘以相应系数再相加。
比如Pn(x)=a0+a1x+a2x2+a3x3+a5x5;可以有如下算法当系数都为3,输入的x为2时,结果是3+3*2+3*4+3*8+3*16+3*32=189
如果用的不是visual studio 可以吧scanf_s改为scanf  如果是6次或7次就将M定义为6或7
程序代码:
#include<stdio.h>

#define M 5

int main(void) {
    int a[M + 1];
    int i, n;
    printf("请顺序输入a0到a%d的这%d个系数:\n", n = M,n+1);
    for (i = 0; i < M+1; i++)
        scanf_s("%d", &a[i]);
    long sum = 0;
    int x;
    int y = 1;
    printf("请输入x的值:\n");
    scanf_s("%d", &x);
    for (i = 0; i < M+1; i++) {
        sum += a[i] * y;
        y *= x;
    }
    printf("pn(%d)=%ld\n",x, sum);
    system("pause");
    return 0;
}


只有本站会员才能查看附件,请 登录



[此贴子已经被作者于2018-10-12 18:00编辑过]

#4
MeandC2018-10-12 17:45
还以为是一元多项式相加呢,这个求一元多项式的值可以吧系数a0,a1,a2...分别按顺序存入线性表,利用循环把x的幂次不断升高,同时乘以相应系数再相加。
比如Pn(x)=a0+a1x+a2x2+a3x3+a5x5;可以有如下算法当系数都为3,输入的x为2时,结果是3+3*2+3*4+3*8+3*16+3*32=189
如果用的不是visual studio 可以吧scanf_s改为scanf  如果是6次或7次就将M定义为6或7
程序代码:
#include<stdio.h>

#define M 5

int main(void) {
    int a[M + 1];
    int i, n;
    printf("请顺序输入a0到a%d的这%d个系数:\n", n = M,n+1);
    for (i = 0; i < M+1; i++)
        scanf_s("%d", &a[i]);
    long sum = 0;
    int x;
    int y = 1;
    printf("请输入x的值:\n");
    scanf_s("%d", &x);
    sum = a[0];
    for (i = 1; i < M+1; i++) {
        y *= x;
        sum += a[i] * y;
    }
    printf("pn(%d)=%ld\n",x, sum);
    system("pause");
    return 0;
}


只有本站会员才能查看附件,请 登录
1