问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

C语言,多项式相乘

发布网友 发布时间:2023-03-15 15:22

我来回答

3个回答

热心网友 时间:2023-10-26 04:49

#include <stdio.h>
#include <stdlib.h>

typedef struct node {
int coefficient, power;
struct node* next;
}term;

term* new_term(int coefficient, int power) {
term* t = (term*)malloc(sizeof(term));
t->next = NULL;
t->coefficient = coefficient;
t->power = power;
return t;
}

void free_term(term* t) {
free(t);
}

typedef struct list {
term head;
}polynomial;

void init_polynomial(polynomial* p) {
p->head.next = NULL;
}

void clear_polynomial(polynomial* p) {
term* t = p->head.next;
term* del;
while (t != NULL) {
del = t;
t = t->next;
free_term(del);
}
p->head.next = NULL;
}

void insert_polynomial(polynomial* p, term* t) {
t->next = p->head.next;
p->head.next = t;
}

void sort(polynomial* p) {
term* t;
term* next;
int finish = 0, temp;
while (!finish) {
finish = 1;
t = p->head.next;
while (t != NULL) {
next = t->next;
if (next != NULL) {
if (t->power < next->power) {
temp = t->coefficient;
t->coefficient = next->coefficient;
next->coefficient = temp;
temp = t->power;
t->power = next->power;
next->power = temp;
finish = 0;
}
}
t = next;
}
}
}

void combine(polynomial* p) {
term* t = p->head.next;
term* next;
while (t != NULL) {
next = t->next;
if (next != NULL && next->power == t->power) {
t->coefficient += next->coefficient;
t->next = next->next;
free_term(next);
}
else {
t = next;
}
}
}

void multiply(polynomial* p1, polynomial* p2, polynomial* p3) {
term* t1 = p1->head.next;
term* t2;
clear_polynomial(p3);
init_polynomial(p3);
while (t1 != NULL) {
t2 = p2->head.next;
while (t2 != NULL) {
insert_polynomial(p3, new_term(t1->coefficient*t2->coefficient, t1->power + t2->power));
t2 = t2->next;
}
t1 = t1->next;
}
sort(p3);
combine(p3);
}

void input(polynomial* p) {
int coef, power;
char c;
init_polynomial(p);
while (true) {
scanf("%d%d", &coef, &power);
insert_polynomial(p, new_term(coef, power));
c = getchar();
if (c == '\n') break;
}
sort(p);
combine(p);
}

void output(polynomial* p) {
term* t = p->head.next;
while (t != NULL) {
printf("%d %d ", t->coefficient, t->power);
t = t->next;
}
}

int main() {
int i;
polynomial p[3];
for (i = 0; i < 3; i++) {
init_polynomial(&p[i]);
}
for (i = 0; i < 2; i++) {
input(&p[i]);
}
multiply(&p[0], &p[1], &p[2]);
output(&p[2]);
}

热心网友 时间:2023-10-26 04:49

#include<stdio.h>
void array_initialize1(double a[],int size)
{
for(int i=0;i<=size;i++)
a[i]=0.0;
}
void import1(double b[],int num)
{
for(int i=num;i>=0;i--){
scanf("%lf",&b[i]);
}
}
int main()
{
int a,b;
printf("请输入两个多项式的最高次幂:");
scanf("%d%d",&a,&b);
int c=a+b;
double quantic1[a+1],quantic2[b+1],quantic3[c+1];
array_initialize1(quantic1,a+1);
array_initialize1(quantic2,b+1);
array_initialize1(quantic3,c+1);

printf("请从大到小依次输入第一个多项式各项系数:\n");
import1(quantic1,a);
printf("请从大到小依次输入第二个多项式各项系数:\n");
import1(quantic2,b);

for(int i=0;i<=a;i++){
for(int j=0;j<=b;j++){
quantic3[i+j]=quantic3[i+j]+quantic1[i]*quantic2[j];
}
}
printf("则这个两个多项式相乘后的多项式为:");
for(int i=a+b;i>=0;i--){
if(quantic3[i]!=0&&i!=0&&i!=1)
printf("%fx^%d+",quantic3[i],i);
else if(quantic3[i]!=0&&i==1)
printf("%fx+",quantic3[i],i);
else if(quantic3[i]!=0&&i==0)
printf("%f",quantic3[i],i);
}
return 0;
}

热心网友 时间:2023-10-26 04:49

#include<stdio.h>
void Mul(int a[],int b[],int w)
{int shi[40];
int q,k,p,l;
for ( k=0;k<40;k++)
{shi[k]=0;}
for( q=w;q>=0;q--)
{for( p=w;p>=0;p--)
{
shi[q+p]=shi[q+p]+a[q]*b[p];
}
}
printf("\nP(x)*Q(x) = ");
for( l=2*w;l>=0;l--)
{
printf("%dX^%d + ",shi[l],l);
}
printf("0\n");
}
int main()
{
int i,j,k,m;
int x[20];
int y[20];
printf("请输入一元N次多项式的N:");
scanf("%d",&i);
for(j=0;j<=i;j++)
{
printf("P(x) %d次项系数:",j);
scanf("%d",&x[j]);
printf("Q(x) %d次项系数:",j);
scanf("%d",&y[j]);
}
printf("\nP(x) = ");
for (k=i;k>=0;k--)
{printf("%dX^%d + ",x[k],k);}
printf("0");
printf("\nQ(x) = ");
for (m=i;m>=0;m--)
{printf("%dX^%d + ",y[m],m);}
printf("0");
Mul(x,y,i);
}
求采纳为满意回答。
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
鲁迅的朋友圈文案100字以上怎么写 谁知道西宁三中 那首海誓山盟的歌词 谢谢 4字2句诗句有诗意韵味 夜感注释译文 请问哪里可以找到《轩辕剑之天之痕》的未删节版?我真的很想看胡歌扮女 ... 轩辕剑之天之痕电视剧没有地方能看啊。谁有网站或者什么的? 不矜不伐反义词有哪些 不矜不伐的反义词 如何用烤箱做饼干,点心? 儿童蛋糕的做法 烤箱 地球末日生存破解版第二章怎么下载 末日求生日记在哪里下载 地球末日生存电脑版怎么下载 腹背受敌的腹什么意思 亲.求成语造句,要普通点,20字以上. 升仕350e抖动 升仕350e怎么关电 升仕350e和大阳350哪个好 升仕350e油箱怎么打开 350e和350k 买升仕350e需要等多久 佛沙350和升仕350e哪个好 省电问题 厂房耗电量 缛 念什么、 微信注册5个是怎么办到的? 同一个身份证可以注册几个 注册上限5个是什么意思 一个人可以实名认证几个 形意拳术讲义中的步伐图看不明白 事业单位测绘类有哪些专业 测绘工程专业代码 氧气怎样进入细胞参与呼吸作用? 华为nova9pro续航多久 求解答如何在逆战游戏里变声 坑爹哥在战棋直播逆战死神猎手那个变声的怎么弄 逆战真的有变声器吗 离婚6岁孩子怎么判抚养权 民法典变更抚养权的条件 六岁孩子抚养权法律规定 学生怎么瘦腿最快 华为充电保护在哪里关闭 铁路|2306注册的邮箱怎么写邮编指什么 怎样登陆I2306 你好、我以前注册过|2306帐号、用户名和密码忘了怎么办?现在不能注册了? |2306网站查询火车票购买何时预售合肥一贵阳北G285次动车至 温带海洋性气候详细资料大全 做梦梦到和别人一起捉蝎子是什么预兆 马自达3音响怎么调最好音质 马自达3改装音响效果、隔音、倒车雷达和GPS估计要多少费用