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

下載本文檔

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

文檔簡介

1、<p><b>  一、設(shè)計題目</b></p><p>  一元多項式的加法、減法、乘法的實現(xiàn)。</p><p><b>  二、主要內(nèi)容</b></p><p>  設(shè)有一元多項式Am(x)和Bn(x).</p><p>  Am(x)=A0+A1x1+A2x2+A3x3+… +Amx

2、m</p><p>  Bn(x)=B0+B1x1+B2x2+B3x3+… +Bnxn</p><p>  請實現(xiàn)求M(x)= Am(x)+Bn(x)、M(x)= Am(x)-Bn(x)和M(x)= Am(x)×Bn(x)。 要求: </p><p>  1)  首先判定多項式是否稀疏</p><p>  2) 

3、; 采用動態(tài)存儲結(jié)構(gòu)實現(xiàn);</p><p>  3)  結(jié)果M(x)中無重復(fù)階項和無零系數(shù)項;</p><p>  4)  要求輸出結(jié)果的升冪和降冪兩種排列情況</p><p>  三、具體要求及應(yīng)提交的材料</p><p>  1.每個同學(xué)以自己的學(xué)號和姓名建一個文件夾,如:“3120090

4、80611101張三”。里面應(yīng)包括:學(xué)生按照課程設(shè)計的具體要求所開發(fā)的所有源程序(應(yīng)該放到一個文件夾中)、任務(wù)書和課程設(shè)計說明書的電子文檔。</p><p>  2.打印的課程設(shè)計說明書(注意:在封面后夾入打印的“任務(wù)書”以后再裝訂)。</p><p>  四、主要技術(shù)路線提示</p><p>  為把多個小功能結(jié)合成一個完整的小軟件,需使用“菜單設(shè)計”技術(shù)(可以是

5、控制臺方式下的命令行形式,若能做成圖形方式則更好)。</p><p><b>  五、進(jìn)度安排</b></p><p>  共計兩周時間,建議進(jìn)度安排如下:</p><p>  選題,應(yīng)該在上機實驗之前完成</p><p>  需求分析、概要設(shè)計可分配4學(xué)時完成</p><p>  詳細(xì)設(shè)計可分配

6、4學(xué)時</p><p>  調(diào)試和分析可分配10學(xué)時。</p><p>  2學(xué)時的機動,可用于答辯及按教師要求修改課程設(shè)計說明書。</p><p>  注:只用課內(nèi)上機時間一般不能完成設(shè)計任務(wù),所以需要學(xué)生自行安排時間做補充。</p><p>  六、推薦參考資料(不少于3篇)</p><p>  [1]蘇仕華等編著

7、,數(shù)據(jù)結(jié)構(gòu)課程設(shè)計,機械工業(yè)出版社,2007</p><p> ?。?]嚴(yán)蔚敏等編著,數(shù)據(jù)結(jié)構(gòu)(C語言版),清華大學(xué)出版社,2003</p><p> ?。?]嚴(yán)蔚敏等編著,數(shù)據(jù)結(jié)構(gòu)題集(C語言版),清華大學(xué)出版社,2003</p><p>  指導(dǎo)教師 簽名日期 年 月 日</p><p>  系 主 任

8、 審核日期 年 月 日</p><p><b>  摘 要 </b></p><p>  分析了matlab,mathmatic,maple等數(shù)學(xué)軟件對一元多項式的計算過程,步驟后。由于這些軟件比較大功能齊全,但是實用性不強。因此,利用microsoft visual studio 6.0開發(fā)工具,編程實現(xiàn)了一元多項式的加法、減法、

9、乘法的計算器系統(tǒng),該系統(tǒng)具有一元多項式的加法、減法、乘法等功能。</p><p>  關(guān)鍵詞:一元多項式; 軟件; 計算 </p><p><b>  目 錄 </b></p><p><b>  1需求分析1</b></p><p>  2開發(fā)及運行平臺2</p><p

10、><b>  3 概要設(shè)計3</b></p><p><b>  4 詳細(xì)設(shè)計4</b></p><p><b>  5 調(diào)試分析8</b></p><p><b>  6 測試結(jié)果9</b></p><p><b>  7 結(jié)論

11、11</b></p><p><b>  致 謝12</b></p><p><b>  參考文獻(xiàn)13</b></p><p><b>  附 錄16</b></p><p><b>  1需求分析</b></p>&

12、lt;p>  動態(tài)鏈表結(jié)構(gòu)下的一元多項式的加法、減法、乘法的實現(xiàn)。  設(shè)有一元多項式Am(x)和Bn(x).  Am(x)=A0+A1x1+A2x2+A3x3+… +Amxm  Bn(x)=B0+B1x1+B2x2+B3x3+… +Bnxn 實現(xiàn)求M(x)= Am(x)+Bn(x)、M(x)= Am(x)-Bn(x)和M(x)= Am(x)×Bn(x)。&l

13、t;/p><p> ?。?)輸入形式和輸入值范圍:</p><p>  輸入的系數(shù)為float類型,輸入的冪為int類型</p><p><b>  請選擇:1</b></p><p>  請輸入你要運算的第一個一元多項式的項數(shù):</p><p><b>  2</b></

14、p><p>  請輸入第1項的系數(shù)和指數(shù):</p><p><b>  系數(shù):1</b></p><p><b>  指數(shù):1</b></p><p>  請輸入第2項的系數(shù)和指數(shù):</p><p><b>  系數(shù):1</b></p><

15、;p><b>  指數(shù):2</b></p><p><b>  (2)輸出形式</b></p><p><b>  請選擇:5</b></p><p><b>  一元多項式A為:</b></p><p><b>  x+x^2</b

16、></p><p><b>  一元多項式B為:</b></p><p>  4x^4+5x^5+6x^6</p><p>  (3)程序所能達(dá)到的功能</p><p>  1) 首先判定多項式是否稀疏;</p><p>  2) 采用動態(tài)存儲結(jié)構(gòu)實現(xiàn);</p>

17、;<p>  3) 結(jié)果M(x)中無重復(fù)階項和無零系數(shù)項;</p><p>  4) 要求輸出結(jié)果的升冪和降冪兩種排列情況</p><p> ?。?)測試數(shù)據(jù):包括正確地輸入及其輸出結(jié)果和含有錯誤的輸入及其輸出結(jié)果。</p><p><b>  正確的輸入:</b></p><p>&l

18、t;b>  請選擇:5</b></p><p><b>  一元多項式A為:</b></p><p><b>  x+x^2</b></p><p><b>  一元多項式B為:</b></p><p>  4x^4+5x^5+6x^6</p>

19、<p><b>  錯誤的輸入:</b></p><p>  請輸入第1項的系數(shù)和指數(shù):</p><p><b>  系數(shù):1</b></p><p><b>  指數(shù):1</b></p><p>  請輸入第2項的系數(shù)和指數(shù):</p><p>

20、;<b>  系數(shù):2</b></p><p><b>  指數(shù):1</b></p><p>  輸入的該項指數(shù)與多項式中已存在的某項相同,請重新創(chuàng)建一個正確的多項式</p><p>  請輸入第1項的系數(shù)和指數(shù):</p><p><b>  2開發(fā)及運行平臺</b></

21、p><p>  Windows 7 alienware 平臺上,Microsoft Visual studio 6.0 環(huán)境下開發(fā)。所以建議用戶在使用時,在windows 7 平臺上使用。3 概要設(shè)計</p><p><b>  數(shù)據(jù)類型的定義:</b></p><p>  struct Node</p><p><b

22、>  {</b></p><p>  float coef;//結(jié)點類型,系數(shù)</p><p>  int exp;//指數(shù)</p><p><b>  };</b></p><p>  typedef Node polynomial;</p><p>  struct LNod

23、e</p><p><b>  {</b></p><p>  polynomial data;//鏈表類型</p><p>  LNode *next;</p><p><b>  };</b></p><p>  typedef LNode* Link;</p>

24、;<p>  模塊調(diào)用關(guān)系如圖1所示:</p><p>  圖 1 一元多項式計算器模塊調(diào)用圖</p><p><b>  4 詳細(xì)設(shè)計 </b></p><p><b>  加法模塊:</b></p><p>  void PolyAdd(Link &pc,Link pa,L

25、ink pb)</p><p><b>  { </b></p><p>  Link p1,p2,p,pd;</p><p>  CopyLink(p1,pa);</p><p>  CopyLink(p2,pb);</p><p>  pc=new LNode;</p>&l

26、t;p>  pc->next<-NULL;</p><p><b>  p<-pc;</b></p><p>  p1<-p1->next;</p><p>  p2<-p2->next;</p><p>  while(p1不為空且p2不為空)</p>&l

27、t;p>  {if(p1->data.exp<p2->data.exp)</p><p>  then: p->next=p1;p=p->next; p1=p1->next;</p><p>  else if(p1->data.exp>p2->data.exp)</p><p>  then: p->

28、;next<-p2; p<-p->next;p2<-p2->next;</p><p><b>  else</b></p><p>  {p1->data.coef<-p1->data.coef+p2->data.coef;//指數(shù)相同,系數(shù)想加</p><p>  if(p1->

29、data.coef不等于0)</p><p>  {p->next<-p1;</p><p>  p<-p->next;</p><p>  p1<-p1->next;</p><p>  p2<-p2->next;</p><p><b>  }</b&

30、gt;</p><p><b>  else</b></p><p><b>  {pd<-p1;</b></p><p>  p1<-p1->next;</p><p>  p2<-p2->next;</p><p>  delete pd;/

31、/如果系數(shù)為0,則刪除該項</p><p><b>  } }</b></p><p><b>  }</b></p><p>  if(p1!=NULL)</p><p>  then:p->next=p1;endif</p><p>  if(p2!=NULL)&

32、lt;/p><p>  then : p->next=p2;endif</p><p><b>  }</b></p><p>  減法模塊,如圖2所示:</p><p>  圖 2 減法模塊結(jié)構(gòu)圖</p><p>  void PolySubstract(Link &pc,Link

33、pa,Link pb)</p><p><b>  {</b></p><p>  Link p,pt;</p><p>  CopyLink(pt,pb);</p><p><b>  p<-pt;</b></p><p>  while(p不為空)</p>

34、;<p>  { (p->data).coef<- (-(p->data).coef);//被減的多項式前加"-"號</p><p>  p<-(p->next);</p><p><b>  }</b></p><p>  PolyAdd(pc,pa,pt);//調(diào)用多項式加法運

35、算函數(shù)</p><p>  DestroyLink(pt);</p><p><b>  }</b></p><p>  乘法模塊:如圖3所示</p><p>  圖 3 乘法模塊結(jié)構(gòu)圖</p><p>  void PolyMultiply(Link &pc,Link pa,Link p

36、b)</p><p>  {Link p1,p2,p,pd,newp,t;</p><p>  pc=new LNode;</p><p>  pc->next=NULL;</p><p>  p1=pa->next;</p><p>  p2=pb->next;</p><p&g

37、t;  while(p1不為空)</p><p>  { pd=new LNode;</p><p>  pd->next=NULL;</p><p>  p=new LNode;</p><p>  p->next=NULL;</p><p><b>  t=p;</b></p

38、><p><b>  while(p2)</b></p><p>  { newp=new LNode;</p><p>  newp->next=NULL;</p><p>  newp->data.coef=p1->data.coef*p2->data.coef;//系數(shù)相乘</p>

39、<p>  newp->data.exp=p1->data.exp+p2->data.exp;//指數(shù)相加</p><p>  t->next=newp;</p><p>  t=t->next;</p><p>  p2=p2->next;</p><p><b>  }</b

40、></p><p>  PolyAdd(pd,pc,p);//調(diào)用加法函數(shù)</p><p>  CopyLink(pc,pd);</p><p>  p1=p1->next;</p><p>  p2=pb->next;</p><p>  DestroyLink(p);</p><

41、;p>  DestroyLink(pd);</p><p><b>  }</b></p><p><b>  }</b></p><p><b>  5 調(diào)試分析</b></p><p> ?。?)調(diào)試過程中遇到的問題 :</p><p>  獨

42、立測試各個模塊的功能時發(fā)現(xiàn)在創(chuàng)建鏈表后和另一個進(jìn)行運算后多余的存儲單元沒有釋放而造成內(nèi)存的泄漏,還有對于鏈表的運算時結(jié)束條件掌握不透徹導(dǎo)致沒有按計劃地去結(jié)束,比如在用For循環(huán)及While循環(huán)時沒有正確地判斷指針的移動與結(jié)束條件而得不到自己想要的結(jié)果。進(jìn)入函數(shù)內(nèi)部調(diào)試時發(fā)現(xiàn)有誤用沒有初始化的變量,還有贅余的語句擾亂了代碼的健壯性。 在主函數(shù)中對各個函數(shù)的調(diào)用時沒有一個清晰的思路,使程序顯得很混亂,給調(diào)試造成了很大困難。 對非法操作控制的

43、不夠完善,例如缺少對越界訪問及其非法數(shù)據(jù)的控制機制,使程序的安全性下降。</p><p> ?。?)算法的時空分析</p><p>  該程序的實現(xiàn)是用鏈表實現(xiàn)的,所以時間復(fù)雜度和空間復(fù)雜度主要來自于鏈表的操作,都是O(n)。</p><p><b> ?。?)經(jīng)驗和體會</b></p><p>  編寫的程序不但要拿來

44、使用,還要給別人查看,以便代碼的維護(hù)。所以代碼編寫的風(fēng)格盡量規(guī)范,清晰。變量要盡量少定義,結(jié)構(gòu)夜采用簡單的。另外,對指針的使用要小心,盡量在定義的時候就進(jìn)行初始化,避免野指針,指針的使用涉及到內(nèi)存的分配。</p><p><b>  6 測試結(jié)果</b></p><p>  判斷稀疏,如圖4所示:</p><p>  圖 4 判斷多項式是否稀疏

45、</p><p>  加法運算,如圖5所示: </p><p><b>  圖 5加法測試結(jié)果</b></p><p>  減法運算,如圖6所示:</p><p>  圖 6 減法測試結(jié)果</p><p>  乘法運算,如圖7所示:</p><p>  圖 7 乘法測試結(jié)果

46、</p><p>  降冪升冪排序,如圖8所示</p><p>  圖8降冪升冪排序測試結(jié)果</p><p><b>  7 結(jié)論</b></p><p>  該程序基本實現(xiàn)了要求的順序結(jié)構(gòu)、動態(tài)鏈表結(jié)構(gòu)下的一元多項式的加法、減法、乘法等功能。代碼較為冗余,可讀性較差,可以多添加一些提示語句以及注釋。</p>

47、<p>  在這次課程設(shè)計中我又進(jìn)一步地了解了數(shù)據(jù)結(jié)構(gòu)中算法的核心思想的重要性,懂得了一個程序地好壞關(guān)鍵在于算法是否優(yōu)秀,一個好的優(yōu)秀的算法可以使我們的程序更加完善,安全性更高以及有更高的效率。這次設(shè)計中我發(fā)現(xiàn)了自己的許多不足,如對指針的機制掌握的還不是很透徹,有的時候會出現(xiàn)指針指向錯誤以及空指針的錯誤,還有不能很好地分析自己算法地復(fù)雜度以及不能很好地使用控制機制使自己的程序流暢地運行。</p><p&

48、gt;<b>  致 謝</b></p><p>  感謝指導(dǎo)老師給我的一些重要指導(dǎo)以及提供的資料,感謝嚴(yán)蔚敏編著的數(shù)據(jù)結(jié)構(gòu)等資料,讓我在編寫代碼的過程中少走了很多彎路。</p><p><b>  參考文獻(xiàn)</b></p><p>  [1]蘇仕華等編著.數(shù)據(jù)結(jié)構(gòu)課程設(shè)計.機械工業(yè)出版社.2007</p>

49、<p> ?。?]嚴(yán)蔚敏等編著.數(shù)據(jù)結(jié)構(gòu)(C語言版).清華大學(xué)出版社.2003</p><p> ?。?]嚴(yán)蔚敏等編著.數(shù)據(jù)結(jié)構(gòu)題集(C語言版).清華大學(xué)出版社,2003</p><p>  [4].鄭莉等 編著. C++程序設(shè)計語言(第三版).清華大學(xué)出版社,2005.06北京</p><p>  [5].陳清華 朱紅主編. Visual C++課程設(shè)

50、計案例精選與編程指導(dǎo).東南大學(xué)出版社,2003.06,南京</p><p>  [6].劉振安等編著. C++程序設(shè)計課程設(shè)計.機械工業(yè)出版社,2004.08,北京</p><p><b>  附 錄</b></p><p>  附錄1 源程序清單</p><p>  #include<iostream&g

51、t;//標(biāo)準(zhǔn)輸入輸出流</p><p>  #include<conio.h>//使程序中可用鍵盤輸入函數(shù)</p><p>  #include<stdlib.h>//使程序中可用系統(tǒng)標(biāo)準(zhǔn)輸出函數(shù)</p><p>  #include<math.h>//調(diào)用數(shù)學(xué)庫函數(shù)</p><p>  using nam

52、espace std;//命名空間std內(nèi)定義的所有標(biāo)識符均有效</p><p>  struct Node{</p><p>  float coef;//結(jié)點類型,系數(shù)</p><p>  int exp;//指數(shù)</p><p><b>  };</b></p><p>  typedef

53、Node polynomial;</p><p>  struct LNode{</p><p>  polynomial data;//鏈表類型</p><p>  LNode *next;</p><p><b>  };</b></p><p>  typedef LNode* Link;&

54、lt;/p><p>  void CreateLink(Link &L,int n);</p><p>  void PrintList(Link L);</p><p>  void PolyAdd(Link &pc,Link pa,Link pb);</p><p>  void PolySubstract(Link &

55、;pc,Link pa,Link pb);</p><p>  void CopyLink(Link &pc,Link pa);</p><p>  void PolyMultiply(Link &pc,Link pa,Link pb);</p><p>  int JudgeIfExpSame(Link pa,Link e);</p>

56、<p>  void DestroyLink(Link &L);</p><p>  int CompareIfNum(int i);</p><p>  void DestroyLink(Link &L)</p><p><b>  {Link p;</b></p><p>  p=L-&g

57、t;next;</p><p><b>  while(p)</b></p><p>  { L->next=p->next;</p><p><b>  delete p;</b></p><p>  p=L->next;</p><p><b>

58、;  }</b></p><p><b>  delete L;</b></p><p><b>  L=NULL;</b></p><p><b>  }</b></p><p>  void CreateLink(Link &L,int n)</p

59、><p>  {if(L!=NULL)</p><p>  {DestroyLink(L);}</p><p>  Link p,newp;</p><p>  L=new LNode;</p><p>  L->next=NULL;</p><p>  (L->data).exp=-1

60、;//創(chuàng)建頭結(jié)點</p><p><b>  p=L;</b></p><p>  for(int i=1;i<=n;i++)</p><p>  { newp=new LNode;</p><p>  cout<<"請輸入第"<<i<<"項的系數(shù)和

61、指數(shù):"<<endl;</p><p>  cout<<"系數(shù):";</p><p>  cin>>(newp->data).coef;</p><p>  cout<<"指數(shù):";</p><p>  cin>>(newp-&

62、gt;data).exp;</p><p>  if(newp->data.exp<0)</p><p>  {cout<<"您輸入有誤,指數(shù)不允許為負(fù)值!"<<endl;</p><p>  delete newp;</p><p><b>  i--;</b>&

63、lt;/p><p><b>  continue;</b></p><p><b>  }</b></p><p>  newp->next=NULL;</p><p><b>  p=L;</b></p><p>  if(newp->data

64、.coef==0)</p><p>  {cout<<"系數(shù)為零,重新輸入!"<<endl;</p><p>  delete newp;</p><p><b>  i--;</b></p><p><b>  continue;</b></p&g

65、t;<p><b>  }</b></p><p>  while((p->next!=NULL)&&((p->next->data).exp<(newp->data).exp)) </p><p>  { p=p->next; //p指向指數(shù)最小的那一個 }</p><p> 

66、 if(!JudgeIfExpSame( L, newp))</p><p>  {newp->next=p->next;</p><p>  p->next=newp;</p><p><b>  }</b></p><p><b>  else </b></p>

67、<p>  {cout<<"輸入的該項指數(shù)與多項式中已存在的某項相同,請重新創(chuàng)建一個正確的多項式"<<endl;</p><p>  delete newp;</p><p>  DestroyLink(L);</p><p>  CreateLink(L,n); //創(chuàng)建多項式?jīng)]有成功,遞歸調(diào)用重新創(chuàng)建<

68、/p><p><b>  break;</b></p><p><b>  }</b></p><p><b>  }</b></p><p>  JudgeIf(L);//判斷稀疏</p><p><b>  }</b></p&

69、gt;<p>  void JudgeIf(Link L)</p><p><b>  {Link p;</b></p><p>  int flag=0;//判斷是否為稀疏的標(biāo)志</p><p>  p=L->next;</p><p>  while(p->next!=NULL)</p

70、><p>  {if(abs(p->next->data.exp-p->data.exp)>1)</p><p><b>  flag=1;</b></p><p><b>  else</b></p><p><b>  flag=0;</b></p

71、><p>  p=p->next;</p><p><b>  }</b></p><p><b>  if(flag)</b></p><p>  cout<<"該多項式是稀疏的哈"<<endl;</p><p><b&g

72、t;  else</b></p><p>  cout<<"該多項式是連續(xù)的哈"<<endl;</p><p><b>  }</b></p><p>  int JudgeIfExpSame(Link L,Link e)</p><p><b>  {L

73、ink p;</b></p><p>  p=L->next;</p><p>  while(p!=NULL&&(e->data.exp!=p->data.exp))</p><p>  p=p->next;</p><p>  if(p==NULL)</p><p&g

74、t;<b>  return 0;</b></p><p>  else return 1;</p><p><b>  }</b></p><p>  void PrintList(Link L)</p><p><b>  {Link p;</b></p>&

75、lt;p>  if(L==NULL||L->next==NULL) </p><p>  cout<<"該一元多項式為空!"<<endl;</p><p><b>  else</b></p><p>  {p=L->next;</p><p>  if((p

76、->data).coef>0)</p><p>  { if((p->data).exp==0)</p><p>  cout<<(p->data).coef;//如果指數(shù)為0則直接輸出系數(shù)</p><p>  else if((p->data).coef==1&&(p->data).exp==1)&l

77、t;/p><p>  cout<<"x";//如果系數(shù)和指數(shù)均為1,則輸出x</p><p>  else if((p->data).coef==1&&(p->data).exp!=1)</p><p>  cout<<"x^"<<(p->data).exp;

78、</p><p>  else if((p->data).exp==1&&(p->data).coef!=1)</p><p>  cout<<(p->data).coef<<"x"; </p><p>  else cout<<(p->data).coef<<

79、;"x^"<<(p->data).exp;</p><p><b>  }</b></p><p>  if((p->data).coef<0)</p><p>  { if((p->data).exp==0)</p><p>  cout<<(p

80、->data).coef;//如果指數(shù)為0,則直接輸出系數(shù)</p><p>  else if(p->data.coef==-1&&p->data.exp==1)</p><p>  cout<<"-x";//如果系數(shù)為-1,指數(shù)為1,則輸出-x</p><p>  else if(p->dat

81、a.coef==-1&&p->data.exp!=1)</p><p>  cout<<"-x^"<<p->data.exp; </p><p>  else if(p->data.exp==1)</p><p>  cout<<p->data.coef<<&

82、quot;x";//如果指數(shù)為1,則輸出系數(shù)倍x</p><p>  else cout<<(p->data).coef<<"x^"<<(p->data).exp;</p><p><b>  }</b></p><p>  p=p->next;</p&g

83、t;<p>  while(p!=NULL)</p><p>  {if((p->data).coef>0)//系數(shù)大于0時輸出情況</p><p>  {if((p->data).exp==0) </p><p>  cout<<"+"<<(p->data).coef;</p&

84、gt;<p>  else if((p->data).exp==1&&(p->data).coef!=1) </p><p>  cout<<"+"<<(p->data).coef<<"x";</p><p>  else if((p->data).exp==1

85、&&(p->data).coef==1)</p><p>  cout<<"+"<<"x";</p><p>  else if((p->data).coef==1&&(p->data).exp!=1)</p><p>  cout<<&qu

86、ot;+"<<"x^"<<(p->data).exp;</p><p>  else cout<<"+"<<(p->data).coef<<"x^"<<(p->data).exp;</p><p><b>  }</

87、b></p><p>  if((p->data).coef<0)//系數(shù)小于0時輸出情況</p><p>  { if((p->data).exp==0)</p><p>  cout<<(p->data).coef;</p><p>  else if(p->data.coef==-1&am

88、p;&p->data.exp==1)</p><p>  cout<<"-x";</p><p>  else if(p->data.coef==-1&&p->data.exp!=1)</p><p>  cout<<"-x^"<<p->dat

89、a.exp;</p><p>  else if(p->data.exp==1)</p><p>  cout<<p->data.coef<<"x";</p><p>  else cout<<(p->data).coef<<"x^"<<(p->

90、;data).exp;</p><p><b>  }</b></p><p>  p=p->next;</p><p><b>  }</b></p><p><b>  }</b></p><p>  cout<<endl;<

91、/p><p><b>  }</b></p><p>  void CopyLink(Link &pc,Link pa)</p><p>  {Link p,q,r;</p><p>  pc=new LNode;</p><p>  pc->next=NULL;</p>

92、<p><b>  r=pc;</b></p><p><b>  p=pa;</b></p><p>  while(p->next!=NULL)</p><p>  { q=new LNode;</p><p>  q->data.coef=p->next->d

93、ata.coef;</p><p>  q->data.exp=p->next->data.exp;</p><p>  r->next=q;</p><p>  q->next=NULL;</p><p><b>  r=q;</b></p><p>  p=p-&

94、gt;next;}</p><p><b>  }</b></p><p>  void PolyAdd(Link &pc,Link pa,Link pb)</p><p>  { Link p1,p2,p,pd;</p><p>  CopyLink(p1,pa);</p><p>

95、  CopyLink(p2,pb);</p><p>  pc=new LNode;</p><p>  pc->next=NULL;</p><p><b>  p=pc;</b></p><p>  p1=p1->next;</p><p>  p2=p2->next;<

96、;/p><p>  while(p1!=NULL&&p2!=NULL)</p><p>  {if(p1->data.exp<p2->data.exp)</p><p><b>  {</b></p><p>  p->next=p1;</p><p>  p=

97、p->next;</p><p>  p1=p1->next;</p><p><b>  }</b></p><p>  else if(p1->data.exp>p2->data.exp)</p><p><b>  {</b></p><p&g

98、t;  p->next=p2;</p><p>  p=p->next;</p><p>  p2=p2->next;</p><p><b>  }</b></p><p><b>  else</b></p><p>  {p1->data.coe

99、f=p1->data.coef+p2->data.coef; </p><p>  if(p1->data.coef!=0)</p><p><b>  {</b></p><p>  p->next=p1;</p><p>  p=p->next;</p><p>

100、  p1=p1->next;</p><p>  p2=p2->next;</p><p><b>  }</b></p><p><b>  else</b></p><p><b>  {pd=p1;</b></p><p>  p1=p

101、1->next;</p><p>  p2=p2->next;</p><p>  delete pd;//如果系數(shù)為0,則刪除該項</p><p><b>  }</b></p><p><b>  }</b></p><p><b>  }</

102、b></p><p>  if(p1!=NULL)</p><p>  { p->next=p1;}</p><p>  if(p2!=NULL)</p><p>  { p->next=p2;}</p><p><b>  }</b></p><p> 

103、 void PolySubstract(Link &pc,Link pa,Link pb)</p><p>  {Link p,pt;</p><p>  CopyLink(pt,pb);</p><p><b>  p=pt;</b></p><p>  while(p!=NULL)</p>&l

104、t;p>  { (p->data).coef=(-(p->data).coef);//被減的多項式前加"-"號</p><p>  p=p->next;</p><p><b>  }</b></p><p>  PolyAdd(pc,pa,pt);//調(diào)用多項式加法運算函數(shù)</p>&

105、lt;p>  DestroyLink(pt);</p><p><b>  }</b></p><p>  void Clear()</p><p>  {system("pause");</p><p>  system("cls");</p><p&g

106、t;  }//讓用戶重新選擇</p><p>  void PolyMultiply(Link &pc,Link pa,Link pb)</p><p>  {Link p1,p2,p,pd,newp,t;</p><p>  pc=new LNode;</p><p>  pc->next=NULL;</p>&

107、lt;p>  p1=pa->next;</p><p>  p2=pb->next;</p><p>  while(p1!=NULL)</p><p>  {pd=new LNode;</p><p>  pd->next=NULL;</p><p>  p=new LNode;</p&

108、gt;<p>  p->next=NULL;</p><p><b>  t=p;</b></p><p><b>  while(p2)</b></p><p>  {newp=new LNode;</p><p>  newp->next=NULL;</p>

109、<p>  newp->data.coef=p1->data.coef*p2->data.coef;//系數(shù)相乘</p><p>  newp->data.exp=p1->data.exp+p2->data.exp;//指數(shù)相加</p><p>  t->next=newp;</p><p>  t=t->

110、;next;</p><p>  p2=p2->next;</p><p><b>  }</b></p><p>  PolyAdd(pd,pc,p);</p><p>  CopyLink(pc,pd);</p><p>  p1=p1->next;</p><

111、p>  p2=pb->next;</p><p>  DestroyLink(p);</p><p>  DestroyLink(pd);</p><p><b>  }</b></p><p><b>  }</b></p><p>  void Menu()&

112、lt;/p><p>  {cout<<""<<endl;</p><p>  cout<<endl;</p><p>  cout<<"***************************一元多項式的加、減、乘運算***************************"<&l

113、t;endl;</p><p>  cout<<"\t\t\t\t\t\t\t\t "<<endl;</p><p>  cout<<"[1] 創(chuàng)建要運算的兩個一元多項式\t\t "<<endl;</p><p>  cout<<"[2] 將兩個一元

114、多項式相加\t\t\t "<<endl;</p><p>  cout<<"[3] 將兩個一元多項式相減\t\t\t "<<endl;</p><p>  cout<<"[4] 將兩個一元多項式相乘\t\t\t "<<endl;</p><p>

115、  cout<<"[5] 顯示兩個一元多項式\t\t\t "<<endl;</p><p>  cout<<"[6] 銷毀所創(chuàng)建的二個多項式\t\t "<<endl;</p><p>  cout<<"[7] 退出\t\t\t\t\t "<<end

116、l;</p><p>  cout<<"\t\t\t\t\t\t\t\t "<<endl;</p><p>  cout<<"請選擇:";</p><p><b>  }</b></p><p>  int CompareIfNum(int

117、i)</p><p>  {if(i>0&&i<8)</p><p><b>  return 0;</b></p><p>  else return 1;//返回1時出錯,因為菜單中只有1~7</p><p><b>  }</b></p><p&

118、gt;  void main()</p><p><b>  {int n;</b></p><p>  Link L,La=NULL,Lb=NULL;//La,Lb分別為創(chuàng)建的兩個多項式</p><p>  int choose;</p><p><b>  while(1)</b></p&

119、gt;<p>  { Menu(); //調(diào)用菜單函數(shù)</p><p>  cin>>choose;</p><p>  switch(choose)</p><p><b>  { case 1:</b></p><p>  cout<<"請輸入你要運算的第一個一元多項

120、式的項數(shù):"<<endl;</p><p><b>  cin>>n;</b></p><p>  if(CompareIfNum(n)==1)</p><p>  { cout<<"您的輸入有誤,請重新輸入……"<<endl;</p><p>

121、;<b>  Clear();</b></p><p><b>  break;</b></p><p><b>  }</b></p><p>  CreateLink(La,n);</p><p>  cout<<"請輸入你要運算的第二個一元多項式的項

122、數(shù):"<<endl;</p><p><b>  cin>>n;</b></p><p>  if(CompareIfNum(n)==1)</p><p>  { cout<<"您的輸入有誤,請重新輸入……"<<endl;</p><p>&l

123、t;b>  Clear();</b></p><p><b>  break;</b></p><p><b>  }</b></p><p>  CreateLink(Lb,n);</p><p><b>  Clear();</b></p>

124、<p>  break; </p><p><b>  case 2:</b></p><p>  if(La==NULL||Lb==NULL)</p><p>  {cout<<"您的多項式創(chuàng)建有誤,請重新選擇……"<<endl;</p><p><

125、;b>  Clear();</b></p><p><b>  break;</b></p><p><b>  }</b></p><p>  PolyAdd(L,La,Lb);</p><p>  cout<<""<<endl;<

126、;/p><p>  cout<<"設(shè)相加的兩個一元多項式為A和B則:"<<endl;</p><p>  cout<<""<<endl;</p><p>  cout<<"A的多項式為:";</p><p>  PrintLis

127、t(La);</p><p>  cout<<""<<endl;</p><p>  cout<<"B的多項式為:";</p><p>  PrintList(Lb);</p><p>  cout<<""<<endl;

128、 </p><p>  cout<<"相加后的結(jié)果為:";</p><p>  PrintList(L);</p><p>  cout<<""<<endl;</p><p><b>  Clear();</b></p><

129、p>  DestroyLink(L);</p><p><b>  break;</b></p><p><b>  case 3:</b></p><p>  if(La==NULL||Lb==NULL)</p><p>  {cout<<"您的多項式創(chuàng)建有誤,請重新選

130、擇……"<<endl;</p><p><b>  Clear();</b></p><p><b>  break;</b></p><p><b>  }</b></p><p>  PolySubstract(L,La,Lb);</p>

131、<p>  cout<<"設(shè)相減的兩個一元多項式為A和B則:"<<endl;</p><p>  cout<<""<<endl;</p><p>  cout<<"A的多項式為:";</p><p>  PrintList(La);&l

132、t;/p><p>  cout<<""<<endl;</p><p>  cout<<"B的多項式為:";</p><p>  PrintList(Lb);</p><p>  cout<<""<<endl;</p>

133、<p>  cout<<"相減后的結(jié)果為:";</p><p>  PrintList(L);</p><p>  cout<<""<<endl;</p><p><b>  Clear();</b></p><p>  Destr

134、oyLink(L);</p><p><b>  break; </b></p><p><b>  case 4:</b></p><p>  if(La==NULL||Lb==NULL)</p><p>  { cout<<"您的多項式創(chuàng)建有誤,請重新選擇……"

135、<<endl;</p><p><b>  Clear();</b></p><p><b>  break;</b></p><p><b>  }</b></p><p>  PolyMultiply(L,La,Lb);</p><p>

136、  cout<<"設(shè)相乘的兩個一元多項式為A和B則:"<<endl;</p><p>  cout<<""<<endl;</p><p>  cout<<"A的多項式為:";</p><p>  PrintList(La);</p>

137、<p>  cout<<""<<endl;</p><p>  cout<<"B的多項式為:";</p><p>  PrintList(Lb);</p><p>  cout<<""<<endl;</p><p>

138、;  cout<<"相乘后的結(jié)果為:";</p><p>  PrintList(L);</p><p>  DestroyLink(L);</p><p>  cout<<""<<endl;</p><p><b>  Clear();</b>

139、</p><p><b>  break;</b></p><p><b>  case 5:</b></p><p>  if(La==NULL||Lb==NULL)</p><p>  {cout<<"您的多項式創(chuàng)建有誤,請重新選擇……"<<endl;

140、</p><p><b>  Clear();</b></p><p><b>  break;</b></p><p><b>  }</b></p><p>  cout<<"一元多項式A為:"<<endl;</p>

141、<p>  PrintList(La);</p><p>  cout<<""<<endl;</p><p>  cout<<"一元多項式B為:"<<endl;</p><p>  PrintList(Lb);</p><p>  cout&l

142、t;<""<<endl;</p><p><b>  Clear();</b></p><p><b>  break;</b></p><p><b>  case 6:</b></p><p>  if(La&&Lb)

143、</p><p>  {DestroyLink(La);</p><p>  DestroyLink(Lb);</p><p>  cout<<"多項式銷毀成功!"<<endl;</p><p><b>  Clear();</b></p><p>&l

144、t;b>  }</b></p><p><b>  else </b></p><p>  {cout<<"多項式不存在,請重新選擇^^^"<<endl;</p><p><b>  Clear();</b></p><p><b&

145、gt;  }</b></p><p><b>  break;</b></p><p><b>  case 7:</b></p><p>  exit(0); //exit(0)強制終止程序,返回狀態(tài)碼0表示正常結(jié)束</p><p><b>  default:</b&

146、gt;</p><p>  cout<<"您的輸入有誤,請重新選擇操作……"<<endl;</p><p><b>  Clear();</b></p><p><b>  break;</b></p><p><b>  }</b>

147、</p><p><b>  }</b></p><p><b>  }</b></p><p><b>  附錄2 </b></p><p><b>  用戶使用說明</b></p><p>  雙擊該軟件目錄下的exe文件即可

溫馨提示

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

最新文檔

評論

0/150

提交評論