关于计算数学多项式的代码

#include <iostream>

#include <cstdio>

#include <string>

#include <cstring>

#include <cstdlib>

#include <vector>

using namespace std;

int a[10000001],b[10000001],zhongjian[10000];

int main()
{
    int i,j,jishu=2,n,m;//n为当前多项式的阶数,m为新的多项式的阶数,ij为计数变量,jishu为记下第几个多项式专用
    printf("请输入第1个多项式的阶数:");
    scanf("%d",&n);
    printf("请输入每一项的系数:");
    for(i=n;i>=0;i--)//输入当前多项式的阶数
        scanf("%d",&a[i]);
    printf("请输入第2个多项式的阶数:");
    while(~scanf("%d",&m),m)
    {
        memset(zhongjian,0,sizeof(zhongjian));
        jishu++;//新的多项式
        printf("请输入每一项的系数:");
        for(i=m;i>=0;i--)//输入新的多项式的阶数
            scanf("%d",&b[i]);
        //开始整合运算
        for(i=0;i<=n;i++)
            for(j=0;j<=m;j++)
                zhongjian[i+j]=zhongjian[i+j]+a[i]*b[j];
        for(i=0;i<=m+n;i++)//把计算好的多项式放在a中
            a[i]=zhongjian[i];
        printf(" f(x)= ");
        for(i=m+n;i>=0;i--)
        {
            if(i==m+n)
            {
                if(a[i]!=1&&a[i]!=0)
                    printf("%d x^%d ",a[i],i);
                else if(a[i]==1)
                    printf("x^%d ",i);
            }
            else if(i>1&&a[i]>0&&i!=m+n)
            {
                if(a[i]!=1)
                    printf("+ %d x^%d ",a[i],i);
                else
                    printf("+ x^%d ",i);
            }
            else if(i>1&&a[i]<0&&i!=m+n)
            {
                if(a[i]!=1)
                    printf("%d x^%d ",a[i],i);
                else
                    printf("x^%d ",i);
            }
            else if(i==1&&a[i]>0)
            {
                if(a[i]!=1)
                    printf("%+ d x ",a[i],i);
                else
                    printf("+ x ",i);
            }
            else if(i==1&&a[i]<0)
            {
                if(a[i]!=1)
                    printf("%d x ",a[i],i);
                else
                    printf("x ",i);
            }
            else if(i==0&&a[i]>0)
                printf(" + %d ",a[0]);
            else if(i==0&&a[i]<0)
                printf("%d ",a[0]);
        }
        printf("\n\n请输入第%d个多项式的阶数:",jishu);
    }
    return 0;
}

//该代码利用的就是模拟
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值