問題
【問題描述】編寫一個程序實現兩個一元多項式相加的運算。
【輸入形式】從標準輸入中讀入兩行以空格分隔的整數,每一行代表一個多項式,且該多項式中各項的係數均爲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');
}