多项式相加

问题

【问题描述】编写一个程序实现两个一元多项式相加的运算。

【输入形式】从标准输入中读入两行以空格分隔的整数,每一行代表一个多项式,且该多项式中各项的系数均为0或正整数,最高幂次不超过50。对于多项式 anxn + an-1xn-1+ … + a1x1 + a0x0 (n≤50)的表示方法如下: an n an-1 n-1 … a1 1 a0 0
即相邻两个整数分别表示表达式中一项的系数和指数。在输入中只出现系数不为0的项。

【输出形式】将运算结果输出到屏幕。将系数不为0的项按指数从高到低的顺序输出,每次输出其系数和指数,均以一个空格分隔。在行的末尾也输出一个空格符,并且最后要求换行。

【样例输入】
54 8 2 6 7 3 25 1 78 0
43 7 4 2 8 1

【样例输出】
54 8 43 7 2 6 7 3 4 2 33 1 78 0

【样例说明】输入文件的两行分别代表了表达式
54x8 + 2x6 + 7x3 + 25x + 78
43x7 + 4x2 + 8x
其和为
54x8 + 43x7 + 2x6 + 7x3 + 4x2 + 33x + 78

算法设计

1.令:int array1[51],int array2[51];分别用来存储第一个多项式和第二个多项式;
2.初始化数组array1和array2元素值均为0;
3.读入第一行数据保存在数组array1中;
4.读入第二行数据保存在数组array2中;
5.依次将数组array1和array2相应元素相加,并将结果放到array1中,即array1[i]=array1[i]+array2[i];
6.依次从后往前输出数组array1中不为0的元素。

算法实现


#include <stdio.h>
#define LENGTH  51
void getExp(int array[]);
int main()
{
	int array1[LENGTH],array2[LENGTH],i;

	for(i=0; i<LENGTH; i++)
  		array1[i] =0;
	for(i=0; i<LENGTH; i++)
  		array2[i] =0;

	getExp(array1);
	getExp(array2);

	for (i=0;i<LENGTH;i++) 
		array1[i] += array2[i];

	for (i=LENGTH-1;i>=0;i-- )
		if(array1[i]>0)
		      printf("%d %d ",array1[i], i );
	printf("\n");
}
void getExp(int array[])
{
     int a,n;
     char c;
     do {
         scanf("%d%d%c", &a, &n, &c);
         array[n] = a;
     } while ( c != '\n');
}

发布了140 篇原创文章 · 获赞 149 · 访问量 7万+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章