早教吧作业答案频道 -->其他-->
C语言,描述多项式加法题目内容:一个多项式可以表达为x的各次幂与系数乘积的和,比如:2x6+3x5+12x3+6x+20现在,你的程序要读入两个多项式,然后输出这两个多项式的和,也就是把对应的
题目详情
C语言,描述多项式加法
题目内容:
一个多项式可以表达为x的各次幂与系数乘积的和,比如:
2x6+3x5+12x3+6x+20
现在,你的程序要读入两个多项式,然后输出这两个多项式的和,也就是把对应的幂上的系数相加然后输出。
程序要处理的幂最大为100。
输入格式:
总共要输入两个多项式,每个多项式的输入格式如下:
每行输入两个数字,第一个表示幂次,第二个表示该幂次的系数,所有的系数都是整数。第一行一定是最高幂,最后一行一定是0次幂。
注意第一行和最后一行之间不一定按照幂次降低顺序排列;如果某个幂次的系数为0,就不出现在输入数据中了;0次幂的系数为0时还是会出现在输入数据中。
输出格式:
从最高幂开始依次降到0幂,如:
2x6+3x5+12x3-6x+20
注意其中的x是小写字母x,而且所有的符号之间都没有空格,如果某个幂的系数为0则不需要有那项。
输入样例:
6 2
5 3
3 12
1 6
0 20
6 2
5 3
2 12
1 6
0 20
输出样例:
4x6+6x5+12x3+12x2+12x+40
题目内容:
一个多项式可以表达为x的各次幂与系数乘积的和,比如:
2x6+3x5+12x3+6x+20
现在,你的程序要读入两个多项式,然后输出这两个多项式的和,也就是把对应的幂上的系数相加然后输出。
程序要处理的幂最大为100。
输入格式:
总共要输入两个多项式,每个多项式的输入格式如下:
每行输入两个数字,第一个表示幂次,第二个表示该幂次的系数,所有的系数都是整数。第一行一定是最高幂,最后一行一定是0次幂。
注意第一行和最后一行之间不一定按照幂次降低顺序排列;如果某个幂次的系数为0,就不出现在输入数据中了;0次幂的系数为0时还是会出现在输入数据中。
输出格式:
从最高幂开始依次降到0幂,如:
2x6+3x5+12x3-6x+20
注意其中的x是小写字母x,而且所有的符号之间都没有空格,如果某个幂的系数为0则不需要有那项。
输入样例:
6 2
5 3
3 12
1 6
0 20
6 2
5 3
2 12
1 6
0 20
输出样例:
4x6+6x5+12x3+12x2+12x+40
▼优质解答
答案和解析
1. #include"malloc.h"
2. typedef struct Polyn /*定义多项式每一项的类型*/
3. {
4. float cofe; /*每一项系数*/
5. int expn; /*每一项的指数*/
6. struct Polyn *next;
7. struct Polyn *prior;
8. }*Pol.yn,SNode;
9. void setPolyn(Polyn *t1,Polyn *t2,int n) /*建立多项式*/
10. {
11. float a;
12. int i,b;
13. *t1=(SNode *)malloc(sizeof(SNode)); /*创建头节点*/
14. (*t1)->next=NULL;
15. for(i=0;i 16. {
17. *t2=(SNode *)malloc(sizeof(SNode));
18. scanf("%f,%d;",&a,&b);
19. (*t2)->cofe=a; (*t2)->expn=b;
20. (*t1)->next->prior=(*t2);
21. (*t2)->prior=(*t1);
22. (*t2)->next=(*t1)->next;
23. (*t1)->next=(*t2);
24. } /*创建每一项并连接成多项式*/
25. }
26. void print(Polyn *t) /*输出多项式*/
27. {
28. Polyn p;
29. for(p=(*t)->next;p!=NULL;p=p->next)
30. printf("%f,%d;",p->cofe,p->expn);
31. printf("");
32. }
33. void arrange(Polyn *t) /*化简多项式*/
34. {
35. float m1;
36. int m2;
37. Polyn p,q,r,s;
38. for(p=(*t)->next;p!=NULL;p=p->next)
39. for(q=p->next;q!=NULL;q=q->next)
40. if((p->expn)>(q->expn))
41. {
42. m1=p->cofe;p->cofe=q->cofe;q->cofe=m1;
43. m2=p->expn;p->expn=q->expn;q->expn=m2;
44. } /*冒泡法多项式指数排序*/
45. for(p=(*t)->next;p!=NULL;p=p->next)
46. if((p->expn)==(p->next->expn))
47. {
48. r=p->next;
49. p->cofe+=p->next->cofe;
50. p->next=p->next->next;
51. p=p->prior; /*指针指向上一结点(须重新处理现在处理 的结点)*/
52. free(r);
53. if((p->next->cofe)==0)
54. {
55. s=p->next;
56. p->next=p->next->next;
57. free(s);
58. }
59. } /*多项式相同指数项系数求和,化简多项式*/
60. }
61. void linkPolyn(Polyn *t1,Polyn *t2) /*两个多项式连接*/
62. {
63. Polyn p,q;
64. for(p=(*t2)->next;p!=NULL;p=p->next)
65. q=p;
66. p=(*t2)->next;
67. q->next=(*t1)->next;
68. (*t1)->next->prior=q;
69. (*t1)->next=p;
70. p->prior=(*t1);
71. }
72. main() /*主函数*/
73. {
74. Polyn La,la,Lb,lb;
75. int n,m; /*多项式项数*/
76. printf("enter La’s lenth:");
77. scanf("%d",&n);
78. setPolyn(&La,&la,n);
79. arrange(&La);
80. printf("after arrange La is:");
81. print(&La); /*输入多项式La,化简并输出*/
82. printf("enter Lb’s lenth:");
83. scanf("%d",&m);
84. setPolyn(&Lb,&lb,m);
85. arrange(&Lb);
86. printf("after arrange Lb is:");
87. print(&Lb); /*输入多项式Lb,化简并输出*/
88. linkPolyn(&La,&Lb); /*La与Lb连接,形成新的La*/
89. arrange(&La); /*化简La*/
90. printf("after add Polyn is :");
91. print(&La); /*输出结果*/
92. }
2. typedef struct Polyn /*定义多项式每一项的类型*/
3. {
4. float cofe; /*每一项系数*/
5. int expn; /*每一项的指数*/
6. struct Polyn *next;
7. struct Polyn *prior;
8. }*Pol.yn,SNode;
9. void setPolyn(Polyn *t1,Polyn *t2,int n) /*建立多项式*/
10. {
11. float a;
12. int i,b;
13. *t1=(SNode *)malloc(sizeof(SNode)); /*创建头节点*/
14. (*t1)->next=NULL;
15. for(i=0;i
17. *t2=(SNode *)malloc(sizeof(SNode));
18. scanf("%f,%d;",&a,&b);
19. (*t2)->cofe=a; (*t2)->expn=b;
20. (*t1)->next->prior=(*t2);
21. (*t2)->prior=(*t1);
22. (*t2)->next=(*t1)->next;
23. (*t1)->next=(*t2);
24. } /*创建每一项并连接成多项式*/
25. }
26. void print(Polyn *t) /*输出多项式*/
27. {
28. Polyn p;
29. for(p=(*t)->next;p!=NULL;p=p->next)
30. printf("%f,%d;",p->cofe,p->expn);
31. printf("");
32. }
33. void arrange(Polyn *t) /*化简多项式*/
34. {
35. float m1;
36. int m2;
37. Polyn p,q,r,s;
38. for(p=(*t)->next;p!=NULL;p=p->next)
39. for(q=p->next;q!=NULL;q=q->next)
40. if((p->expn)>(q->expn))
41. {
42. m1=p->cofe;p->cofe=q->cofe;q->cofe=m1;
43. m2=p->expn;p->expn=q->expn;q->expn=m2;
44. } /*冒泡法多项式指数排序*/
45. for(p=(*t)->next;p!=NULL;p=p->next)
46. if((p->expn)==(p->next->expn))
47. {
48. r=p->next;
49. p->cofe+=p->next->cofe;
50. p->next=p->next->next;
51. p=p->prior; /*指针指向上一结点(须重新处理现在处理 的结点)*/
52. free(r);
53. if((p->next->cofe)==0)
54. {
55. s=p->next;
56. p->next=p->next->next;
57. free(s);
58. }
59. } /*多项式相同指数项系数求和,化简多项式*/
60. }
61. void linkPolyn(Polyn *t1,Polyn *t2) /*两个多项式连接*/
62. {
63. Polyn p,q;
64. for(p=(*t2)->next;p!=NULL;p=p->next)
65. q=p;
66. p=(*t2)->next;
67. q->next=(*t1)->next;
68. (*t1)->next->prior=q;
69. (*t1)->next=p;
70. p->prior=(*t1);
71. }
72. main() /*主函数*/
73. {
74. Polyn La,la,Lb,lb;
75. int n,m; /*多项式项数*/
76. printf("enter La’s lenth:");
77. scanf("%d",&n);
78. setPolyn(&La,&la,n);
79. arrange(&La);
80. printf("after arrange La is:");
81. print(&La); /*输入多项式La,化简并输出*/
82. printf("enter Lb’s lenth:");
83. scanf("%d",&m);
84. setPolyn(&Lb,&lb,m);
85. arrange(&Lb);
86. printf("after arrange Lb is:");
87. print(&Lb); /*输入多项式Lb,化简并输出*/
88. linkPolyn(&La,&Lb); /*La与Lb连接,形成新的La*/
89. arrange(&La); /*化简La*/
90. printf("after add Polyn is :");
91. print(&La); /*输出结果*/
92. }
看了 C语言,描述多项式加法题目内...的网友还看了以下:
多边形及其内角和.如图,BC垂直CD,∠1=∠2=∠3,∠4=60º,∠5=∠6.1)CO是三角形 2020-04-27 …
初一下人教基训数学多边形及其内角和如图,有三根木棒a,b,c,长分别为a=6cm,b=12cm,c 2020-06-14 …
已知内角和如何求边数 2020-06-17 …
依照例句比喻形式,另写两组句子。要求选择新的喻体,意思完整。生命是一张网页,你必须知道书写的内容和 2020-06-25 …
依照例句比喻形式,另写两组句子。要求选择新的喻体,意思完整。(5分)生命是一张网页,你必须知道书写 2020-07-04 …
依照下面的比喻形式,另写两组句子。要求选择新的喻体,意思完整。(不要求与原句字数相同)生命是一张网页 2020-11-24 …
汤姆和表姐玛丽经常在网上聊天,2地的2年的月两人又在55上见面了,请结合以六聊天内容和如图,完成六列 2020-11-29 …
怎样用平移证明三角形的内角和如何用平移来证明三角形的内角和啊 2021-02-01 …
三角形的内角和如图所示,把一个三角形纸片ABC顶角向内折叠3次之后,3个顶点不重合,那么图中∠1+∠ 2021-02-01 …
初一下册多边形内角和如果n边形与m边形的内角和的度数差为1080度,m-n=? 2021-02-21 …