多項式相加

問題

【問題描述】編寫一個程序實現兩個一元多項式相加的運算。

【輸入形式】從標準輸入中讀入兩行以空格分隔的整數,每一行代表一個多項式,且該多項式中各項的係數均爲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萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章