题目内容:
一个多项式可以表达为x的各次幂与系数乘积的和,比如:
2x6+3x5+12x3+6x+20
现在,你的程序要读入两个多项式,然后输出这两个多项式的和,也就是把对应的幂上的系数相加然后输出。
程序要处理的幂最大为100。
输入格式:
总共要输入两个多项式,每个多项式的输入格式如下:
每行输入两个数字,第一个表示幂次,第二个表示该幂次的系数,所有的系数都是整数。第一行一定是最高幂,最后一行一定是0次幂。
注意第一行和最后一行之间不一定按照幂次降低顺序排列;如果某个幂次的系数为0,就不出现在输入数据中了;0次幂的系数为0时还是会出现在输入数据中。
我的程序
#include <stdio.h>
int main(int argc, char const *argv[])
{
int size;
int board[size][2];
int i,j;
for (i = 0; i < size; i++)
{
for (j = 0; j < 2; j++)
{
scanf("%d",&board[i][j]);
}
}
int biggestnumber = board[0][1];
for (i = 0; i < size; i++)
{
while(board[i][1]>biggestnumber)
{
biggestnumber=board[i][1];
}
}
int sum=0;
for (int l = biggestnumber; l >= 2; l--)
{
for (int i = 0; i < size; i++)
{
while(board[i][0]==l)
{
sum+=board[i][1];
}
}
printf("%dx%d\t",sum,l );
}
sum=0;
for (int i = 0; i < size; i++)
{
while(board[i][0]==1)
{sum+=board[i][1];}
printf("%dx\t",sum );
}
sum=0;
for (int i = 0; i < size; i++)
{
while(board[i][0]==0)
{sum+=board[i][1];}
printf("%d",sum );
}
return 0;
}
完全是用最简单的想法。。但是不知道哪里出错了
谢谢!!
我还有个问题:如果不知道是6,是任意的个数组,但最后一行一定是0次幂。怎么改?
在scanf数组的时候,去判断输入是不是0次幂。题目要求是输入两个多项式,所以应该会遇到两行0次幂。在第二次遇到0次幂时终止输入即可。
int count0=0;
for (i = 0; i =2)
{
break;
}
}
}
上面在break之前要保存一下board数组里的有效数据的大小,可以直接size=i;
说错了,是直接size=i+1;