2023年全國(guó)碩士研究生考試考研英語(yǔ)一試題真題(含答案詳解+作文范文)_第1頁(yè)
已閱讀1頁(yè),還剩19頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

1、<p><b>  《數(shù)據(jù)結(jié)構(gòu)》</b></p><p><b>  課程設(shè)計(jì)報(bào)告</b></p><p>  學(xué) 號(hào): </p><p>  姓 名: </p><p>  班 級(jí): 1

2、0計(jì)算機(jī)科學(xué)與技術(shù)(2)班 </p><p>  指導(dǎo)教師: </p><p>  成 績(jī): </p><p><b>  課程設(shè)計(jì)基本情況</b></p><p><b>  1、設(shè)計(jì)名稱</b></p>&

3、lt;p><b>  一元多項(xiàng)式計(jì)算</b></p><p><b>  2、主要功能</b></p><p>  能夠按照指數(shù)降序排列建立并輸出多項(xiàng)式;能夠完成兩個(gè)多項(xiàng)式的相加、相減,并將結(jié)果輸出;</p><p><b>  3、設(shè)計(jì)平臺(tái)</b></p><p>  

4、電腦、Visual c++ 6.0</p><p><b>  系統(tǒng)設(shè)計(jì)</b></p><p><b>  1、算法思想</b></p><p>  根據(jù)一元多項(xiàng)式相加的運(yùn)算規(guī)則:對(duì)于兩個(gè)一元多項(xiàng)式中所有指數(shù)相同的項(xiàng),對(duì)應(yīng)指數(shù)相加(減),若其和(差)不為零,則構(gòu)成“和(差)多項(xiàng)式”中的一項(xiàng);對(duì)于兩個(gè)一元多項(xiàng)式中所有指數(shù)不

5、相同的項(xiàng),則分別寫到“和(差)多項(xiàng)式”中去。</p><p>  因?yàn)槎囗?xiàng)式指數(shù)最高項(xiàng)以及項(xiàng)數(shù)是不確定的,因此采用線性鏈表的存儲(chǔ)結(jié)構(gòu)便于實(shí)現(xiàn)一元多項(xiàng)式的運(yùn)算。為了節(jié)省空間,我采用兩個(gè)鏈表分別存放多項(xiàng)式a和多項(xiàng)式b,對(duì)于最后計(jì)算所得的多項(xiàng)式則利用多項(xiàng)式a進(jìn)行存儲(chǔ)。主要用到了單鏈表的插入和刪除操作。</p><p><b>  一元多項(xiàng)式加法運(yùn)算</b></p>

6、;<p>  它從兩個(gè)多項(xiàng)式的頭部開(kāi)始,兩個(gè)多項(xiàng)式的某一項(xiàng)都不為空時(shí),如果指數(shù)相等的話,系數(shù)就應(yīng)該相加;相加的和不為零的話,用頭插法建立一個(gè)新的節(jié)點(diǎn)。P的指數(shù)小于q的指數(shù)的話就應(yīng)該復(fù)制q的節(jié)點(diǎn)到多項(xiàng)式中。P的指數(shù)大于q的指數(shù)的話,就應(yīng)該復(fù)制p節(jié)點(diǎn)到多項(xiàng)式中。當(dāng)?shù)诙€(gè)多項(xiàng)式空,第一個(gè)多項(xiàng)式不為空時(shí),將第一個(gè)多項(xiàng)式用新節(jié)點(diǎn)產(chǎn)生。當(dāng)?shù)谝粋€(gè)多項(xiàng)式空,第二個(gè)多項(xiàng)式不為空時(shí),將第二個(gè)多項(xiàng)式用新節(jié)點(diǎn)產(chǎn)生。</p><

7、p>  一元多項(xiàng)式的減法運(yùn)算</p><p>  它從兩個(gè)多項(xiàng)式的頭部開(kāi)始,兩個(gè)多項(xiàng)式的某一項(xiàng)都不為空時(shí),如果指數(shù)相等的話,系數(shù)就相減;相加的和不為零的話,用頭插法建立一個(gè)新的節(jié)點(diǎn)。p的指數(shù)小于q的指數(shù)的話,就應(yīng)該復(fù)制q的節(jié)點(diǎn)到多項(xiàng)式中。P的指數(shù)大于q的指數(shù)的話就應(yīng)該復(fù)制p的節(jié)點(diǎn)到多項(xiàng)式中,并且建立的節(jié)點(diǎn)的系數(shù)為原來(lái)的相反數(shù);當(dāng)?shù)诙€(gè)多項(xiàng)式空,第一個(gè)多項(xiàng)式不為空時(shí),將第一個(gè)多項(xiàng)式用新節(jié)點(diǎn)產(chǎn)生。當(dāng)?shù)谝粋€(gè)多項(xiàng)式

8、空,第二個(gè)多項(xiàng)式不為空時(shí),將第二個(gè)多項(xiàng)式用新節(jié)點(diǎn)產(chǎn)生,并且建立的節(jié)點(diǎn)的系數(shù)為原來(lái)的相反數(shù)。</p><p><b>  2、概要設(shè)計(jì)</b></p><p>  (1)主函數(shù)流程圖:</p><p> ?。ㄗⅲ篴代表第一個(gè)一元二次方程,b代表第二個(gè)一元二次方程)</p><p>  (2)一元多項(xiàng)式計(jì)算算法用類C語(yǔ)言表示

9、:</p><p>  Typedef struct00{ //項(xiàng)的表示,多項(xiàng)式的項(xiàng)作為L(zhǎng)inkList的數(shù)據(jù)元素</p><p>  Float coef; //細(xì)數(shù)</p><p>  Int expn;//指數(shù)</p><p>  }term,ElemType;//兩個(gè)類型名:term用于本ADT,ElemType為L(zhǎng)inkList的數(shù)

10、據(jù)對(duì)象名</p><p>  Typedef LinkList polynomial: //用帶表頭的節(jié)點(diǎn)的有序鏈表表示多項(xiàng)式</p><p>  //基本操作的函數(shù)原型說(shuō)明</p><p>  Void CreatePolyn(polynomail&P);</p><p>  //輸入n的系數(shù)和指數(shù),建立表示一元多項(xiàng)式的有序鏈表P

11、 銷毀一元多項(xiàng)式P</p><p>  Void DestroyPolyn(polynomailP);</p><p><b>  銷毀一元多項(xiàng)式P</b></p><p>  voidPrintPoly(polynomail P);</p><p>  //打印輸入一元多項(xiàng)式P</p><p&

12、gt;  IntPolynLength(polynnomail P);</p><p>  //返回一元多項(xiàng)式P中的項(xiàng)數(shù)</p><p>  void CreatPolyn(polynomail&Pa.polunomail&Pb);</p><p>  //完成多項(xiàng)式相加運(yùn)算,即:Pa=Pa+Pb,并賢惠一元多項(xiàng)式Pb</p><

13、p>  voidSubtractPolyn(polunomail&Papolunomail&Pb);</p><p>  //完成多項(xiàng)式相減運(yùn)算,即:Pa=Pa-Pb,并銷毀一元多項(xiàng)式Pb</p><p>  //基本操作的算法描述</p><p>  Int cmp(tem a,temp b);</p><p>  /

14、/依a的指數(shù)值<(或=)(或>b的住數(shù)值,分別返回-1、0和+1</p><p>  Void CreatePolyn(polynomail&P,int m){</p><p>  //輸入m項(xiàng)的系數(shù)和指數(shù),建立表示一元多項(xiàng)式的有序鏈表P</p><p>  InitList(P);h=GetHead(P);</p><p&

15、gt;  E.coef=0.0;e.expn=-1;SerCurElem(h,e);//設(shè)置頭結(jié)點(diǎn)的數(shù)據(jù)元素</p><p>  For (i=1;i<=m;++i){//依次輸入m個(gè)非零項(xiàng)</p><p>  Scanf(e.coef,e.epn);</p><p>  If(!LocateElem(P,e,q,(*cmp)())){//當(dāng)前鏈表中

16、不存在該指數(shù)項(xiàng)</p><p>  If(MakeNode(s,e))InsFirst(q,s);//生成節(jié)點(diǎn)并插入鏈表</p><p><b>  }</b></p><p><b>  }</b></p><p>  }//CreatPolun</p><p><

17、;b>  詳細(xì)設(shè)計(jì)</b></p><p><b>  1、算法實(shí)現(xiàn)</b></p><p>  輸入一元多項(xiàng)式函數(shù):</p><p>  void shuchu(pnode *head) </p><p><b>  { </b></p><p>  pn

18、ode *p; </p><p>  int one_time=1; </p><p><b>  p=head; </b></p><p>  while(p!=NULL) /*如果不為空*/ </p><p><b>  { </b></p><p>  if(one_t

19、ime==1) </p><p><b>  { </b></p><p>  if(p->zhishu==0) /*如果指數(shù)為0的話,直接輸出系數(shù)*/ </p><p>  printf("%5.2f",p->xishu); /*如果系數(shù)是正的話前面就要加+號(hào)*/ </p><p>  

20、else if(p->xishu==1||p->xishu==-1) </p><p>  printf("X^%d",p->zhishu); /*如果系數(shù)是1的話就直接輸出+x*/ </p><p>  /*如果系數(shù)是-1的話就直接輸出-x號(hào)*/ </p><p>  else if(p->xishu>0) /*

21、如果系數(shù)是大于0的話就輸出+系數(shù)x^指數(shù)的形式*/ </p><p>  printf("%5.2fX^%d",p->xishu,p->zhishu); </p><p>  else if(p->xishu<0) /*如果系數(shù)是小于0的話就輸出系數(shù)x^指數(shù)的形式*/ </p><p>  printf("%5.

22、2fX^%d",p->xishu,p->zhishu); </p><p>  one_time=0; </p><p><b>  } </b></p><p><b>  else{ </b></p><p>  if(p->zhishu==0) /*如果指數(shù)為0的話

23、,直接輸出系數(shù)*/ </p><p><b>  { </b></p><p>  if(p->xishu>0) </p><p>  printf("+%5.2f",p->xishu); /*如果系數(shù)是正的話前面就要加+號(hào)*/ </p><p><b>  } </

24、b></p><p>  else if(p->xishu==1) /*如果系數(shù)是1的話就直接輸出+x號(hào)*/ </p><p>  printf("+X^%d",p->zhishu); </p><p>  else if(p->xishu==-1) /*如果系數(shù)是-1的話就直接輸出-x號(hào)*/ </p>&l

25、t;p>  printf("X^%d",p->zhishu); </p><p>  else if(p->xishu>0) /*如果系數(shù)是大于0的話就輸出+系數(shù)x^指數(shù)的形式*/ </p><p>  printf("+%5.2fX^%d",p->xishu,p->zhishu); </p><

26、;p>  else if(p->xishu<0) /*如果系數(shù)是小于0的話就輸出系數(shù)x^指數(shù)的形式*/ </p><p>  printf("%5.2fX^%d",p->xishu,p->zhishu); </p><p><b>  } </b></p><p>  p=p->next;

27、 /*指向下一個(gè)指針*/ </p><p><b>  } </b></p><p>  printf("\n"); </p><p><b>  } </b></p><p><b>  加法函數(shù)</b></p><p>  /*兩

28、個(gè)多項(xiàng)式的加法運(yùn)算*/ </p><p>  pnode * add(pnode *heada,pnode *headb) </p><p><b>  { </b></p><p>  pnode *headc,*p,*q,*s,*r; /*headc為頭指針,r,s為臨時(shí)指針,p指向第1個(gè)多項(xiàng)式并向右移動(dòng),q指向第2個(gè)多項(xiàng)式并向右移動(dòng)*/

29、</p><p>  float x; /*x為系數(shù)的求和*/ </p><p>  p=heada; /*指向第一個(gè)多項(xiàng)式的頭*/ </p><p>  q=headb; /*指向第二個(gè)多項(xiàng)式的頭*/ </p><p>  headc=(pnode *)malloc(sizeof(pnode)); /*開(kāi)辟空間*/ </p>

30、<p><b>  r=headc; </b></p><p>  while(p!=NULL&&q!=NULL) /*2個(gè)多項(xiàng)式的某一項(xiàng)都不為空時(shí)*/ </p><p><b>  { </b></p><p>  if(p->zhishu==q->zhishu) /*指數(shù)相等的話*

31、/ </p><p><b>  { </b></p><p>  x=p->xishu+q->xishu; /*系數(shù)就應(yīng)該相加*/ </p><p>  if(x!=0) /*相加的和不為0的話*/ </p><p><b>  { </b></p><p> 

32、 s=(pnode *)malloc(sizeof(pnode)); /*用頭插法建立一個(gè)新的節(jié)點(diǎn)*/ </p><p>  s->xishu=x; </p><p>  s->zhishu=p->zhishu; </p><p>  r->next=s; </p><p><b>  r=s; </b

33、></p><p><b>  } </b></p><p>  q=q->next;p=p->next; /*2個(gè)多項(xiàng)式都向右移*/ </p><p><b>  } </b></p><p>  else if(p->zhishu<q->zhishu) /*p

34、的系數(shù)小于q的系數(shù)的話,就應(yīng)該復(fù)制q節(jié)點(diǎn)到多項(xiàng)式中*/ </p><p><b>  { </b></p><p>  s=(pnode *)malloc(sizeof(pnode)); </p><p>  s->xishu=q->xishu; </p><p>  s->zhishu=q->z

35、hishu; </p><p>  r->next=s; </p><p><b>  r=s; </b></p><p>  q=q->next; /*q向右移動(dòng)*/ </p><p><b>  } </b></p><p>  else/*p的系數(shù)大于q的系

36、數(shù)的話,就應(yīng)該復(fù)制p節(jié)點(diǎn)到多項(xiàng)式中*/ </p><p><b>  { </b></p><p>  s=(pnode *)malloc(sizeof(pnode)); </p><p>  s->xishu=p->xishu; </p><p>  s->zhishu=p->zhishu; &

37、lt;/p><p>  r->next=s; </p><p><b>  r=s; </b></p><p>  p=p->next; /*p向右移動(dòng)*/ </p><p><b>  } </b></p><p><b>  } </b>&l

38、t;/p><p>  /*當(dāng)?shù)?個(gè)多項(xiàng)式空,第1個(gè)數(shù)不為空時(shí),將第一個(gè)數(shù)剩下的全用新節(jié)點(diǎn)產(chǎn)生*/ </p><p>  while(p!=NULL) </p><p><b>  { </b></p><p>  s=(pnode *)malloc(sizeof(pnode)); </p><p> 

39、 s->xishu=p->xishu; </p><p>  s->zhishu=p->zhishu; </p><p>  r->next=s; </p><p><b>  r=s; </b></p><p>  p=p->next; </p><p>&l

40、t;b>  } </b></p><p>  /*當(dāng)?shù)?個(gè)多項(xiàng)式空,第1個(gè)數(shù)不為空時(shí),將第2個(gè)數(shù)剩下的全用新節(jié)點(diǎn)產(chǎn)生*/ </p><p>  while(q!=NULL) </p><p><b>  { </b></p><p>  s=(pnode *)malloc(sizeof(pnode));

41、 </p><p>  s->xishu=q->xishu; </p><p>  s->zhishu=q->zhishu; </p><p>  r->next=s; </p><p><b>  r=s; </b></p><p>  q=q->next;

42、</p><p><b>  } </b></p><p>  r->next=NULL; /*最后指向空*/ </p><p>  headc=headc->next; /*第一個(gè)頭沒(méi)有用到*/ </p><p>  return headc; /*返回頭接點(diǎn)*/ </p><p>

43、<b>  } </b></p><p><b>  減法函數(shù)</b></p><p>  /*兩個(gè)多項(xiàng)式的加法運(yùn)算*/ </p><p>  pnode * add(pnode *heada,pnode *headb) </p><p><b>  { </b></p&

44、gt;<p>  pnode *headc,*p,*q,*s,*r; /*headc為頭指針,r,s為臨時(shí)指針,p指向第1個(gè)多項(xiàng)式并向右移動(dòng),q指向第2個(gè)多項(xiàng)式并向右移動(dòng)*/ </p><p>  float x; /*x為系數(shù)的求和*/ </p><p>  p=heada; /*指向第一個(gè)多項(xiàng)式的頭*/ </p><p>  q=headb; /*

45、指向第二個(gè)多項(xiàng)式的頭*/ </p><p>  headc=(pnode *)malloc(sizeof(pnode)); /*開(kāi)辟空間*/ </p><p><b>  r=headc; </b></p><p>  while(p!=NULL&&q!=NULL) /*2個(gè)多項(xiàng)式的某一項(xiàng)都不為空時(shí)*/ </p>

46、<p><b>  { </b></p><p>  if(p->zhishu==q->zhishu) /*指數(shù)相等的話*/ </p><p><b>  { </b></p><p>  x=p->xishu+q->xishu; /*系數(shù)就應(yīng)該相加*/ </p><p

47、>  if(x!=0) /*相加的和不為0的話*/ </p><p><b>  { </b></p><p>  s=(pnode *)malloc(sizeof(pnode)); /*用頭插法建立一個(gè)新的節(jié)點(diǎn)*/ </p><p>  s->xishu=x; </p><p>  s->zhishu

48、=p->zhishu; </p><p>  r->next=s; </p><p><b>  r=s; </b></p><p><b>  } </b></p><p>  q=q->next;p=p->next; /*2個(gè)多項(xiàng)式都向右移*/ </p>&

49、lt;p><b>  } </b></p><p>  else if(p->zhishu<q->zhishu) /*p的系數(shù)小于q的系數(shù)的話,就應(yīng)該復(fù)制q節(jié)點(diǎn)到多項(xiàng)式中*/ </p><p><b>  { </b></p><p>  s=(pnode *)malloc(sizeof(pnode

50、)); </p><p>  s->xishu=q->xishu; </p><p>  s->zhishu=q->zhishu; </p><p>  r->next=s; </p><p><b>  r=s; </b></p><p>  q=q->nex

51、t; /*q向右移動(dòng)*/ </p><p><b>  } </b></p><p>  else/*p的系數(shù)大于q的系數(shù)的話,就應(yīng)該復(fù)制p節(jié)點(diǎn)到多項(xiàng)式中*/ </p><p><b>  { </b></p><p>  s=(pnode *)malloc(sizeof(pnode)); <

52、/p><p>  s->xishu=p->xishu; </p><p>  s->zhishu=p->zhishu; </p><p>  r->next=s; </p><p><b>  r=s; </b></p><p>  p=p->next; /*p向右

53、移動(dòng)*/ </p><p><b>  } </b></p><p><b>  } </b></p><p>  /*當(dāng)?shù)?個(gè)多項(xiàng)式空,第1個(gè)數(shù)不為空時(shí),將第一個(gè)數(shù)剩下的全用新節(jié)點(diǎn)產(chǎn)生*/ </p><p>  while(p!=NULL) </p><p><b&g

54、t;  { </b></p><p>  s=(pnode *)malloc(sizeof(pnode)); </p><p>  s->xishu=p->xishu; </p><p>  s->zhishu=p->zhishu; </p><p>  r->next=s; </p>

55、<p><b>  r=s; </b></p><p>  p=p->next; </p><p><b>  } </b></p><p>  /*當(dāng)?shù)?個(gè)多項(xiàng)式空,第1個(gè)數(shù)不為空時(shí),將第2個(gè)數(shù)剩下的全用新節(jié)點(diǎn)產(chǎn)生*/ </p><p>  while(q!=NULL) </

56、p><p><b>  { </b></p><p>  s=(pnode *)malloc(sizeof(pnode)); </p><p>  s->xishu=q->xishu; </p><p>  s->zhishu=q->zhishu; </p><p>  r-&

57、gt;next=s; </p><p><b>  r=s; </b></p><p>  q=q->next; </p><p><b>  } </b></p><p>  r->next=NULL; /*最后指向空*/ </p><p>  headc=he

58、adc->next; /*第一個(gè)頭沒(méi)有用到*/ </p><p>  return headc; /*返回頭接點(diǎn)*/ </p><p><b>  } </b></p><p><b>  程序代碼</b></p><p>  /*一元多項(xiàng)式計(jì)算*/</p><p> 

59、 /*程序功能:能夠按照指數(shù)降序排列建立并輸出多項(xiàng)式;能夠完成兩個(gè)多項(xiàng)式的相加、相減,并將結(jié)果輸出;*/</p><p>  /*提示:輸入完一元多項(xiàng)式之后,輸入“0 0”結(jié)束本一元多項(xiàng)式的輸入*/</p><p>  /*注意:系數(shù)只精確到百分位,最大系數(shù)只能為999.99,指數(shù)為整數(shù).如果需要輸入更大的系數(shù),可以對(duì)程序中5.2%f進(jìn)行相應(yīng)的修改*/</p><p&g

60、t;  #include<stdio.h> </p><p>  #include<malloc.h> </p><p>  #include<stdlib.h> </p><p>  #include<conio.h> </p><p>  /*建立結(jié)構(gòu)體*/ </p><

61、p>  typedef struct pnode </p><p><b>  { </b></p><p>  float xishu; /*系數(shù) */ </p><p>  int zhishu; /*指數(shù) */ </p><p>  struct pnode *next; /*下一個(gè)指針*/ </p&g

62、t;<p><b>  }pnode; </b></p><p>  /*用頭插法生成一個(gè)多項(xiàng)式,系數(shù)和指數(shù)輸入0時(shí)退出輸入*/ </p><p>  pnode * creat() </p><p><b>  { </b></p><p><b>  int m; <

63、;/b></p><p>  float n; </p><p>  pnode *head,*rear,*s; /*head為頭指針,rear和s為臨時(shí)指針*/ </p><p>  head=(pnode *)malloc(sizeof(pnode)); </p><p>  rear=head; /*指向頭*/ </p&g

64、t;<p>  scanf("%f",&n); /*系數(shù)*/</p><p>  scanf("%d",&m); /*輸入指數(shù)*/</p><p>  while(n!=0) /*輸入0退出*/ </p><p><b>  { </b></p><p&

65、gt;  s=(pnode *)malloc(sizeof(pnode)); </p><p>  s->xishu=n; </p><p>  s->zhishu=m; </p><p>  s->next=NULL; </p><p>  rear->next=s; /*頭插法*/ </p><

66、p><b>  rear=s; </b></p><p>  scanf("%f",&n); /*輸入系數(shù)*/ </p><p>  scanf("%d",&m); /*輸入指數(shù)*/</p><p><b>  } </b></p><p&

67、gt;  head=head->next; /*第一個(gè)頭沒(méi)有用到*/ </p><p>  return head; </p><p><b>  }</b></p><p>  /*調(diào)整多項(xiàng)式*/ </p><p>  void tiaozhen(pnode *head) </p><p>

68、;<b>  { </b></p><p>  pnode *p,*q,*t; </p><p>  float temp; </p><p><b>  p=head; </b></p><p>  while(p!=NULL) </p><p><b>  {

69、</b></p><p><b>  q=p; </b></p><p>  t=q->next; </p><p>  while(t!=NULL) </p><p><b>  { </b></p><p>  if(t->zhishu>q-

70、>zhishu) </p><p><b>  q=t; </b></p><p>  t=t->next; </p><p><b>  } </b></p><p>  temp=p->xishu;p->xishu=q->xishu;q->xishu=temp

71、; </p><p>  temp=p->zhishu;p->zhishu=q->zhishu;q->zhishu=temp; </p><p>  p=p->next; </p><p><b>  } </b></p><p><b>  } </b></p&

72、gt;<p>  /*顯示一個(gè)多項(xiàng)式*/ </p><p>  void shuchu(pnode *head) </p><p><b>  { </b></p><p>  pnode *p; </p><p>  int one_time=1; </p><p><b&g

73、t;  p=head; </b></p><p>  while(p!=NULL) /*如果不為空*/ </p><p><b>  { </b></p><p>  if(one_time==1) </p><p><b>  { </b></p><p>  

74、if(p->zhishu==0) /*如果指數(shù)為0的話,直接輸出系數(shù)*/ </p><p>  printf("%5.2f",p->xishu); /*如果系數(shù)是正的話前面就要加+號(hào)*/ </p><p>  else if(p->xishu==1||p->xishu==-1) </p><p>  printf(&qu

75、ot;X^%d",p->zhishu); /*如果系數(shù)是1的話就直接輸出+x*/ </p><p>  /*如果系數(shù)是-1的話就直接輸出-x號(hào)*/ </p><p>  else if(p->xishu>0) /*如果系數(shù)是大于0的話就輸出+系數(shù)x^指數(shù)的形式*/ </p><p>  printf("%5.2fX^%d&quo

76、t;,p->xishu,p->zhishu); </p><p>  else if(p->xishu<0) /*如果系數(shù)是小于0的話就輸出系數(shù)x^指數(shù)的形式*/ </p><p>  printf("%5.2fX^%d",p->xishu,p->zhishu); </p><p>  one_time=0;

77、</p><p><b>  } </b></p><p><b>  else{ </b></p><p>  if(p->zhishu==0) /*如果指數(shù)為0的話,直接輸出系數(shù)*/ </p><p><b>  { </b></p><p>

78、  if(p->xishu>0) </p><p>  printf("+%5.2f",p->xishu); /*如果系數(shù)是正的話前面就要加+號(hào)*/ </p><p><b>  } </b></p><p>  else if(p->xishu==1) /*如果系數(shù)是1的話就直接輸出+x號(hào)*/ &l

79、t;/p><p>  printf("+X^%d",p->zhishu); </p><p>  else if(p->xishu==-1) /*如果系數(shù)是-1的話就直接輸出-x號(hào)*/ </p><p>  printf("X^%d",p->zhishu); </p><p>  else

80、 if(p->xishu>0) /*如果系數(shù)是大于0的話就輸出+系數(shù)x^指數(shù)的形式*/ </p><p>  printf("+%5.2fX^%d",p->xishu,p->zhishu); </p><p>  else if(p->xishu<0) /*如果系數(shù)是小于0的話就輸出系數(shù)x^指數(shù)的形式*/ </p>&l

81、t;p>  printf("%5.2fX^%d",p->xishu,p->zhishu); </p><p><b>  } </b></p><p>  p=p->next; /*指向下一個(gè)指針*/ </p><p><b>  } </b></p><p&

82、gt;  printf("\n"); </p><p><b>  } </b></p><p>  /*兩個(gè)多項(xiàng)式的加法運(yùn)算*/ </p><p>  pnode * add(pnode *heada,pnode *headb) </p><p><b>  { </b><

83、;/p><p>  pnode *headc,*p,*q,*s,*r; /*headc為頭指針,r,s為臨時(shí)指針,p指向第1個(gè)多項(xiàng)式并向右移動(dòng),q指向第2個(gè)多項(xiàng)式并向右移動(dòng)*/ </p><p>  float x; /*x為系數(shù)的求和*/ </p><p>  p=heada; /*指向第一個(gè)多項(xiàng)式的頭*/ </p><p>  q=headb

84、; /*指向第二個(gè)多項(xiàng)式的頭*/ </p><p>  headc=(pnode *)malloc(sizeof(pnode)); /*開(kāi)辟空間*/ </p><p><b>  r=headc; </b></p><p>  while(p!=NULL&&q!=NULL) /*2個(gè)多項(xiàng)式的某一項(xiàng)都不為空時(shí)*/ </p&g

85、t;<p><b>  { </b></p><p>  if(p->zhishu==q->zhishu) /*指數(shù)相等的話*/ </p><p><b>  { </b></p><p>  x=p->xishu+q->xishu; /*系數(shù)就應(yīng)該相加*/ </p>&

86、lt;p>  if(x!=0) /*相加的和不為0的話*/ </p><p><b>  { </b></p><p>  s=(pnode *)malloc(sizeof(pnode)); /*用頭插法建立一個(gè)新的節(jié)點(diǎn)*/ </p><p>  s->xishu=x; </p><p>  s->zh

87、ishu=p->zhishu; </p><p>  r->next=s; </p><p><b>  r=s; </b></p><p><b>  } </b></p><p>  q=q->next;p=p->next; /*2個(gè)多項(xiàng)式都向右移*/ </p>

88、;<p><b>  } </b></p><p>  else if(p->zhishu<q->zhishu) /*p的系數(shù)小于q的系數(shù)的話,就應(yīng)該復(fù)制q節(jié)點(diǎn)到多項(xiàng)式中*/ </p><p><b>  { </b></p><p>  s=(pnode *)malloc(sizeof(p

89、node)); </p><p>  s->xishu=q->xishu; </p><p>  s->zhishu=q->zhishu; </p><p>  r->next=s; </p><p><b>  r=s; </b></p><p>  q=q->

90、;next; /*q向右移動(dòng)*/ </p><p><b>  } </b></p><p>  else/*p的系數(shù)大于q的系數(shù)的話,就應(yīng)該復(fù)制p節(jié)點(diǎn)到多項(xiàng)式中*/ </p><p><b>  { </b></p><p>  s=(pnode *)malloc(sizeof(pnode));

91、</p><p>  s->xishu=p->xishu; </p><p>  s->zhishu=p->zhishu; </p><p>  r->next=s; </p><p><b>  r=s; </b></p><p>  p=p->next; /

92、*p向右移動(dòng)*/ </p><p><b>  } </b></p><p><b>  } </b></p><p>  /*當(dāng)?shù)?個(gè)多項(xiàng)式空,第1個(gè)數(shù)不為空時(shí),將第一個(gè)數(shù)剩下的全用新節(jié)點(diǎn)產(chǎn)生*/ </p><p>  while(p!=NULL) </p><p><

93、;b>  { </b></p><p>  s=(pnode *)malloc(sizeof(pnode)); </p><p>  s->xishu=p->xishu; </p><p>  s->zhishu=p->zhishu; </p><p>  r->next=s; </p&g

94、t;<p><b>  r=s; </b></p><p>  p=p->next; </p><p><b>  } </b></p><p>  /*當(dāng)?shù)?個(gè)多項(xiàng)式空,第1個(gè)數(shù)不為空時(shí),將第2個(gè)數(shù)剩下的全用新節(jié)點(diǎn)產(chǎn)生*/ </p><p>  while(q!=NULL) &

95、lt;/p><p><b>  { </b></p><p>  s=(pnode *)malloc(sizeof(pnode)); </p><p>  s->xishu=q->xishu; </p><p>  s->zhishu=q->zhishu; </p><p> 

96、 r->next=s; </p><p><b>  r=s; </b></p><p>  q=q->next; </p><p><b>  } </b></p><p>  r->next=NULL; /*最后指向空*/ </p><p>  head

97、c=headc->next; /*第一個(gè)頭沒(méi)有用到*/ </p><p>  return headc; /*返回頭接點(diǎn)*/ </p><p><b>  } </b></p><p>  /*兩個(gè)多項(xiàng)式的減法運(yùn)算*/ </p><p>  pnode * sub(pnode *heada,pnode *headb

98、) </p><p><b>  { </b></p><p>  pnode *headc,*p,*q,*s,*r; </p><p>  float x; /*x為系數(shù)相減*/ </p><p>  p=heada; /*指向第一個(gè)多項(xiàng)式的頭*/ </p><p>  q=headb; /*

99、指向第二個(gè)多項(xiàng)式的頭*/ </p><p>  headc=(pnode *)malloc(sizeof(pnode)); /*開(kāi)辟空間*/ </p><p><b>  r=headc; </b></p><p>  while(p!=NULL&&q!=NULL) /*兩個(gè)多項(xiàng)式的某一項(xiàng)都不為空時(shí)*/ </p>

100、<p><b>  { </b></p><p>  if(p->zhishu==q->zhishu) /*指數(shù)相等的話*/ </p><p><b>  { </b></p><p>  x=p->xishu-q->xishu; /*系數(shù)相減*/ </p><p>

101、;  if(x!=0) /*相減的差不為0的話*/ </p><p><b>  { </b></p><p>  s=(pnode *)malloc(sizeof(pnode)); /*用頭插法建立一個(gè)新的節(jié)點(diǎn)*/ </p><p>  s->xishu=x; </p><p>  s->zhishu=p-

102、>zhishu; </p><p>  r->next=s; </p><p><b>  r=s; </b></p><p><b>  } </b></p><p>  q=q->next;p=p->next; /*2個(gè)多項(xiàng)式都向右移*/ </p><

103、p><b>  } </b></p><p>  else if(p->zhishu<q->zhishu) /*p的系數(shù)小于q的系數(shù)的話*/ </p><p><b>  { </b></p><p>  s=(pnode *)malloc(sizeof(pnode)); </p>&

104、lt;p>  s->xishu=-q->xishu; /*建立的節(jié)點(diǎn)的系數(shù)為原來(lái)的相反數(shù)*/ </p><p>  s->zhishu=q->zhishu; </p><p>  r->next=s; </p><p><b>  r=s; </b></p><p>  q=q->

105、;next; </p><p><b>  } </b></p><p><b>  else </b></p><p><b>  { </b></p><p>  s=(pnode *)malloc(sizeof(pnode)); </p><p>

106、;  s->xishu=p->xishu; </p><p>  s->zhishu=p->zhishu; </p><p>  r->next=s; </p><p><b>  r=s; </b></p><p>  p=p->next; /*p向右移動(dòng)*/ </p>

107、<p><b>  } </b></p><p><b>  } </b></p><p>  while(p!=NULL) /*當(dāng)?shù)?個(gè)多項(xiàng)式空,第1個(gè)數(shù)不為空時(shí),將第一個(gè)數(shù)剩下的全用新節(jié)點(diǎn)產(chǎn)生*/ </p><p><b>  { </b></p><p>  

108、s=(pnode *)malloc(sizeof(pnode)); </p><p>  s->xishu=p->xishu; </p><p>  s->zhishu=p->zhishu; </p><p>  r->next=s; </p><p><b>  r=s; </b><

109、/p><p>  p=p->next; </p><p><b>  } </b></p><p>  while(q!=NULL) /*當(dāng)?shù)?個(gè)多項(xiàng)式空,第1個(gè)數(shù)不為空時(shí),將第2個(gè)數(shù)剩下的全用新節(jié)點(diǎn)產(chǎn)生*/ </p><p><b>  { </b></p><p>  

110、s=(pnode *)malloc(sizeof(pnode)); </p><p>  s->xishu=-q->xishu; /*建立的節(jié)點(diǎn)的系數(shù)為原來(lái)的相反數(shù)*/ </p><p>  s->zhishu=q->zhishu; </p><p>  r->next=s; </p><p><b>

111、  r=s; </b></p><p>  q=q->next; </p><p><b>  } </b></p><p>  r->next=NULL; /*最后指向空*/ </p><p>  headc=headc->next; /*第一個(gè)頭沒(méi)有用到*/ </p>&l

112、t;p>  return headc; /*返回頭接點(diǎn)*/ </p><p><b>  } </b></p><p>  void add_main() </p><p><b>  { </b></p><p>  pnode * a,*b,*c; </p><p>

113、;  printf("\n輸入第一個(gè)一元多項(xiàng)式:\n系數(shù) 指數(shù)\n"); </p><p>  a=creat(); </p><p>  tiaozhen(a); </p><p>  printf("\n輸入第二個(gè)一元多項(xiàng)式:\n系數(shù) 指數(shù)\n"); </p><p>  b=creat(); &l

114、t;/p><p>  tiaozhen(b); </p><p>  c=add(a,b); </p><p>  printf("第一個(gè)一元多項(xiàng)式如下:");shuchu(a); </p><p>  printf("第二個(gè)一元多項(xiàng)式如下:");shuchu(b); </p><p&g

115、t;  printf("兩式相加如下:");shuchu(c); </p><p><b>  } </b></p><p>  void sub_main() </p><p><b>  { </b></p><p>  pnode * a,*b,*c; </p>

116、<p>  printf("\n輸入第一個(gè)一元多項(xiàng)式:\n系數(shù) 指數(shù)\n"); </p><p>  a=creat(); </p><p>  tiaozhen(a); </p><p>  printf("\n輸入第二個(gè)一元多項(xiàng)式:\n系數(shù) 指數(shù)\n"); </p><p>  b=c

117、reat(); </p><p>  tiaozhen(b); </p><p>  c=sub(a,b); </p><p>  printf("第一個(gè)一元多項(xiàng)式如下:");shuchu(a); </p><p>  printf("第二個(gè)一元多項(xiàng)式如下:");shuchu(b); </p>

118、;<p>  printf("兩式相減如下:");shuchu(c); </p><p><b>  } </b></p><p>  void open() </p><p><b>  { </b></p><p>  printf("\n

119、 ****************************************************\n"); </p><p>  printf(" 功能項(xiàng): * 1 兩個(gè)一元多項(xiàng)式相加;2 兩個(gè)一元多項(xiàng)式相減;0 退出 *\n"); </p><p>  printf(" ***********************

120、*****************************\n\n請(qǐng)選擇操作: "); </p><p><b>  } </b></p><p>  void main() </p><p><b>  { </b></p><p>  int choose; </p>&

121、lt;p><b>  open(); </b></p><p>  while(choose!=0) </p><p><b>  { </b></p><p>  scanf("%d",&choose); </p><p>  getchar(); </p&

122、gt;<p>  switch(choose) </p><p><b>  { </b></p><p>  case 0:return; </p><p><b>  case 1: </b></p><p>  printf("\n 兩個(gè)一元多項(xiàng)式

123、相加\n"); </p><p>  add_main();choose=-1;open();break; </p><p><b>  case 2: </b></p><p>  printf("\n 兩個(gè)一元多項(xiàng)式相減\n"); </p><p>  sub_ma

124、in();choose=-1;open();break; </p><p><b>  default: </b></p><p>  printf("沒(méi)有該選項(xiàng)!請(qǐng)重新選擇操作!\n\n"); </p><p><b>  open(); </b></p><p><b

125、>  } </b></p><p><b>  } </b></p><p><b>  }</b></p><p><b>  測(cè)試方案及結(jié)果</b></p><p><b>  1、測(cè)試方案</b></p><p&

126、gt;  在Visual C++ 6.0環(huán)境中調(diào)試運(yùn)行。</p><p><b>  2、結(jié)果及分析</b></p><p><b>  程序運(yùn)行截圖如下:</b></p><p><b>  結(jié)論及體會(huì)</b></p><p>  經(jīng)過(guò)一周的努力,最終我們的課程設(shè)計(jì)出來(lái)了,主

127、程序完全符合本課程設(shè)計(jì)的要求。</p><p>  本次課程設(shè)計(jì)對(duì)于我們來(lái)說(shuō)難度是很大的。因?yàn)閷?duì)于數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì),需要有扎實(shí)的C語(yǔ)言編程能力,而我們這組人C編程都一般。因此我們花了大半個(gè)星期的時(shí)間才把主程序?qū)懗鰜?lái)。寫的過(guò)程中有不少的挫折。我們剛開(kāi)始是先寫出一個(gè)能鍵盤輸入兩個(gè)一元二次方程并先對(duì)每一個(gè)方程按指數(shù)降序排序。但過(guò)了很長(zhǎng)時(shí)間都沒(méi)法實(shí)現(xiàn)兩函數(shù)的相加減。后來(lái)花了很大力氣,查閱了兩本資料書才實(shí)現(xiàn)了對(duì)兩函數(shù)的相加

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 眾賞文庫(kù)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論