7个测试点,对了3个错了4个,完全不知道为什么,求da佬look look
另外因为是跨考菜ji,还是第一次提问,有什么说的写的不得体的地方请da佬说说)
代码如下
#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) ;
}