程序设计 一元多项式

来源:百度知道 编辑:UC知道 时间:2024/06/04 01:27:14
任务:能够按照指数降序排列建立并输出多项式;
能够完成两个多项式的相加、相减,并将结果输入;
在上交资料中请写明:存储结构、多项式相加的基本过程的算法(可以使用程序流程图)、源程序、测试数据和结果、算法的时间复杂度、另外可以提出算法的改进方法

这是小弟的作业 有些地方不是很明白 希望大家解答下
看我的提问 还有2个 谢谢高手

一个用数组的程序,这个我已在win-tc下调试通过。数据用数组存放,是顺序存储结构,没有使用链表。使用链表的程序我也有,但还需要完善。这题只是多项式的加法,所以算法很简单的,应该多看看下面的乘法的算法。
/*
本题的一个完整的c程序如下,在win-tc和Dev-c++下调试通过。
需要说明的是这里的m,n表示x的幂分别是m-1次和n-1次,
同时p[]和q[]的各系数是从x^(m-1)和x^(n-1)到x^0前的系数,
比如px=3x^3+2x+1,qx=x^2-11x+3,那么m=4,n=3,px和qx的系数分别为
3,0,2,1和1,-11,3
*/
/*多项式加法程序*/
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
#define MAX 50

void npadd(double p[],int m,double q[],int n,double s[])
{
int i,j;
for(i=0;i<m-n;i++)
s[i]=p[i]; /*计算各项系数,将幂指数高的多项式中高出的各项系数先复制到数组s[]中*/
for (i=m-n,j=0; i<=m-1; i++,j++)
s[i]=p[i]+q[j]; /*计算各项系数,剩下的幂指数相同的各项系数对应相加,减法运算只要将这里的加号改成减号即可*/
return;
}

double compute(double s[],int k,double x) /*计算所给多项式的值*/
{
int i;
double multip = 1,sum = 0;
for (i=0;i<k-1;i++)
multip = multip * x; /*先求出x的最高次项的值*/
for (i=0;i<=k-1;i++)
{