作业帮 > 综合 > 作业

用c语言编写一个程序,要求如下

来源:学生作业帮 编辑:作业帮 分类:综合作业 时间:2024/05/13 05:12:31
用c语言编写一个程序,要求如下
已知如下两个多项式
P(x)=PX+ PX+...+PX+P
Q(x)=qX+qX+...+qX+q
求它们的乘积多项式 S(x)=sX+...+sX+s.
可以定义两个一维数组p,q,按照次数从高到低存储两个多项式的系数,定义一维数组来s来存储结果;利用函数来完成对结果多项式各项系数的计算,最后在屏幕上计算结果.
简单说个算法输入的时候是输入两个式子的系数,可以用#作为输入结束标志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]);}呼呼~~终于完成了~~