用c语言编写一个程序,要求如下已知如下两个多项式P(x)=PX+ PX+...+PX+PQ(x)=qX+qX+...+qX+q求它们的乘积多项式 S(x)=sX+...+sX+s.可以定义两个一维数组p,q,按照次数从高到低存储两个多项式的系数,定义
来源:学生作业帮助网 编辑:六六作业网 时间:2025/02/07 08:42:46
用c语言编写一个程序,要求如下已知如下两个多项式P(x)=PX+ PX+...+PX+PQ(x)=qX+qX+...+qX+q求它们的乘积多项式 S(x)=sX+...+sX+s.可以定义两个一维数组p,q,按照次数从高到低存储两个多项式的系数,定义
用c语言编写一个程序,要求如下
已知如下两个多项式
P(x)=PX+ PX+...+PX+P
Q(x)=qX+qX+...+qX+q
求它们的乘积多项式 S(x)=sX+...+sX+s.
可以定义两个一维数组p,q,按照次数从高到低存储两个多项式的系数,定义一维数组来s来存储结果;利用函数来完成对结果多项式各项系数的计算,最后在屏幕上计算结果.
用c语言编写一个程序,要求如下已知如下两个多项式P(x)=PX+ PX+...+PX+PQ(x)=qX+qX+...+qX+q求它们的乘积多项式 S(x)=sX+...+sX+s.可以定义两个一维数组p,q,按照次数从高到低存储两个多项式的系数,定义
简单说个算法
输入的时候是输入两个式子的系数,可以用#作为输入结束标志
char ch=‘0’;
while(ch!='#'-‘0’)
{
scanf(%c,&ch);
ch-='0';
}
上面的算法每个循环得到的ch里存放的就是实际的数值
想办法放到p,q数组里去就行了
p,q,s位数分别为pi,qi,si的话
si=pi+qi; //s的幂次必为p,q幂次之和
P、Q的x幂次相加存入S相应位置
至于输入系数的时候
输入没有特别要求的话可以按照x的升序排列
这样0次幂存入p[0],1次幂存入p[1],...
三个数组都可以这样安排
方便计算同时可以获取最终式子项数,也就是(幂次+1),在si里
s(x)系数计算
x幂次之和m刚好对应s[ ]下标
for(m=0;m<=si;m++) //计算数组s[ ]
for(i=0;i<=m;i++)
s[m]=p[i]+q[m-i];
然后输出应该就可以了
大概就是这样吧
源程序在这里,Win7+C-Free 5.0测试通过
先上截图
#include <stdio.h>
#include <string.h>
#define MAXLEN 20 //数组长度
void input(); //输入P/Q
void mul(); //多项式乘法
void outputS(); //输出S
int main(void)
{
float p[MAXLEN],q[MAXLEN], //p,q输入元素为原多项式各项系数
s[MAXLEN<<2]; //s中元素为输出多项式
int sn,pn,qn; //分别为多项式的次数
system("cls");
printf("\n\n输入P(x)的次数(正整数):"); //输入P(x)
scanf("%d",&pn);
printf("\n输入P(x)各项系数,P(x)降幂排列:\n");
pn++; //项数=次数+1
input(p,pn);
printf("\n");
printf("\n\n输入Q(x)的次数(正整数):"); //输入Q(x)
scanf("%d",&qn);
printf("\n输入Q(x)各项系数,Q(x)降幂排列:\n");
qn++; //项数=次数+1
input(q,qn);
printf("\n");
sn=(pn+qn-2); //S多项式次数
int i; //S数组初始化
for (i=0;i<sn+1;i++)
s[i]=0;
mul(p,q,s,pn,qn); //做多项式乘法
outputS(s,sn+1); //输出S
printf("\n");
getch();
return 1;
}
void input(float *p,int t)
{
int i;
for (i=0;i<t;i++) scanf("%f",&p[i]);
}
void mul(float *p,float *q,float *s, int m, int n)
{
int i,j;
for (i=0;i<m;i++) //扫描P(x)系数
for (j=0;j<n;j++) //扫描Q(x)系数
s[i+j]+=p[i]*q[j];
}
void outputS(float *s,int t)
{
int i;
printf("\nS(x)各项系数是(S(x)降幂排列):\n");
for (i=0;i<t;i++)
printf("%.2f\t",s[i]);
}
呼呼~~终于完成了~~