pat甲级A+B for Polynomials的3,4,5,6测试点怎么过

7个测试点,对了3个错了4个,完全不知道为什么,求da佬look look
另外因为是跨考菜ji,还是第一次提问,有什么说的写的不得体的地方请da佬说说)
img

代码如下

#include <iostream>
using namespace std ;
typedef struct  {
    float coeifficient ;
    int exponent ;
}mono,monomial[25];//定义了一个叫mono的数据类型,代表多项式的一项,包含一个指数和一个系数

void output(int k1 , mono a[]){
    printf("%d ",k1);
     for (int i = 0 ; i < k1-1 ; ++i){
        printf("%d %.1f ",a[i].exponent,a[i].coeifficient);
    }
    printf("%d %.1f",a[k1-1].exponent,a[k1-1].coeifficient);
        }
      

int main (){
    int k1 , k2 , n  ;
    monomial mialA,mialB ;//我mialA都放输入的多项式,mialB放相加以后的多项式
    (void)scanf("%d", &k1);
        for (int i = 0 ; i < k1 ; ++ i )//数组mialA的0到k1-1 放第一行
     (void)scanf("%d %f", &mialA[i].exponent, &mialA[i].coeifficient) ;
     (void) scanf("%d", &k2);
        for (int i = k1 ; i < k1+k2 ; ++ i )//数组mialA的k1到k1+k2-1放第二行
      (void) scanf("%d %f", &mialA[i].exponent, &mialA[i].coeifficient) ;

for (int i = 0 ; i < k1 ; ++i){
    for( int j = k1 ; j < k1+k2 ; ++j ){
                    mialB[i].exponent= mialA[i].exponent ;
        if (mialA[i].exponent==mialA[j].exponent){
            mialB[i].coeifficient = mialA[j].coeifficient+mialA[i].coeifficient;
            mialA[j].exponent=-1 ;
        }
        else
            mialB[i].coeifficient =mialA[i].coeifficient;
    }//设置双重循环,外重遍历第一行,内重第二行,如果在第二行找到和第一行指数相同的项
//那么系数相加后添加到miaB里,然后把第二行该项的指数标记为-1;
//没有找到就按照mialA里第一行的顺序直接添加到mialB里
}
n = k1 ;
for (int i = k1 ; i < k1+k2; ++i){
    if (mialA[i].exponent != -1){
        mono tmp ;
        mialB[n].exponent=-1 ;
        ++n ;
        for (int j = 0 ; j < n ; ++j){
            if (mialA[i].exponent>mialB[j].exponent){
                tmp = mialA[i]  ;
                mialA[i] = mialB[j] ;
                mialB[j] = tmp ;
            }
        }
    }
}//重新遍历第二行,找到指数不为-1的项然后按顺序把它插入到mialB里。
output (n,mialB) ;
    }

错的啥提示啊