数学建模社区-数学中国

标题: 两个多项式相加怎么用c预言编写 [打印本页]

作者: 帝通    时间: 2014-12-15 16:55
标题: 两个多项式相加怎么用c预言编写
速求啊,有知道的大神吗?
% O  R/ F) [/ v% h9 f; b3 c5 V
作者: 数学中国—罂粟    时间: 2014-12-15 18:00
#include<stdio.h>/ P3 ~; A& T5 W7 B- b; Z
#include<malloc.h>
" k4 }! b+ _$ Y3 m+ m' htypedef struct node
, z; V( k& m$ r) ]. a( T$ o. {3 K( e$ ]{- h. M: i7 f* z! g7 S
float xi;
* Q  b4 B+ [0 A/ p5 ` int n;
# N  j$ z. q; _2 @4 Z/ c struct node *next;( T& ~. d: p% Q, b6 o  ]% F
}term;
, i" x' i: H* U8 t7 |; mvoid sort(term *head)
/ }, }, K! F5 T( p  d0 k{
3 w* G# E- Q) W) n4 F  n term *p,*q,*s;
( Z" ~( B5 k5 P& M# \/ C p=(term *)malloc(sizeof(term));
& n+ i% f9 ?+ L1 x q=(term *)malloc(sizeof(term));
: q! W% H! }7 [ s=(term *)malloc(sizeof(term));
' B5 I2 W9 ~$ n7 K4 H       p=head;: g9 A9 @0 M  N5 z+ Q& w, T
   
/ D) W# u- W, K/ k while(p->next!=NULL)
, A7 a$ ?2 A# `9 u. {( \  y {
, c  _4 \# v' t; x( }       s=p->next;  Z* H5 J( K& E/ C* y9 a
while(s!=NULL)
' U2 q* f; j2 v3 u {    + D; s, Q7 r( f
    if(p->n>s->n)1 E& Z$ U, ^+ U7 ]! C% |8 n5 o, p' _* K
   {
* \, F1 X* z+ N4 `3 F0 f0 q    q->n=p->n;& n8 z( h, D% r+ m) }: p
     p->n=s->n;
2 u4 f: J# I# j+ U9 \     s->n=q->n;0 Z: ~0 Z; I7 N- |8 H
     q->xi=p->xi;) x1 x4 @5 A, }2 a4 `! Z+ p
  p->xi=s->xi;
, p7 P+ [* v5 m* B0 I' M  s->xi=q->xi;
$ Z* [$ _  P% x! ?/ `/ F2 ?* B$ w   }
6 f# z+ g& i5 D3 O: f2 E   s=s->next;
2 Q3 K2 N4 w# b# s8 f; o; r  ^0 V }
+ s8 \" A8 x7 N- m; r9 a p=p->next;* G# X; H4 n9 p" Q0 L
}0 s; E* d& D3 f% J0 g2 R: B
}6 ^6 j7 x# p6 i
term *polynadd(term *head1,term *head2)
+ U1 k' A: c; g( B" O% n( `{
5 a  l# e  M" |3 ? term *p,*q,*s,*r,*head3;/ ^- X/ e( S' t: }& k
float x;
' o( Y. e# x% r  X  v p=head1->next;
. y, a5 t- p9 B* J& ?: L5 l- h q=head2->next;
$ t( `. |% Q" f* J" z" y5 w head3=(term *)malloc(sizeof(term));: ~% S: g" I5 j1 w6 `
r=head3;! }* h3 k: b' H7 @" A3 {
while(p!=NULL&&q!=NULL)
6 `! o4 I' U! N4 t* L {
( |: }! `/ K1 T# ~4 a  if(p->n==q->n)
5 V' C7 }3 H  }( S  X  {
9 F- k4 n* k$ ^( m& f" l   x=p->xi+q->xi;
, k+ G- o5 B: R   if(x!=0); s2 B0 h2 K6 U; S' t3 I$ w
   {
4 a  f  O5 x; `( q1 a7 n    s=(term *)malloc(sizeof(term));
( n8 }7 k7 Q- d4 S, T8 y* M    s->xi=x;
3 v' F- U' R* k8 @. E3 M    s->n=p->n;
1 F9 o8 v; ~2 y% F( s* I    r->next=s;
4 _9 p0 L7 M2 D* D6 w8 j    r=s;' t6 g; S& @- f/ ?) m
   }9 z( k% l1 n, P) @9 i- ?
   p=p->next;
9 r' Y6 w+ n. i$ l8 a/ ^; H4 @4 F$ j! w   q=q->next;
# Z3 M, U, D$ G  }
5 ^- t, `6 m! |2 }3 x0 o) u  else if(p->n>q->n)
4 ?8 R7 ~3 [3 s4 [$ I& Q   {
' A4 y7 U1 B3 F+ w    s=(term *)malloc(sizeof(term));
$ E  [4 Z6 V) b7 d* n# _5 k# N    s->n=q->n;
6 ?' y0 |+ R! z8 ?2 Q    s->xi=q->xi;
4 ~8 Y0 @& V' ^, R2 a    r->next=s;8 s) }9 o- a4 {1 I
    r=s;
4 V8 ?6 U6 F9 ?. y- W/ ~- d    q=q->next;) U$ J! _# m2 [' n. @4 I& s
   }
2 G/ t  r# }' }0 V, q$ B4 t  else! w( Q. Z, v; h; L$ s
  {4 p* ], f+ ?; [; p! A4 h7 b0 b9 Q0 B, _
   s=(term *)malloc(sizeof(term));
4 m; G6 w/ v  W   s->n=p->n;
+ p) f6 F* \. G3 S9 ]   s->xi=p->xi;! |+ J1 Z5 G3 `; y# `5 V! `
   r->next=s;" i. Z3 k; J! s/ x! W
   r=s;
" b6 ~$ f4 ?. W) P8 Q! t' o# d$ x   p=p->next;" L2 B- ~5 w5 L- O
  }
' B1 a3 u! x# ^$ D    }' z5 `- F( f3 C
  while(p!=NULL)% h& F1 i. E& A! ~$ e  f
  {  p4 n: Q6 E* k% X( O) v
   s=(term *)malloc(sizeof(term));7 ?( O# Z" Z$ S- A2 g
   s->n=p->n;0 \5 Q3 F! s* u8 B' p* Y
   s->xi=p->xi;$ ~' q9 C/ x( N7 v
   r->next=s;# A+ g0 H7 I. ~! x( A. W( I0 |1 M
   r=s;
7 M9 `3 ?3 p' G$ C: |% f5 H   p=p->next;
9 f2 f+ g* }6 u* `, y  }
' v, _. [( v2 M7 X; }8 |  while(q!=NULL)) `) ^' k+ P" J7 @5 C
  {9 m' d8 h% ]1 j3 _
   s=(term *)malloc(sizeof(term));- n; j8 G* L" F
   s->n=q->n;
; D% u9 U/ t0 M+ r6 X5 H- D   s->xi=q->xi;7 J! M# @) |) c  y8 g5 s$ |' D: u
   r->next=s;; K( |6 o9 c5 ?7 u% k
   r=s;
& ~, n  w* x6 u  F: Y* S   q=q->next;  c. _* h! B! U# Y1 i) R( e; G2 C+ C
  }
% \- W5 ^3 K6 W" Z  r->next=NULL;
9 w5 a% @  O& Y1 |  return head3;
6 J4 X2 D) M2 J% y: S& B* I6 d              
& Y; q( d" x" g6 W; V}
2 V; J; v& a1 |! Nterm *createpolyn(int m); ?3 `" h5 j" q/ H% u8 S# J
{& x2 E1 l2 c, m0 F
8 q  g0 ^0 |# T6 u# Y* W- ?
term *p,*head,*q;
8 a7 V) y3 Z9 V! {5 J9 x int i;
# l6 k6 M. i! q/ D    head=(term *)malloc(sizeof(term));- s4 M! D' Z& l# U; B$ e4 S
    q=head;
/ d( r& i0 H: P for(i=0;i<m;i++)
) v1 u* `4 X4 F7 t) C9 t {. Q6 @8 o5 Z9 w! B
  p=(term *)malloc(sizeof(term));& I6 J3 h* G" A2 ^: I
  printf("请输入第%d项数的系数和指数\n",i+1);# a4 k! G, l8 e& Z
  scanf("%f%d",&p->xi,&p->n);
: J% ^! z: T5 k  q->next=p;, c- [) H+ g8 m
  q=p;
' G4 ?$ N5 ~$ f/ a( R4 u6 }7 { }9 i# B. q: ~) E. ?) c, J
    p->next=NULL;
; i; H3 f! X- o. v# s return head;7 M1 ?4 p. r% p8 _( ]$ G

' _9 O. p3 M- F}! D" f( g8 i0 W+ a
dayin(term *head)5 g, h# F2 T- e# I; M! l' R3 s" t. R
{
8 t4 j# \. r; ^4 [- k/ v term *p,*q;( x% f, G4 C* [7 Y+ q
q=head->next;4 d% h4 q* p7 Y
       if(q->xi==0)
# z. P2 J0 f1 y0 @) k   printf("      ");* G0 I5 X% u, U# p7 V2 n; X
    if(q->n==0&&q->xi>0&&q->xi!=1)
. k; Y  b# M8 n! v- A/ e  ]" {: S     printf("%0.2f",q->xi);
5 t8 s; t" [3 X6 I    if(q->n==0&&q->xi==1)9 w2 z% X% E% \+ v* u% G
     printf("1");
: X# ^5 }/ o. g: T    if(q->n==0&&q->xi<0)1 N+ G2 w9 Z2 c! V) q; U1 b3 L
     printf("%0.2f",q->xi);. B! [% g' M# a
    if(q->n==1&&q->xi==1)
, W: S2 w" V( ~     printf("x");
( k6 \. K  v3 W3 P& L    if(q->n==1&&q->xi!=1&&q->xi>0)% @/ i. i4 y5 P6 V
     printf("%0.2fx",q->xi);
* G4 _8 H0 s+ e3 z    if(q->n==1&&q->xi!=1&&q->xi<0)
( |+ L8 O5 \' E6 w     printf("%0.2fx",q->xi);
0 D5 h' X2 w$ W, R    if(q->n!=1&&q->n!=0&&q->xi>0&&q->xi!=1)
, S" U' z9 `; H4 l# d     printf("%0.2fx^%d",q->xi,q->n);
" P2 E' I( K. h/ U; r# B4 p    if(q->n!=1&&q->n!=0&&q->xi<0)* d# t* h; N( ]$ K& a( M$ ?
     printf("%0.2fx^%d",q->xi,q->n);+ T1 j2 b+ s- D: ~* K
    if(q->n!=0&&q->n!=1&&q->xi==1)* e8 g2 t: o- e$ n$ x: L4 G
     printf("x^%d",q->n);7 J$ e1 Z1 b! u4 N6 Y# A  l0 O
    p=q->next;/ @+ ]; c( z/ f3 P" E( ~
while(p!=NULL)
: T; j6 _: Z: |- e- h/ O0 p {
& g+ O3 `7 b1 z' V8 Q  if(p->xi==0)+ u& @% G2 V4 U/ r
   printf("      ");" i: K9 |3 H' T9 O  F6 C0 c+ y2 ?- }
    if(p->n==0&&p->xi>0&&p->xi!=1)& d' j, z% I- {4 u. O9 m
     printf("+%0.2f",p->xi);5 _( k! W, j6 T& Y* @
    if(p->n==0&&p->xi==1)/ f' y  M# `" R$ w! J$ I, r
     printf("+1");# |/ v6 F: S+ c! B# x! X7 x) T
    if(p->n==0&&p->xi<0)3 c' I+ O4 |+ U
     printf("%0.2f",p->xi);
6 }% B' K1 ]$ c7 Y$ J! M1 O    if(p->n==1&&p->xi==1)
0 }8 w) k# R9 }( H0 K2 b     printf("+x");
* s6 w$ d) S2 G# V, ?* [( M) u5 z    if(p->n==1&&p->xi!=1&&p->xi>0)( O, [: g+ Y% C1 g2 L3 n
     printf("+%0.2fx",p->xi);
1 E4 t3 f6 H. O9 o    if(p->n==1&&p->xi!=1&&p->xi<0)
5 s" B" @& ^  J6 D     printf("%0.2fx",p->xi);
/ R% k/ Z8 d2 ~! j1 i    if(p->n!=1&&p->n!=0&&p->xi>0&&p->xi!=1)/ Q  U) T+ O, B4 R! [
     printf("+%0.2fx^%d",p->xi,p->n);
; g1 _* p- [# \# _% I/ U2 j    if(p->n!=1&&p->n!=0&&p->xi<0)( O  \7 q4 I7 K+ B, j
     printf("%0.2fx^%d",p->xi,p->n);
- V0 ^. B% a. ~- o    if(p->n!=0&&p->n!=1&&p->xi==1). f& t1 ?# H0 F1 x" P
     printf("+x^%d",p->n);
' c9 s. {/ k  C) f$ b    p=p->next;- B% S. h" L# h* b
}2 i& ~' h8 \" W2 J$ x! U: C5 x" e: c
printf("\n");& f1 E: {% N& s5 f3 }& K
}( P1 r7 a, V) k: H- E5 D
main()
' x5 j& m0 I; \) V/ s2 l{$ ?- Z6 c1 [% C- v# Q
   int i,j;, z% I/ F7 {/ m
   term *head1,*head2,*head3;- I# A" |+ U& f
   printf("请输入第一个多项式的项数:\n");
- i7 E$ z, U8 t2 d   scanf("%d",&i);
1 ~% z+ I! M( R8 x4 ]   head1=createpolyn(i);
# N( i. Q5 H4 w; Y1 M   sort(head1);7 ^' z8 \! a! T8 x' M$ B% c
   printf("\n");/ }- T1 a2 r* m4 C# v
   dayin(head1);
- F1 G" X0 n( s5 R  D$ ]  R. x2 y- [   printf("\n");
- F/ U; A: y, k5 b   printf("请输入第二个多项式的项数:\n");
% F7 v3 |! C5 h- q$ \& ^6 \; L   scanf("%d",&j);
! @  K! ?7 h/ x  D2 w5 P9 b8 ]' O, a   head2=createpolyn(j);0 h: S! [! s6 Y5 D
   sort(head2);
* V8 V( `. C  ^6 ~% _% o   printf("\n");* `! v- ^( p! V. `+ V; {
   dayin(head2);
( }# V" G( c- k0 |5 C   printf("\n\n");
1 B- q2 L& c5 Z   head3=polynadd(head1,head2);
, d  y, N$ n* I5 `: X0 R. G   sort(head3);
  C* k, K3 I( D   printf("\n");) H0 u9 Z4 _4 _% ?3 c
   dayin(head3);0 Z7 r7 J! y# x4 z5 l  ?/ C
   printf("\n");0 g/ w" O$ t: T- j  j7 e$ N
}+ p* D3 q9 Z6 j  `4 u2 M* c" j* a- `

作者: 帝通    时间: 2014-12-16 08:25
数学中国—罂粟 发表于 2014-12-15 18:00 8 |9 R; e4 U% ]3 z: @- o
#include
& Y7 ]5 P1 G- o9 O/ x#include
7 D% w0 A& W+ K. x. i' \# a7 atypedef struct node
3 b$ \; i* U$ K0 w  W! h) z' R/ v
能不能给个文档,我下载下来,谢谢
5 m: T" b9 q+ |3 R$ P+ E
作者: 慢跑20    时间: 2015-3-21 11:03
链表,感谢楼上的分享呀。
& {! b" T# _+ X7 i+ T; Y9 u8 [




欢迎光临 数学建模社区-数学中国 (http://www.madio.net/) Powered by Discuz! X2.5