鱼C论坛

 找回密码
 立即注册
查看: 1483|回复: 7

[已解决]这道题求大佬解决 求完整的代码

[复制链接]
发表于 2020-12-4 16:19:44 | 显示全部楼层 |阅读模式
10鱼币
设计函数分别求两个一元多项式的乘积与和。要求:(1) 输入分2行,每行分别先给出多项式非零项的个数,再以指数递降方式输入一个多项式非零项系数和指数(绝对值均为不超过1000的整数)。数字间以空格分隔。(2)输出分2行,分别以指数递降方式输出乘积多项式以及和多项式非零项的系数和指数。数字间以空格分隔,但结尾不能有多余空格。零多项式应输出0 0。

例:
已知以下两个多项式(其中x^4表示x的4次幂):
3x^4 - 5x^2 + 6x -2
5𝑥^20 − 7𝑥^4 + 3𝑥
多项式和为:
5𝑥^20−4 x^4 −5x^2 + 9x -2
多项式的乘积为
15x^24-25𝑥^22+30𝑥^21−10𝑥^20−21𝑥^8+35𝑥^6−33𝑥^5+14𝑥^4−15𝑥^3+18𝑥^2−6𝑥

# 输入样例:
4                    //第一个多项式的项数
3 4 -5 2 6 1 -2 0     // 第一项的系数是3,第一项指数是4 ……
3                                      //第二个多项式的项数  
5 20        -7 4        3 1

# 输出样例:
5 20 -4 4 -5 2 9 1 -2 0
15 24 -25 22 30 21 -10 20 -21 8 35 6 -33 5 14 4 -15 3 18 2 -6 1
最佳答案
2020-12-4 16:19:45
本帖最后由 风过无痕1989 于 2020-12-4 20:38 编辑
小曹网络 发表于 2020-12-4 17:25
那个是多项式的乘积出来的结果 可能乱码了

#include<stdio.h>

int main()
{
        int i,j;
        int a[21][21] = { 0, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 3, 0,-5, 6,-2,
                          0, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 4, 0, 2, 1, 0};
        int b[21][21] = { 5, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-7, 0, 0, 3, 0,
                          20,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 4, 0, 0, 1, 0,};
        int c[21][21] = { 0 }, d[42][42] = { 0 };

        for (i = 0;i < 21;i++)                    // 两多项式相加
        {
                c[0][i] = a[0][i] + b[0][i];          // 系数相加
                if (a[1][i] > b[1][i])                // 指数不变
                        c[1][i] = a[1][i];
                else
                        c[1][i] = b[1][i];
    }
        
        for (i = 0;i < 21;i++)                    // 两多项式相乘
        {
                for (j = 0;j < 21;j++)
                {
                        d[0][i + j] += a[0][i] * b[0][j]; // 系数相乘
                        if (a[0][i] != 0 && b[0][j] != 0) // 系数不为 0 ,指数相加
                        {
                                d[1][i + j] = a[1][i] + b[1][j];
                        }
                }
        }

        for (i = 0;i < 21;i++)                    // 输出两多项式的和
                if (c[0][i] != 0)
                        printf("%d %d ", c[0][i], c[1][i]);
        printf("\b\b\n");                            // 按题目要求删除末尾的空格

        for (i = 0;i < 42;i++)                    // 输出两多项式的积
                if (d[0][i] != 0)
                        printf("%d %d ", d[0][i], d[1][i]);
        printf("\b\b\n");                           // 按题目要求删除末尾的空格

        return 0;

}
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2020-12-4 16:19:45 | 显示全部楼层    本楼为最佳答案   
本帖最后由 风过无痕1989 于 2020-12-4 20:38 编辑
小曹网络 发表于 2020-12-4 17:25
那个是多项式的乘积出来的结果 可能乱码了

#include<stdio.h>

int main()
{
        int i,j;
        int a[21][21] = { 0, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 3, 0,-5, 6,-2,
                          0, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 4, 0, 2, 1, 0};
        int b[21][21] = { 5, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-7, 0, 0, 3, 0,
                          20,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 4, 0, 0, 1, 0,};
        int c[21][21] = { 0 }, d[42][42] = { 0 };

        for (i = 0;i < 21;i++)                    // 两多项式相加
        {
                c[0][i] = a[0][i] + b[0][i];          // 系数相加
                if (a[1][i] > b[1][i])                // 指数不变
                        c[1][i] = a[1][i];
                else
                        c[1][i] = b[1][i];
    }
        
        for (i = 0;i < 21;i++)                    // 两多项式相乘
        {
                for (j = 0;j < 21;j++)
                {
                        d[0][i + j] += a[0][i] * b[0][j]; // 系数相乘
                        if (a[0][i] != 0 && b[0][j] != 0) // 系数不为 0 ,指数相加
                        {
                                d[1][i + j] = a[1][i] + b[1][j];
                        }
                }
        }

        for (i = 0;i < 21;i++)                    // 输出两多项式的和
                if (c[0][i] != 0)
                        printf("%d %d ", c[0][i], c[1][i]);
        printf("\b\b\n");                            // 按题目要求删除末尾的空格

        for (i = 0;i < 42;i++)                    // 输出两多项式的积
                if (d[0][i] != 0)
                        printf("%d %d ", d[0][i], d[1][i]);
        printf("\b\b\n");                           // 按题目要求删除末尾的空格

        return 0;

}
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2020-12-4 17:21:42 | 显示全部楼层
25&#119909;^22+30&#119909;^21&#8722;10&#119909;^20&#8722;21&#119909;^

这都是些什么乱七八糟的东东?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2020-12-4 17:25:25 | 显示全部楼层
风过无痕1989 发表于 2020-12-4 17:21
25&#119909;^22+30&#119909;^21&#8722;10&#119909;^20&#8722;21&#119909;^

这都是些什么乱七八糟的东东 ...

我也不清楚 老师发的
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2020-12-4 17:25:57 | 显示全部楼层
风过无痕1989 发表于 2020-12-4 17:21
25&#119909;^22+30&#119909;^21&#8722;10&#119909;^20&#8722;21&#119909;^

这都是些什么乱七八糟的东东 ...

那个是多项式的乘积出来的结果 可能乱码了
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2020-12-4 20:03:20 | 显示全部楼层
风过无痕1989 发表于 2020-12-4 19:56
两多项式相加的出来了,相乘的 21项,有点多,还需要调试

ok  乘法的好了你就发给我吧 感谢兄弟
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2020-12-4 20:28:19 | 显示全部楼层
小曹网络 发表于 2020-12-4 20:03
ok  乘法的好了你就发给我吧 感谢兄弟

终于调试好了,上面的程序,我已经修改
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2020-12-6 07:21:31 | 显示全部楼层
风过无痕1989 发表于 2020-12-4 20:28
终于调试好了,上面的程序,我已经修改

好的  谢谢兄弟
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-1-12 12:26

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表