请教高手:用c语言实现一个一元多项式的相加,次数和系数可由用户自己输入,求救,多谢了。。。。

如题所述

使用顺序表,其中数组放系数,数组下标用指数表示……
以下是例子,至于数组的数值你自己改成用户输入
/**************************************************************************************

已知f(x)=8x^(6)+5x^(5)-10^(4)+32x^(2)-x+10;g(x)=7x^(5)+10x^(4)-20^x(3)-10^x(2)+x;
求f(x)+g(x);

*************************************************************************************/

#include <stdio.h>
#define MAXLEN 100
typedef struct
{
int data[MAXLEN];
int last;

}SeqList;

/**************************************************************************************

初始化顺序表

*************************************************************************************/
SeqList *CreateSeqList()
{

SeqList *lq;
lq=(SeqList*)malloc(sizeof(SeqList));
lq->last=-1;
return lq;
}

/**************************************************************************************

插入内容

*************************************************************************************/

int InsertList(SeqList *lq,int i,int x)
{
int j;
if(lq->last==MAXLEN-1)
{
printf("顺序表已满\n");

return(-1);
}

if(i<0||i>lq->last+2)
{
printf("位置错误\n");
return 0;

}

for(j=lq->last;j>=i-1;j--)
lq->data[j+1]=lq->data[j];

lq->data[i-1]=x;
lq->last++;
return(1);

}

/**************************************************************************************

打印顺序表

*************************************************************************************/

int PrintSeqList(SeqList *lq)
{
int i=0;
printf("f(x)+g(x)=");
while(lq->last>=0)
{
if(i==6)
{
printf("%dx(%d)",lq->data[i],i);
}
else if(lq->data[i]!=0)
{
printf("%dx(%d)+",lq->data[i],i);

}
i++;
lq->last--;

}

return(0);
}

/**************************************************************************************

主函数

*************************************************************************************/

int main(void)
{
int i=0,num3[7];
int num1[]={10,-1,32,0,-10,5,8};
int num2[]={0,1,-10,-20,10,7,0};

SeqList *lq1=CreateSeqList();
SeqList *lq2=CreateSeqList();
SeqList *lq3=CreateSeqList();

for(;i<7;i++)
{
InsertList(lq1,i+1,num1[i]);
InsertList(lq2,i+1,num2[i]);
num3[i]=num1[i]+num2[i];
InsertList(lq3,i+1,num3[i]);
}

PrintSeqList(lq3);
return 0;
}
温馨提示:答案为网友推荐,仅供参考
相似回答