#include
using namespace std;
int main()
{
int i, j, m, n,p[m],q[n],s[m+n]; //数组个数要搞清!易错点在这!
cout<<"输入第一行的个数:"; cin>>m;
cout<<"输入系数: ";
for (i = m-1; i >=0; i--) //为第一列系数
{
cin>>p[i];
}
cout<<"P(X)=";
for (i=m-1; i>=0; i--)
{
if(i==0) {cout<<p[i];break;}
cout<<p[i]<<"×X^"<<i<<"+";
}
cout<<"\n\n";
cout<<"输入第二行的个数:";cin>>n;
cout<<"输入系数: ";
for (i = n-1; i >=0; i--) //第二列系数
{
cin>>q[i];
}
cout<<"Q(X)=";
for (i=n-1; i>=0; i--)
{
if(i==0) {cout<<q[i];break;}
cout<<q[i]<<"×X^"<<i<<"+";
}
cout<<"\n\n";
for (i = m + n-2; i >=0; i--) //都是零
{s[i] = 0;}
for (i = m-1; i>=0; i--)
{
for (j = n-1; j >=0; j--)
{
s[i + j] += p[i] * q[j];
}
}
cout<<"它们乘积多项式:S(X)=";
for (i=m+n-2; i>=0; i--) //输出所搞的
{
if(i==0){cout<<s[i];break;}
cout<<s[i]<<"×X^"<<i<<"+";
}
}
给你改了一下,参考一下。
#include <iostream>
#include<algorithm>
using namespace std;
const int MAX_POLY = 20;
int p[MAX_POLY], q[MAX_POLY], s[MAX_POLY * 2];
int n1, n2;
class Polynomial;
class Polynomial{//多项式类
public:
Polynomial();
void mulit_input();
void mulit_poly(int p[], int n1, int q[], int n2, int s[]);//添加一项,若有相同的指数项,则合并
void mulit_output();
private:
int capacity;//数组大小
int terms;//非零系数的项数
};
void mulit_poly(int p[], int n1, int q[], int n2, int s[]) {
for (int i = 0; i < n1 + n2; i++) {
s[i] = 0;
}
for (int i = 0; i < n1; i++) {
for (int j = 0; j < n2; j++) {
s[i + j] += p[i] * q[j];
}
}
}
void mulit_input(){
cin >> n1 >> n2;//输入第一行的个数
for (int i = n1 - 1; i >= 0; i--) {
cin >> p[i];//为第一列系数
}
for (int i = n2 - 1; i >= 0; i--) {
cin >> q[i];//为第二列系数
}
}
void mulit_output(){
bool first = true;
for (int i = n1 + n2 - 1; i >= 0; i--) {//输出多项式
if (s[i] != 0) {
if (!first)//如果不是第一个
cout << "+";//输出+
cout << s[i];//输出第i项
if (i != 0)//如果i不等于0输x^
cout << "x^" << i;
first = false;
}
}
}
int main()
{
mulit_input();//输入
mulit_poly(p, n1, q, n2, s);//调用多项式函数
mulit_output();//输出
}