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

运行结果错误,大神帮帮忙,两个多项式相加(没有错误)

我要甜筒 发布于 2019-09-22 21:06, 1879 次点击
#include<stdio.h>
typedef struct{
    int e[10];
    int c[10];
}STRarray;

int main(){
    int i,j,k,t;
    int add(STRarray a1,int j,STRarray a2,int k,STRarray a3);
    STRarray a1,a2;
    STRarray a3;
    printf("输入第一个多项式的项数为(按回车结束输入k值)");   
    scanf("%d",&j);         
    printf("输入第一个多项式指数为(按回车结束输入k值)");
    for(i=0;i<j;i++)
        scanf("%d",&a1.e[i]);
    printf("输入第一个多项式系数为(按回车结束输入k值,系数与指数一一对应)");
    for(i=0;i<j;i++)
        scanf("%d",&a1.c[i]);
        
    printf("输入第二个多项式的项数为(按回车结束输入k值)");   
    scanf("%d",&k);         
    printf("输入第二个多项式指数为(按回车结束输入k值)");         
    for(i=0;i<k;i++)
        scanf("%d",&a2.e[i]);
    printf("输入第二个多项式系数为(按回车结束输入k值,系数与指数一一对应)");
    for(i=0;i<j;i++)
        scanf("%d",&a2.c[i]);
   t=add(a1,j,a2,k,a3);
   printf("%d\n",t);
   for(i=0;i<t;i++)
   printf("%d %d",a3.c[i],a3.e[i]);
        
   
}
int add(STRarray a1,int j,STRarray a2,int k,STRarray a3){
    int m,n=0,t=0,l=0;
    for(m=0;m<j+k;m++){
   
    if(a1.e[n]==a2.e[t]&&n!=j&&t!=k){
        a3.c[m]=a1.c[n]+a2.c[t];
        a3.e[m]=a1.e[n];
               n++;   
            t++;
            m++;
            l++;
        }
    else if  (a1.e[n]>a2.e[t]&&(n!=j&&t!=k)){
            a3.c[m]=a1.c[n];
                    a3.e[m]=a1.e[n];
                n++;
                l++;
    }
        else if  (a1.e[n]<a2.e[t]&&(n!=j&&t!=k)){
            a3.c[m]=a2.c[t];
                    a3.e[m]=a2.e[t];
                t++;
                l++;
    }
    if(n==j&&t!=k){
    a3.c[m]=a2.c[t];
    a3.e[m]=a2.e[t];
    t++;
    m++;
    l++;
    }
    else    if(t==k&&n!=j){
    a3.c[m]=a1.c[n];
    a3.e[m]=a1.e[n];
    n++;
    m++;
    l++;
    }
}
    return l;
}

[此贴子已经被作者于2019-9-22 21:07编辑过]

0 回复
1