多项式四则运算

一元多项式怎么存入计算机?

将多项式对应的x0,x1,x2,x3......xn的系数存储在数组下标为0,1,2,3...n的位置中,

数组的数据就是系数,下标的值就是指数

系数为0的项不能省略

1.相乘的核心程序

for (int i = 0; i <= m; i++)
{
	for (int j = 0; j <= n; j++)
		c[i + j] = a[i] * b[j] + c[i + j];
}

样例:输入两个一元多项式,计算它们的乘积并输出

2.多项式输入函数

这个 C 语言函数的主要目的是从用户那里获取多项式的系数并将其存储到一个整数数组中。以下是函数的详细解释:

void input(int y[], int m)  // 多项式输入函数
{
    for (int i = 0; i < m; i++)
    {
        scanf("%d", &y[i]);  // 使用 scanf 从用户输入读取整数,并将其存储到数组中
    }
}

void:函数没有返回值。
input:函数名。
(int y[], int m):函数接受两个参数,一个是整数数组 `y`,另一个是整数 `m`。`y` 用于存储多项式的系数,而 `m` 表示多项式的阶数或数组的大小。

函数通过 `for` 循环遍历数组的每个元素,从 `i = 0` 到 `i = m - 1`。在每次循环中,使用 `scanf` 函数从标准输入读取一个整数,并将其存储到数组 `y` 的相应位置(即 `y[i]`)

这个函数适用于在程序运行时动态地从用户获取多项式的系数。例如,如果你调用 `input(y, 3)`,并依次输入 2、5 和 7,那么数组 `y` 将包含这个多项式的系数,即 [2, 5, 7]

3.多项式输出函数 

continue语句的作用是跳过本次循环体中余下尚未执行的语句,立即进行下一次的循环条件判定,可以理解为仅结束本次循环

注意!continue语句并没有使整个循环终止

在一条if条件判断中,可以有无数条else if,但是只能有一个else

void output(int a[], int x)
{
    int sum = 0;
    for (int i = 0; i < x; i++)
    {
        if (a[i] == 0)  // 某次幂的项不存在,直接跳过这次循环
        {
            continue;
        }
        else if (i == 0)  // 0次幂的系数直接输出
        {
            printf("%d", a[i]);
        }
        else if (i == 1)  // 1次幂的情况不输出“^1”(1次方)
        {
            if (a[i] == 1)  // 系数为1不需要写1,只需要写+
            {
                printf("+X");
            }
            else if (a[i] == -1)  // 系数为-1时不需要写-1,只需要写-
            {
                printf("-X");
            }
            else if (a[i] > 0)  // 系数大于0
            {
                printf("+%dX", a[i]);
            }
            else if (a[i] < 0)  // 系数小于0
            {
                printf("-%dX", -a[i]);  // 注意取相反数
            }
        }
        else
        {
            if (a[i] == 1)  // 系数为1的时候不需要写1,只需要写+
            {
                printf("+X^%d", i);
            }
            else if (a[i] == -1)  // 系数为-1的时候不需要写1,只需要写-
            {
                printf("-X^%d", i);
            }
            else if (a[i] > 0)  // 系数大于0
            {
                printf("+%dX^%d", a[i], i);
            }
            else if (a[i] < 0)  // 系数小于0
            {
                printf("-%dX^%d", -a[i], i);  // 注意取相反数
            }
        }
    }
}

4.多项式相乘函数

void multiply(int a[], int m, int b[], int n, int c[])
{
	for (int i = 0; i < m + n; i++)
	{
		c[i] = 0;
	}
	for (int j = 0; j < m; j++)
	{
		for (int k = 0; k < n; k++)
		{
			c[j + k] = a[j] * b[k] + c[j + k];
		}
	}
}

整合

#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
#include<iostream>
#include<math.h>

using namespace std;

#define N 100  //这里没有;符号

//多项式多项式输入
void input(int y[], int n)
{
	for (int i = 0; i < n; i++)
	{
		(void)scanf("%d", &y[i]);
	}
}

//多项式输出函数
void output(int y[], int x)
{
	for (int i = 0; i < x; i++)
	{
		if (y[i] == 0)
		{
			continue;
		}
		else if (i == 0)
		{
			printf("%d", y[i]);
		}
		else if (i == 1)
		{
			if (y[i] ==1)
			{
				printf("+X");
			}
			else if (y[i] == -1)
			{
				printf("-X");
			}
			else if (y[i] > 0)
			{
				printf("+%dX", y[i]);
			}
			else if (y[i] < 0)
			{
				printf("%dX", y[i]);
			}
		}
		else
		{
			if (y[i] == 1)
			{
				printf("+X^%d", i);
			}
			else if (y[i] == -1)
			{
				printf("-X^%d", i);
			}
			else if (y[i] > 0)
			{
				printf("+%dX^%d", y[i], i);
			}
			else if (y[i] < 0)
			{
				printf("%dX^%d", y[i], i);
			}	
		}
	}
}

void xiangcheng(int a[], int m, int b[], int n, int c[])
{
	for (int i = 0; i < m + n; i++)
	{
		c[i] = 0;
	}
	for (int j = 0; j < m; j++)
	{
		for (int k = 0; k < n; k++)
		{
			c[m + n] = a[m] * b[n] + c[m + n];
		}
	}
}

int main()
{
	int m, n, max, t, wi;
	int o = 1;
	int P[N], Q[N], R[N];
	int index;
	for (int i = 0; i < N; i++)
	{
		P[i] = 0;
		Q[i] = 0;
	}
	printf("请输入一元多项式P(X)的项数m: ");
	scanf("%d", &m);
	printf("请输入P(X)的系数,按指数由小到大输入:");
	input(P, m);
	printf("您输入的多项式P(X)=");
	output(P, m);
	printf("\n\n请输入一元多项式P(X)的项数n:");
	scanf("%d", &n);
	printf("请输入P(X)的系数,按指数由小到大输入:");
	input(Q, n);
	printf("您输入的多项式P(X)=");
	output(Q, n);

	xiangcheng(P, m, Q, n, R);
	printf("\n\n结果");
	output(R, m + n);
	return 0;
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

挣钱钱暴富富

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值