#include <stdio.h>
typedef struct
{
int item[2]; // 第0个表示幂次,第1个表示该幂次的系数
} Polynomial;
int main(void)
{
Polynomial polynomial1[100];
Polynomial polynomial2[100];
Polynomial result[100];
int i, j, k;
int i1, j1, k1;
char op;
i = 0;
while(1)
{
scanf("%d %d", &polynomial1[i].item[0], &polynomial1[i].item[1]);
i++;
if(polynomial1[i - 1].item[0] == 0)
{
break;
}
}
j = 0;
while(1)
{
scanf("%d %d", &polynomial2[j].item[0], &polynomial2[j].item[1]);
j++;
if(polynomial2[j - 1].item[0] == 0)
{
break;
}
}
k = 0;
i1 = 0;
j1 = 0;
while(1)
{
if(i1 == i || j1 == j)
{
break;
}
if(polynomial1[i1].item[0] > polynomial2[j1].item[0])
{
result[k].item[0] = polynomial1[i1].item[0];
result[k].item[1] = polynomial1[i1].item[1];
k++;
i1++;
}
else if(polynomial1[i1].item[0] == polynomial2[j1].item[0])
{
result[k].item[0] = polynomial1[i1].item[0];
result[k].item[1] = polynomial1[i1].item[1] + polynomial2[j1].item[1];
k++;
i1++;
j1++;
}
else
{
result[k].item[0] = polynomial2[j1].item[0];
result[k].item[1] = polynomial2[j1].item[1];
k++;
j1++;
}
}
k1 = 0;
op = ' ';
while(1)
{
if(k1 == k)
{
break;
}
if(result[k1].item[1] == 0)
{
k1++;
continue;
}
if(op != ' ')
putchar(op);
op = '+';
if(result[k1].item[0] == 0)
{
printf("%d", result[k1].item[1]);
k1++;
continue;
}
if(result[k1].item[0] == 1)
{
printf("%d", result[k1].item[1]);
k1++;
putchar('x');
continue;
}
printf("%d", result[k1].item[1]);
putchar('x');
printf("%d", result[k1].item[0]);
k1++;
}
putchar('\n');
return 0;
}
6 2
5 3
3 12
1 6
0 20
6 2
5 3
2 12
1 6
0 20
4x6+6x5+12x3+12x2+12x+40
请按任意键继续. . .
这是我写的,不要指望这段代码可以通过那个测试,因为我也不知道哪里错了
程序本来就不应该是通用的,而应该是专用的,我写的代码通过了我的测试,
输入
5 3
3 12
1 6
0 20
6 2
5 3
2 12
1 6
0 20
输出
4x6+6x5+12x3+12x2+12x+40
这样就行了,如果你非要说我写的代码错了,可以,告诉我,哪里错了,我有兴趣的话,会改正,但是
我看不懂这样的报告,结果错误?究竟输入了什么,导致的结果错误?
不告诉我这个,我没办法调试我的程序(程序是调试出来的)
我真的不建议你继续跟着这个网站学习,这样只会浪费你的时间
|