2023年全國(guó)碩士研究生考試考研英語(yǔ)一試題真題(含答案詳解+作文范文)_第1頁(yè)
已閱讀1頁(yè),還剩18頁(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>  一元多項(xiàng)式計(jì)算</b></p><p> 班級(jí):信息本1002學(xué)號(hào):09姓名:</p><p> 班級(jí):信息本1002學(xué)號(hào):26姓名:</p><p> 班級(jí):信息本1002學(xué)號(hào):34姓名:</p><p> 班級(jí):信息本1002學(xué)號(hào):41姓名:</p><p>&l

2、t;b>  目 錄</b></p><p><b>  一、課題任務(wù)1</b></p><p><b>  二、概要設(shè)計(jì)1</b></p><p><b>  三、詳細(xì)設(shè)計(jì)2</b></p><p><b>  四、調(diào)試分析6</b

3、></p><p><b>  五、測(cè)試結(jié)果6</b></p><p>  六、課程設(shè)計(jì)總結(jié)9</p><p><b>  七、參考文獻(xiàn)9</b></p><p><b>  八、附錄10</b></p><p><b>  一、

4、課題任務(wù)</b></p><p>  功能: 1).能夠按照指數(shù)降序排列建立并輸出多項(xiàng)式;</p><p>  2).能夠完成兩個(gè)多項(xiàng)式的相加,并將結(jié)果輸出;</p><p>  3).能根據(jù)輸入的多項(xiàng)式及變量的值,能進(jìn)行計(jì)算。并輸出計(jì)算結(jié)果。</p><p>  4).能對(duì)多個(gè)輸入的表達(dá)式按照指數(shù)大小排序輸出。</p&

5、gt;<p><b>  二、概要設(shè)計(jì)</b></p><p><b>  三、詳細(xì)設(shè)計(jì)</b></p><p>  一元多項(xiàng)式定義系數(shù)和指數(shù)結(jié)構(gòu)如下: </p><p>  coef域--存放結(jié)點(diǎn)的系數(shù)值</p><p>  expn域--存放結(jié)點(diǎn)的指數(shù)值</p>&l

6、t;p>  next域--存放結(jié)點(diǎn)的直接后繼的地址(位置)的指針域(鏈域)</p><p>  一元多項(xiàng)式單鏈表存儲(chǔ)結(jié)構(gòu):</p><p>  typedef struct term </p><p>  { float coef; //系數(shù) </p><p>  int expn; //指數(shù) </p><

7、;p>  struct term *next; </p><p><b>  }term;</b></p><p>  有了鏈表特定的數(shù)據(jù)類(lèi)型term,接下來(lái)就需要建立這個(gè)鏈表。這里我們自定義一個(gè)構(gòu)造函數(shù)CreatePoly()來(lái)構(gòu)造鏈表。首先定義一個(gè)term型的指針變量h=p作為頭結(jié)點(diǎn),存儲(chǔ)多項(xiàng)式的信息(項(xiàng)數(shù)),為h分配存儲(chǔ)空間建立一個(gè)頭結(jié)點(diǎn)并為其數(shù)據(jù)域賦值,

8、分配存儲(chǔ)空間用malloc()函數(shù)來(lái)實(shí)現(xiàn);這時(shí)輸入多項(xiàng)式的項(xiàng)數(shù)m,先給p的coef賦值為0,此時(shí)利用一個(gè)for循環(huán)將p鏈表的coef與expn值從鍵盤(pán)輸入,用m來(lái)控制循環(huán)的次數(shù),若該從鍵盤(pán)輸入的coef值不為0,則將該數(shù)值插入鏈表新建鏈表q,用malloc()分配給p空間,p=p->next繼續(xù)從鍵盤(pán)輸入coef與expn的值,直到滿足p->next=null,輸入完成,返回鏈表q即為多項(xiàng)式的系數(shù)與指數(shù),創(chuàng)建多項(xiàng)式完成。&l

9、t;/p><p>  在處理多項(xiàng)式相加的問(wèn)題上,由于事先建立的多項(xiàng)式函數(shù)已經(jīng)按指數(shù)大小排好序,那么多項(xiàng)式的相加就變得不那么復(fù)雜了,我們只要找出兩個(gè)相加多項(xiàng)式指數(shù)相同的項(xiàng)進(jìn)行合并,即將指數(shù)相同的項(xiàng)的系數(shù)相加,其它的保持不變存好即可。而查找指數(shù)相同的項(xiàng),只要按鏈表從頭到尾進(jìn)行掃描,若發(fā)現(xiàn)相同,則兩個(gè)同時(shí)往下移,否則只將其中指數(shù)較大的往下移。假若兩個(gè)指數(shù)相同的項(xiàng)進(jìn)行合并時(shí),其系數(shù)相加值為0,則消除該項(xiàng),繼續(xù)下去。</

10、p><p>  在處理輸入的多項(xiàng)式及變量的值計(jì)算結(jié)果的問(wèn)題時(shí),定義一個(gè)C()函數(shù)實(shí)現(xiàn),需要定義一個(gè)float變量sum來(lái)存儲(chǔ)和值,再引用一個(gè)pow()函數(shù)來(lái)計(jì)算多項(xiàng)式的和,利用一個(gè)for循環(huán)來(lái)一一計(jì)算x的q->expn次方后與q->coef相乘的值,并存儲(chǔ)在sum中,q=q->next,直到q->next =unll,跳出for循環(huán),返回 sum的值就是多項(xiàng)式在用x賦值后的值。</p&g

11、t;<p>  對(duì)多個(gè)輸入的表達(dá)式按照指數(shù)從大到小排序輸出:,利用一個(gè)for(包含兩個(gè)函數(shù)CreatPolyn(M,n);selsort(M);)循環(huán),用scanf()輸入k來(lái)控制for的次數(shù)可控制輸入的多項(xiàng)式個(gè)數(shù),并一個(gè)trem型數(shù)組G[i]來(lái)保存每一個(gè)多項(xiàng)式,方便后來(lái)的按最高指數(shù)大小排序。排序的思想利用枚舉排序法可將每個(gè)多項(xiàng)式最高次expn按從大到小排列并保存在G[i]數(shù)組中,再次利用for將排序好的G[i]多項(xiàng)式按指

12、數(shù)從大到小輸出。</p><p>  具體子功能流程圖如下:</p><p><b>  多項(xiàng)式的計(jì)算</b></p><p>  多項(xiàng)式的建立 </p><p>  多個(gè)多項(xiàng)式排序

13、 多項(xiàng)式相減</p><p>  輸出多項(xiàng)式q流程圖:</p><p><b>  N</b></p><p><b>  Y</b></p><p><b>  N</b></p><p><b>  Y<

14、;/b></p><p><b>  Y</b></p><p>  N </p><p><b>  Y</b></p>&

15、lt;p><b>  N</b></p><p><b>  Y</b></p><p><b>  N</b></p><p><b>  Y</b></p><p><b>  N</b></p><

16、p>  多項(xiàng)式輸出主要是對(duì)已建立的多項(xiàng)式按鏈表從頭到尾掃描指數(shù)跟系數(shù)進(jìn)行多重判斷,根據(jù)指數(shù)和系數(shù)輸出相應(yīng)的數(shù)值與符號(hào),直到多項(xiàng)式輸出完成。</p><p><b>  四、調(diào)試分析</b></p><p>  程序的調(diào)試是程序順利完成中非常關(guān)鍵的一步。通過(guò)程序的調(diào)試分析可以解決程序的運(yùn)行錯(cuò)誤也可以對(duì)程序的性能進(jìn)行分析。這個(gè)多項(xiàng)式運(yùn)算問(wèn)題研究的程序最重要的就是看輸

17、出的鏈表是否正確,是否帶有空結(jié)點(diǎn),運(yùn)行結(jié)果輸出是否正確。決定程序成功與否的第一步是定義的CreatPolyn()函數(shù)操作是否正確,如果這一步中出現(xiàn)錯(cuò)誤,那么接下來(lái)的操作可以說(shuō)是錯(cuò)上加錯(cuò)。在調(diào)試的時(shí)候可以在程序中加入刪除、釋放空結(jié)點(diǎn)操作,此操作是由Delet()與free()函數(shù)完成的,若輸出的多項(xiàng)式?jīng)]有空結(jié)點(diǎn)說(shuō)明函數(shù)正確,可以繼續(xù)向下進(jìn)行。接下來(lái)就是函數(shù)相加,控制此操作的關(guān)鍵是一個(gè)A ()函數(shù),其中調(diào)用APolyn()函數(shù)是決定成功與否

18、的關(guān)鍵,而函數(shù)的相減正是相加一個(gè)負(fù)數(shù),將減數(shù)多項(xiàng)式的coef變?yōu)樨?fù)值便實(shí)現(xiàn)了多項(xiàng)式的相減。可以先在本上寫(xiě)出兩個(gè)正確的簡(jiǎn)單的多項(xiàng)式,使其具有相加后出現(xiàn)空結(jié)點(diǎn)的特點(diǎn),然后變換循環(huán)變量的范圍,當(dāng)輸出吻合時(shí)則說(shuō)明操作正確。對(duì)于根據(jù)輸入的多項(xiàng)式及變量的值進(jìn)行計(jì)算,控制此操作的關(guān)鍵是如何計(jì)算多項(xiàng)式中多次方的值,此操作關(guān)鍵是一個(gè)C()函數(shù),調(diào)用pow()函數(shù)來(lái)實(shí)現(xiàn)計(jì)算次方的功能,其中sum值的計(jì)算是否正確起關(guān)鍵作用。</p><p

19、>  下面我們分析一下程序的性能。在主函數(shù)中,首先調(diào)用構(gòu)造單鏈表函數(shù)CreatePoly(),在這個(gè)函數(shù)中需要通過(guò)一個(gè)for循環(huán)為每個(gè)結(jié)點(diǎn)分配存儲(chǔ)空間,變換節(jié)點(diǎn)的next域,時(shí)間復(fù)雜度為O(n)。接下來(lái)執(zhí)行selsort()函數(shù)對(duì)多項(xiàng)式進(jìn)行按指數(shù)排序,其中一個(gè)雙重for循環(huán),在內(nèi)部的for循環(huán)中是對(duì)相鄰結(jié)點(diǎn)指數(shù)大小比較進(jìn)行操作,所以每個(gè)結(jié)點(diǎn)的操作都需要m次,共n個(gè)結(jié)點(diǎn),則需要mn次操作,時(shí)間復(fù)雜度為O(nn)。其后的for循環(huán)是比

20、較將指數(shù)相同的數(shù)進(jìn)行合并,時(shí)間復(fù)雜度為O(n)。</p><p><b>  五、測(cè)試結(jié)果</b></p><p>  系統(tǒng)選擇界面如圖 6-1</p><p><b>  圖6-1</b></p><p>  測(cè)試按照指數(shù)降序排列輸出多項(xiàng)式 8*x^1+9*x^0+7*x^2+6*x^3 <

21、;/p><p><b>  輸入數(shù)據(jù)為:</b></p><p><b>  1(enter)</b></p><p><b>  4(enter)</b></p><p>  8 1 9 0 7 2 6 3(enter)</p><p>  輸出結(jié)果為:6

22、*x^3+7*x^2+8*x^1+9</p><p><b>  測(cè)試結(jié)果如圖6-2</b></p><p><b>  圖6-2</b></p><p>  測(cè)試兩個(gè)多項(xiàng)式相加8*x^1+9*x^0+7*x^2+6*x^3; 0*x^0+1*x^3+5*x^2;</p><p><b>

23、;  輸入數(shù)據(jù)為:</b></p><p><b>  2(enter)</b></p><p><b>  4(enter)</b></p><p>  8 1 9 0 7 2 6 3 (enter)</p><p><b>  3(enter)</b></

24、p><p>  0 0 1 3 5 2(enter)</p><p>  輸出結(jié)果為:7x^3+12x^2+8x+9</p><p><b>  測(cè)試結(jié)果如圖6-3</b></p><p><b>  圖6-3</b></p><p>  輸入的多項(xiàng)式及變量的值計(jì)算結(jié)果測(cè)試<

25、;/p><p>  測(cè)試多項(xiàng)式4x^3+5x^4+6x^1+7x^0 當(dāng)x值為2.5時(shí)的值為279.8125</p><p><b>  輸入數(shù)據(jù)為:</b></p><p>  4(enter) 4(enter)</p><p>  4 3 5 4 6 1 7 0(enter)</p><p> 

26、 2.5(enter)</p><p><b>  測(cè)試結(jié)果如圖6-4</b></p><p><b>  圖6-4</b></p><p>  測(cè)試對(duì)多個(gè)輸入的表達(dá)式按照指數(shù)從大到小排序輸出</p><p>  測(cè)試多項(xiàng)式8*x^1+9*x^0+7*x^2+6*x^3; 0*x^0+1*x^3+5

27、*x^2;4x^3+5x^4+6x^1+7x^0</p><p><b>  輸入數(shù)據(jù)為:</b></p><p>  5(enter) 3(enter) </p><p>  4(enter) 8 1 9 0 7 2 6 3 (enter)</p><p>  3(enter) 0 0 1 3 5 2 (enter

28、)</p><p>  4(enter) 4 3 5 4 6 1 7 0 (enter)</p><p>  輸出結(jié)果為:5x^4+4x^3+6x+7; 6*x^3+7*x^2^+8*x +9;x^3+5*x^2</p><p>  數(shù)組測(cè)試結(jié)果如圖6-5</p><p><b>  圖6-5</b></p>

29、<p><b>  六、課程設(shè)計(jì)總結(jié)</b></p><p>  計(jì)算一元多項(xiàng)式加法,其結(jié)果取決于多項(xiàng)式的各項(xiàng)系數(shù)與指數(shù),因此程序核心是處理兩個(gè)多項(xiàng)式的系數(shù)與指數(shù)。定義結(jié)構(gòu)體將多項(xiàng)式的各項(xiàng)系數(shù)與指數(shù)存放,定義結(jié)構(gòu)體類(lèi)型鏈表為程序的循環(huán)控制提供了可能,利用對(duì)鏈表的運(yùn)算來(lái)確定結(jié)果多項(xiàng)式的各項(xiàng)系數(shù)與次數(shù),同理算出相應(yīng)的冪數(shù)。鏈表是在計(jì)算機(jī)內(nèi)存中使用一組連續(xù)的存儲(chǔ)單元保存數(shù)據(jù)類(lèi)型和名字

30、相同的變量。就鏈表這種數(shù)據(jù)類(lèi)型而言,在排列上采用的方法也是按序排放,先存放第一行,接著存放第二行,……,直到所有數(shù)據(jù)元素被存放。多項(xiàng)式采用的是鏈表形式,以犧牲一定的空間提高程序的運(yùn)行速度和可行性。</p><p>  算法思想:采用鏈?zhǔn)浇Y(jié)構(gòu)存儲(chǔ)多項(xiàng)式,用鏈表結(jié)構(gòu)體的一個(gè)域標(biāo)記多項(xiàng)式的次數(shù),另一個(gè)域標(biāo)記多項(xiàng)式的系數(shù),程序中采用的是m表示最高次系數(shù),進(jìn)行加法運(yùn)算時(shí),標(biāo)記系數(shù)域相加即為相加的對(duì)應(yīng)系數(shù),標(biāo)記指數(shù)域相同則表

31、示為同類(lèi)項(xiàng)。</p><p>  鏈表的特性是在中間任意位置添加刪除元素的都非常的快,不需要移動(dòng)其它的元素。鏈表顧名思義,要把各個(gè)元素鏈接起來(lái)才算撒。通常鏈表每一個(gè)元素都要保存一個(gè)指向下一個(gè)元素的指針(單鏈表)。</p><p>  本次課程設(shè)計(jì),我查找過(guò)資料,請(qǐng)教過(guò)同學(xué),以及不懈的努力,不僅培養(yǎng)了獨(dú)立思考、動(dòng)手操作的能力,在各種其它能力上也都有了提高。更重要的是,在程序設(shè)計(jì)中,我學(xué)會(huì)了很

32、多學(xué)習(xí)的方法,而這是日后最實(shí)用的,真的是受益匪淺。本學(xué)期的程序設(shè)計(jì)課程,我鍛煉了能力,學(xué)到很多東西,比如思考問(wèn)題的角度也會(huì)從多方面著手;對(duì)自己的專(zhuān)業(yè)也有自己的想法……在和同學(xué)的交流過(guò)程中,互動(dòng)學(xué)習(xí),將知識(shí)融會(huì)貫通。通過(guò)這次課程設(shè)計(jì),我對(duì)很多的函數(shù)有了新的認(rèn)識(shí),也學(xué)會(huì)了運(yùn)用多種函數(shù),我也明白了寫(xiě)軟件的基本過(guò)程和基本方法。在程序的設(shè)計(jì)過(guò)程中遇到拉很多的困難,在程序一次一次的調(diào)試失敗下曾經(jīng)想過(guò)要放棄,我最后還是讓自己堅(jiān)持啦下來(lái),毫不畏懼困難,

33、在同學(xué)的幫助與講解下我總算是順利的完成了程序的課程設(shè)計(jì)。</p><p>  在這幾天的編寫(xiě)過(guò)程中我對(duì)語(yǔ)言有了更進(jìn)一步的認(rèn)識(shí)和了解,也感受到了編程給我?guī)?lái)的快樂(lè)與充實(shí),明白了想成為一個(gè)合格的甚至是優(yōu)秀的程序員,我還需要更多更難的鍛煉。所以我還要不斷地學(xué)習(xí)不斷地說(shuō)活,不斷地成長(zhǎng),為我的理想而奮斗。</p><p><b>  七、參考文獻(xiàn)</b></p>

34、<p>  1) 嚴(yán)蔚敏 吳偉民 《數(shù)據(jù)結(jié)構(gòu)(C語(yǔ)言版)》 清華大學(xué)出版社.2006.</p><p>  2) 恰汗 合孜爾 《C語(yǔ)言程序設(shè)計(jì) 》中國(guó)鐵道出版社2009.</p><p>  3) 楊永斌 《數(shù)據(jù)結(jié)構(gòu)(理論與實(shí)踐).》 天津科學(xué)技術(shù)出版社</p><p><b>  4) 百度資料</b></p>&l

35、t;p><b>  八、附錄</b></p><p>  #include<stdlib.h></p><p>  #include<stdio.h> </p><p>  #include<ctype.h> </p><p>  #include<iostream>

36、</p><p>  #include<math.h></p><p>  #define null 0</p><p>  #define W 10</p><p>  using namespace std;</p><p>  typedef struct term </p><p

37、>  { //項(xiàng)的表示,多項(xiàng)式的項(xiàng)作為L(zhǎng)inkList的數(shù)據(jù)元素 </p><p>  float coef; //系數(shù) </p><p>  int expn; //指數(shù) </p><p>  struct term *next; </p><p><b>  }term; </b></p>&

38、lt;p>  int Empty(term *L)</p><p><b>  {</b></p><p>  if(L->next!=null)</p><p><b>  return 1;</b></p><p><b>  return 0;</b><

39、/p><p><b>  }</b></p><p>  void Delete(term * L,term * p)</p><p>  { term * s,*q;</p><p><b>  s=L;</b></p><p>  q=L->next;</p>

40、;<p>  while(p!=q)</p><p><b>  {s=q;</b></p><p>  q=q->next;}</p><p>  s->next=q->next;</p><p><b>  free(q);</b></p><

41、p>  } </p><p>  term* CreatPolyn(term *P,int m) </p><p>  { // 輸入m項(xiàng)的系數(shù)和指數(shù),建立表示一元多項(xiàng)式的有序鏈表P </p><p>  if(m <= 0) return NULL; </p><p

42、>  term *h = P = (term*)malloc(sizeof(term)), *q; </p><p>  P->coef = 0.0; </p><p><b>  int i; </b></p><p>  printf("依次輸入%d個(gè)數(shù)(前一個(gè)為系數(shù),后一個(gè)為指數(shù))\n",m*2); <

43、;/p><p>  for (i = 1; i <= m; ++i)</p><p>  { // 依次輸入m個(gè)非零項(xiàng) </p><p>  scanf("%f%d",&P->coef,&P->expn); </p><p>  if(P->coef) </p><p

44、>  q = P; //若該系數(shù)值不為0,則p數(shù)值插入鏈表q</p><p>  P = P->next = (term*)malloc(sizeof(term)); </p><p><b>  } </b></p><p>  q->next = NULL; </p><p><b>  

45、free(P); </b></p><p>  return h; </p><p>  } // CreatPolyn </p><p>  term* selsort(term *h) </p><p>  { //將有序鏈表進(jìn)行指數(shù)排列</p><p>  term *g, *p, *q; </

46、p><p>  if(!h) return NULL; </p><p><b>  float f; </b></p><p>  int i, fini = 1; </p><p>  for(g = h;g->next&&fini;g = g->next) //確定排序需要掃描的次數(shù) &

47、lt;/p><p>  { fini = 0; </p><p>  for(p = h,q = h->next;q;p = p->next,q = q->next) </p><p>  //相鄰的指數(shù)進(jìn)行比較,一次循環(huán)將最小指數(shù)排到最后,若兩兩比較沒(méi)交換,則...</p><p>  if (p->e

48、xpn < q->expn) //將鏈表中的元素按指數(shù)從高到低排列</p><p>  { f = p->coef;i = p->expn; </p><p>  p->coef = q->coef;p->expn = q->expn; </p><p>  q->coef = f;q->expn

49、 = i; </p><p>  fini = 1; </p><p><b>  } </b></p><p><b>  } </b></p><p>  for(g = h,p = g->next;p;) //比較將指數(shù)相同的數(shù)進(jìn)行合并</p><p>  if(

50、g->expn==p->expn) </p><p>  {g->coef += p->coef; </p><p>  g->next = p->next; //合并后跳過(guò)一個(gè)元素,并刪除該結(jié)點(diǎn)</p><p><b>  q = p; </b></p><p>  p = p-

51、>next; </p><p><b>  free(q); </b></p><p><b>  } </b></p><p><b>  else </b></p><p>  if(g->next) </p><p>  { g =

52、 g->next; </p><p>  p = p->next; </p><p><b>  } </b></p><p>  return h; </p><p><b>  } </b></p><p>  void PrintfPoly(term *P

53、) </p><p>  { //輸出按指數(shù)從大到小排列后的一元多次式</p><p>  term *q = P; </p><p><b>  if(!q) </b></p><p><b>  { </b></p><p>  putchar('0');

54、 </p><p><b>  return; </b></p><p><b>  } </b></p><p>  if(q->coef!=1) </p><p>  { printf("%g",q->coef); </p><p>  

55、//%g用來(lái)輸出實(shí)數(shù),它根據(jù)數(shù)值的大小,自動(dòng)選f格式或e格式,且不輸出無(wú)意義的0</p><p>  if(q->expn==1) putchar('X'); //若指數(shù)值大小為1,則指數(shù)省略</p><p>  else if(q->expn) printf("X^%d",q->expn); </p><p&

56、gt;<b>  } </b></p><p>  else if(!q->expn) putchar('1'); </p><p>  else if(q->expn==1) putchar('X'); </p><p>  else printf("X^%d",q->ex

57、pn); </p><p>  q = q->next; </p><p>  while (q) </p><p><b>  { </b></p><p>  if(q->coef > =0) putchar('+'); </p><p>  if(q->

58、;coef!=1) </p><p><b>  { </b></p><p>  printf("%g",q->coef); </p><p>  if(q->expn==1) putchar('X'); </p><p>  else if(q->expn) pr

59、intf("X^%d",q->expn); </p><p><b>  } </b></p><p>  else if(!q->expn) putchar('1'); </p><p>  else if(q->expn==1) putchar('X'); </p&

60、gt;<p>  else printf("X^%d",q->expn); </p><p>  q = q->next; </p><p><b>  } </b></p><p><b>  } </b></p><p>  int Compare(

61、term *a, term *b) </p><p><b>  { </b></p><p>  if (a->expn < b->expn) return -1; </p><p>  if (a->expn > b->expn) return 1; </p><p>  retu

62、rn 0; </p><p><b>  } </b></p><p>  float C(term *c,float x) //計(jì)算輸入變量的多項(xiàng)式的值</p><p>  { float sum=0,a;</p><p><b>  int b;</b></p><p&

63、gt;  term *q=c;</p><p>  for(;q ;q=q->next)</p><p>  { a=q->coef ;b=q->expn ;</p><p>  sum+=a*pow(x,b);</p><p><b>  }</b></p><p>  re

64、turn sum;</p><p><b>  }</b></p><p>  term* APolyn(term *Pa, term *Pb) </p><p>  { // 多項(xiàng)式加法:Pa = Pa+Pb,利用兩個(gè)多項(xiàng)式的結(jié)點(diǎn)構(gòu)成"和多項(xiàng)式"。 </p><p>  term *h,

65、*qa = Pa, *qb = Pb, *p, *q; </p><p>  float sum; </p><p>  h = p = (term*)malloc(sizeof(term)); </p><p>  p->next = NULL; </p><p>  while (qa && qb) </p&g

66、t;<p>  { // Pa和Pb均非空 </p><p>  switch (Compare(qa,qb)) </p><p><b>  { </b></p><p>  case -1: // 多項(xiàng)式PA中當(dāng)前結(jié)點(diǎn)的指數(shù)值小 </p><p>  p->next = qb; </p&

67、gt;<p><b>  p = qb; </b></p><p>  qb = qb->next; </p><p><b>  break; </b></p><p>  case 0: // 兩者的指數(shù)值相等 </p><p>  sum = qa->coef + q

68、b->coef; </p><p>  if (sum != 0.0)</p><p>  { // 修改多項(xiàng)式PA中當(dāng)前結(jié)點(diǎn)的系數(shù)值 </p><p>  p->next = qa; </p><p>  qa->coef = sum; </p><p><b>  p = qa; &l

69、t;/b></p><p>  qa = qa->next; </p><p><b>  } </b></p><p><b>  else </b></p><p>  { // 刪除多項(xiàng)式PA中當(dāng)前結(jié)點(diǎn) </p><p><b>  q = qa

70、; </b></p><p>  qa = qa->next; </p><p><b>  free(q); </b></p><p><b>  } </b></p><p><b>  q = qb; </b></p><p> 

71、 qb = qb->next; </p><p><b>  free(q); </b></p><p><b>  break; </b></p><p>  case 1: // 多項(xiàng)式PB中當(dāng)前結(jié)點(diǎn)的指數(shù)值小 </p><p>  p->next = qa; </p>

72、<p><b>  p = qa; </b></p><p>  qa = qa->next; </p><p><b>  break; </b></p><p>  } // 結(jié)束switch </p><p>  } // 結(jié)束while </p><p&

73、gt;  if (Pa) p->next = qa; // 鏈接Pa中剩余結(jié)點(diǎn) </p><p>  if (Pb) p->next = qb; // 鏈接Pb中剩余結(jié)點(diǎn) </p><p><b>  q = h; </b></p><p>  h = h->next; </p><p><b&g

74、t;  free(q); </b></p><p>  return h; </p><p>  } // APolyn </p><p>  term* A(term *Pa, term *Pb) </p><p>  { int n; </p><p>  printf("請(qǐng)輸入第二個(gè)

75、一元多項(xiàng)式的項(xiàng)數(shù): "); </p><p>  scanf("%d",&n); </p><p>  Pb = CreatPolyn(Pb,n); </p><p>  Pb = selsort(Pb); </p><p>  cout<<"兩個(gè)多項(xiàng)式相加結(jié)果為:";&

76、lt;/p><p>  PrintfPoly(Pa); </p><p>  if(Pb && Pb->coef>0) printf(" + "); </p><p>  PrintfPoly(Pb); </p><p>  Pa = APolyn(Pa,Pb); </p><p

77、>  printf(" = "); </p><p>  Pa = selsort(Pa); </p><p>  PrintfPoly(Pa); </p><p>  return Pa; </p><p><b>  }</b></p><p>  term* BPo

78、lyn(term *Pa, term *Pb)</p><p>  { // 多項(xiàng)式減法:Pa = Pa-Pb,利用兩個(gè)多項(xiàng)式的結(jié)點(diǎn)構(gòu)成"差多項(xiàng)式"。 </p><p>  term *p = Pb; </p><p><b>  while(p) </b></p><p>  { p-&g

79、t;coef *= -1; </p><p>  p = p->next; </p><p><b>  } </b></p><p>  return APolyn(Pa,Pb); </p><p>  } // BPolyn </p><p>  term* B(term *Pa, te

80、rm *Pb) </p><p>  { int n; </p><p>  printf("請(qǐng)輸入第二個(gè)一元多項(xiàng)式的項(xiàng)數(shù): ");</p><p>  scanf("%d",&n); </p><p>  Pb = CreatPolyn(Pb,n); </p>&

81、lt;p>  Pb = selsort(Pb);</p><p>  cout<<"兩個(gè)多項(xiàng)式相減結(jié)果為:";</p><p>  PrintfPoly(Pa); </p><p>  printf(" - "); </p><p>  putchar('(');Pri

82、ntfPoly(Pb);putchar(')'); </p><p>  Pa = BPolyn(Pa,Pb); </p><p>  printf(" = "); </p><p>  Pa = selsort(Pa); </p><p>  PrintfPoly(Pa); </p><

83、;p>  return Pa; </p><p><b>  } </b></p><p>  void main() </p><p>  { term *M,*N; </p><p><b>  term *q;</b></p><p>  int i,j,n

84、; </p><p>  float x,y;</p><p>  term *G[W];</p><p><b>  int k;</b></p><p>  f: puts("\t================ 一元多項(xiàng)式計(jì)算系統(tǒng):==================="); </p>

85、;<p>  printf("\n\t\t\t1:按照指數(shù)降序排列輸出多項(xiàng)式\n\t\t\t2:一元多項(xiàng)式的加法運(yùn)算");</p><p>  printf("\n\t\t\t3:一元多項(xiàng)式的減法運(yùn)算\n\t\t\t4:輸入的多項(xiàng)式及變量的值計(jì)算結(jié)果");</p><p>  puts("\n\t\t\t5:對(duì)多個(gè)輸入的表達(dá)式

86、按照指數(shù)從大到小排序輸出\n\t\t\t0:退出系統(tǒng)");</p><p>  puts("\t========================================================");</p><p>  printf("\n請(qǐng)選擇您要進(jìn)行的操作:");</p><p><b>

87、;  cin>>i;</b></p><p>  switch(i) </p><p><b>  { </b></p><p><b>  case 1:</b></p><p>  printf("\n\t\t\t按照指數(shù)降序排列輸出多項(xiàng)式:\n請(qǐng)輸入該一元多項(xiàng)

88、式的項(xiàng)數(shù): "); </p><p>  scanf("%d",&n); </p><p>  M = CreatPolyn(M,n); </p><p>  M = selsort(M); </p><p>  cout<<"您輸入的多項(xiàng)式按指數(shù)降序排列為: ";<

89、;/p><p>  PrintfPoly(M);</p><p>  cout<<endl<<endl;</p><p><b>  goto f;</b></p><p><b>  case 2:</b></p><p>  printf("

90、\n\t\t\t一元多項(xiàng)式加法計(jì)算:\n請(qǐng)輸入第一個(gè)一元多項(xiàng)式的項(xiàng)數(shù): "); </p><p>  scanf("%d",&n); </p><p>  M = CreatPolyn(M,n); </p><p>  M = selsort(M); </p><p>  M = A(M,N);<

91、/p><p>  cout<<endl<<endl;</p><p><b>  goto f; </b></p><p><b>  case 3:</b></p><p>  printf("\n\t\t\t一元多項(xiàng)式減法計(jì)算:\n請(qǐng)輸入第一個(gè)一元多項(xiàng)式的項(xiàng)數(shù):

92、"); </p><p>  scanf("%d",&n); </p><p>  M = CreatPolyn(M,n); </p><p>  M = selsort(M);</p><p>  M = B(M,N);</p><p>  cout<<endl<

93、;<endl;</p><p><b>  goto f;</b></p><p><b>  case 4:</b></p><p>  printf("\n\t\t\t根據(jù)輸入的多項(xiàng)式及變量的值進(jìn)行計(jì)算:\n請(qǐng)輸入您將要計(jì)算的一元多項(xiàng)式的項(xiàng)數(shù): "); </p><p&g

94、t;  scanf("%d",&n); </p><p>  M = CreatPolyn(M,n);</p><p>  M = selsort(M);</p><p>  cout<<"您輸入的一元多項(xiàng)式按指數(shù)降序排列為: ";</p><p>  PrintfPoly(M);

95、</p><p>  cout<<"\n請(qǐng)輸入變量x的值: ";</p><p>  scanf("%f",&x);</p><p><b>  y=C(M,x);</b></p><p>  printf("多項(xiàng)式的值為: %f\n",y

96、);</p><p>  cout<<endl<<endl;</p><p><b>  goto f;</b></p><p><b>  case 5:</b></p><p>  printf("\n\t\t\t對(duì)多個(gè)輸入的表達(dá)式按照指數(shù)大小排序輸出:\n請(qǐng)輸

97、入需要排序的一元多項(xiàng)式的個(gè)數(shù): "); </p><p>  scanf("%d",&k);</p><p>  for(i=0;i<k;i++)</p><p>  { printf("請(qǐng)輸入第%d個(gè)一元多項(xiàng)式的項(xiàng)數(shù): ",i+1);</p><p>  scanf(&q

98、uot;%d",&n); </p><p>  M = CreatPolyn(M,n); </p><p>  M = selsort(M);</p><p>  G[i]=M; //用數(shù)組記住每一個(gè)多項(xiàng)式</p><p><b>  }</b></p><p>  fo

99、r(j=0;j<k;j++)</p><p>  for(i=1;i<k;i++)</p><p>  if(G[i-1]->expn<G[i]->expn)</p><p>  { q=G[i];G[i]=G[i-1];G[i-1]=q;} </p><p>  printf("輸入的表達(dá)式按照指數(shù)

100、從大到小排序輸出結(jié)果為:\n");</p><p>  for(i=0;i<k;i++)</p><p>  { printf("\t%d: ",i+1);</p><p>  PrintfPoly(G[i]);</p><p>  cout<<endl;</p><p&

101、gt;<b>  } </b></p><p>  cout<<endl<<endl;</p><p><b>  goto f;</b></p><p><b>  case 0: </b></p><p><b>  break; &l

102、t;/b></p><p>  printf("=================謝謝您使用該系統(tǒng)!==================\n");</p><p>  default: puts("您輸入的數(shù)據(jù)有誤,請(qǐng)重新輸入!");</p><p><b>  goto f;</b></p

溫馨提示

  • 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)論