c语言问题求解 5
设有一元多项式Am(x)和Bn(x),Am(x)=A0+A1x1+A2x2+A3x3+…+Amxm,Bn(x)=B0+B1x1+B2x2+B3x3+…+Bnxn,请实现求...
设有一元多项式Am(x)和Bn(x),Am(x)=A0+A1x1+A2x2+A3x3+… +Amxm,Bn(x)=B0+B1x1+B2x2+B3x3+… +Bnxn,请实现求M(x)= Am(x)+Bn(x)、M(x)= Am(x)-Bn(x)和M(x)= Am(x)×Bn(x)。
分别采用顺序和链式存储结构实现;结果M(x)中无重复阶项和无零系数项;要求输出结果的升幂和降幂两种排列情况。 展开
分别采用顺序和链式存储结构实现;结果M(x)中无重复阶项和无零系数项;要求输出结果的升幂和降幂两种排列情况。 展开
1个回答
展开全部
#include
#include
using namespace std;
#define N 1000
#define INF 65535
typedef struct
{
int a[N];//记录多项式
int len;//记录多项式的长度
}Ploy;
void ADD(Ploy A,Ploy B,Ploy *M)
/*多项式A与多项式B相加,得到多项式M*/
{
int la=A.len,lb=B.len,i;
void PrintPloy1(Ploy A)
{
int i;
printf(" %dx^%d ",A.a[A.len],A.len);
for(i=A.len-1;i>=1;i--)
{
if(A.a[i]==0) ;
else if(A.a[i]==1) printf(" + x^%d ",i);
else if(A.a[i]==-1) printf(" - x^%d ",i);
else
{
if(A.a[i]>0)
printf("+ %dx^%d ",A.a[i],i);
else
printf("- %dx^%d ",-A.a[i],i);
}
}
if(A.a[0]==0) ;
else if(A.a[0]>0)
printf(" + %d",A.a[0]);//打印x的0次项
else
printf(" - %d",-A.a[0]);
printf("\n");
return ;
}
void PrintPloy2(Ploy A)
{
int i=0;
while(A.a[i]==0) ++i;
if(i==0) printf("%d",A.a[i]);
else {
if(A.a[i]==1) printf("x^%d",i);
else if(A.a[i]==-1) printf("-x^%d",i);
else printf("%dx^%d",A.a[i],i);}
for(++i;i1)
{
printf(" + %dx^%d",A.a[i],i);
}
else if(A.a[i]>id;
while(2)
{
if(id=='1')
{
ADD(A,B,&M);
printf("降幂输出请按1,升幂输出请2!\n");
cin>>sh;
}
#include
using namespace std;
#define N 1000
#define INF 65535
typedef struct
{
int a[N];//记录多项式
int len;//记录多项式的长度
}Ploy;
void ADD(Ploy A,Ploy B,Ploy *M)
/*多项式A与多项式B相加,得到多项式M*/
{
int la=A.len,lb=B.len,i;
void PrintPloy1(Ploy A)
{
int i;
printf(" %dx^%d ",A.a[A.len],A.len);
for(i=A.len-1;i>=1;i--)
{
if(A.a[i]==0) ;
else if(A.a[i]==1) printf(" + x^%d ",i);
else if(A.a[i]==-1) printf(" - x^%d ",i);
else
{
if(A.a[i]>0)
printf("+ %dx^%d ",A.a[i],i);
else
printf("- %dx^%d ",-A.a[i],i);
}
}
if(A.a[0]==0) ;
else if(A.a[0]>0)
printf(" + %d",A.a[0]);//打印x的0次项
else
printf(" - %d",-A.a[0]);
printf("\n");
return ;
}
void PrintPloy2(Ploy A)
{
int i=0;
while(A.a[i]==0) ++i;
if(i==0) printf("%d",A.a[i]);
else {
if(A.a[i]==1) printf("x^%d",i);
else if(A.a[i]==-1) printf("-x^%d",i);
else printf("%dx^%d",A.a[i],i);}
for(++i;i1)
{
printf(" + %dx^%d",A.a[i],i);
}
else if(A.a[i]>id;
while(2)
{
if(id=='1')
{
ADD(A,B,&M);
printf("降幂输出请按1,升幂输出请2!\n");
cin>>sh;
}
追问
这个能用c语言打出来吗 , c++还没学有的看不太懂
本回答被网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询