1102一元多项式乘法

将问题分为四步1输入多项式 2解析多项式中的系数和指数 3计算多项式乘法 4输出乘积的系数

#include <stdio.h>
#define N 100
void readpoly(char *p, int* co)
{ 
    while (*p)
    { 
        int sign=1,c=0,d=0;//表示系数正负,系数绝对值,次数
        if (*p=='+' ) p++; 
        else if (*p=='-') sign=-1,p++;
        while (isdigit(*p)) { c=c*10+*p-'0'; p++; }
        
        if (*p!='x') { co[0]=c*sign; return; } else p++;//没有x说明为常数项,结束读取
        if (c==0) c=1;//x前没读取到数字,说明系数为1
        if (*p=='^') p++;
        while (isdigit(*p)) { d=d*10+*p-'0'; p++; }
        if (d==0) d=1;//x后没读取到数字,说明次数为1
        co[d]=c*sign;
    }
}

void multiply(char *s1,char *s2, int* co)
{
    int co1[N]={0},co2[N]={0},i,j;
    readpoly(s1,co1); readpoly(s2,co2);
    for (i=0;i<N/2;i++)
    for (j=0;j<N/2;j++)
    co[i+j]+=co1[i]*co2[j];
}
int main()
{ 
    char s1[N+1],s2[N+1];
    while(scanf("%s%s",s1,s2)==2)
    { 
        int co[N]={0},out[N],n=0,i;
        multiply(s1,s2,co);
        for (i=0;i<N;i++) if (co[i]) out[n++]=co[i];
        for (i=n-1;i>=0;i--) 
        { 
            printf("%d",out[i]); 
            if (i>0) printf(" "); else printf("\n");
        }
    }
    return 0;
}

read函数根据逻辑将一个多项式的信息写入co数组中,co数组的第i项表示x的i次幂,里面的数是对应项系数。然后multilpy函数将s1s2分别写入co1co2然后相乘得到co数组,最后在主函数中按要求输出即可

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值