多项式相加代码
这个是一个将多项式相加的程序代码,检测没有错误,可是为什么执行的时候就没有结果出来?#include <stdio.h>
#define DUMMY -1
void padd(int a[],int b[],int c[]);
void output_p(int a[],int b);
char compare(int a,int b);
void main ()
{
int A[]={DUMMY,3,4,5,2,3,0,2};
int B[]={DUMMY,3,3,6,2,2,0,1};
int C[20]={DUMMY};
padd(A,B,C);
printf("\nA=");
output_p(A,A[1]*2+1);
printf("\nB=");
output_p(B,B[1]*2+1);
printf("\nC=");
output_p(C,C[1]*2+1);
}
void padd(int a[],int b[],int c[])
{
char result;
int m,n,p,q,r;
p=q=r=2;m=a[1];n=b[1];
while((p<=2*m)&&(q<=2*n))
{
result=compare(a[p],b[q]);
switch (result)
{
case '=':
c[r+1]=a[p+1]+b[q+1];
if(c[r+1]!=0)
{
c[r]=a[p];
r=r+2;
}
m=m+2;n=n+2;
break;
case '>':
c[r+1]=a[p+1];
c[r]=a[p];
r=r+2;
p=p+2;
break;
case '<':
c[r+1]=b[q+1];
c[r]=b[q];
r=r+2;
q=q+2;
break;
}
}
while(q<=2*m)
{
c[r]=b[q];
c[r+1]=b[q+1];
r=r+2;q=q+2;
}
while(p<=2*m)
{
c[r]=a[p];
c[r+1]=a[p+1];
r=r+2;p=p+2;
}
c[1]=r/2+1;
}
char compare(int a,int b)
{
if(a>b)
return '>';
else if (a==b)
return '=';
else
return '<';
}
void output_p(int a[],int b)
{
int i;
printf("\n(");
for(i=1;i<=b;i++)
printf("%3d",a[i]);
printf(")");
}
请大神帮忙解答