2023年全國(guó)碩士研究生考試考研英語(yǔ)一試題真題(含答案詳解+作文范文)_第1頁(yè)
已閱讀1頁(yè),還剩11頁(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ì)題目</b></p><p>  用C語(yǔ)言實(shí)現(xiàn)一元多項(xiàng)式的加減法計(jì)算</p><p>  〔問(wèn)題描述〕輸入并建立兩個(gè)多項(xiàng)式并輸出多項(xiàng)式</p><p>  開發(fā)環(huán)境、采用的語(yǔ)言</p><p>  開發(fā)環(huán)境:vc6.0/windows xp</p><p><

2、;b>  采用的語(yǔ)言:C語(yǔ)言</b></p><p><b>  設(shè)計(jì)思想</b></p><p>  我的設(shè)計(jì)思想是輸入按冪項(xiàng)從大到小輸入一元多項(xiàng),并將一元多項(xiàng)式相等冪項(xiàng)進(jìn)行加減運(yùn)算,在加法運(yùn)算中將無(wú)相等冪項(xiàng)直接輸入到結(jié)果單鏈表中,在減法運(yùn)算中將被減的一元多項(xiàng)式的無(wú)相等冪項(xiàng)直接輸入到結(jié)果單鏈表中,將減項(xiàng)的一元多項(xiàng)式的無(wú)相等冪項(xiàng)變號(hào)后輸出到結(jié)果單鏈表

3、中,輸入2個(gè)方程式之后可以得出2式相加、相減的全部結(jié)果,也是簡(jiǎn)化了算法運(yùn)行時(shí)間難度。雖然浪費(fèi)了一些計(jì)算能力,但是簡(jiǎn)化了代碼復(fù)雜度。</p><p><b>  程序總的流程圖</b></p><p><b>  圖一:程序流程圖</b></p><p>  數(shù)據(jù)結(jié)構(gòu)說(shuō)明及模塊算法說(shuō)明</p><p>

4、;  數(shù)據(jù)結(jié)構(gòu)說(shuō)明:使用單鏈表來(lái)表示一元多項(xiàng)式:</p><p>  typedef struct linklist</p><p><b>  {</b></p><p>  int mi; //mi是冪項(xiàng)</p><p>  int xishu;//xishu是系數(shù)

5、</p><p>  struct linklist *next;//next</p><p><b>  }*list;</b></p><p><b>  模塊算法說(shuō)明</b></p><p>  list creatpoly(void)</p><p>  創(chuàng)建一個(gè)

6、新的一元多項(xiàng)式,用do循環(huán)輸入一元多項(xiàng)式,以“系數(shù),冪項(xiàng)”的格式輸入數(shù)據(jù),當(dāng)系數(shù)與冪項(xiàng)同時(shí)為零時(shí)停止輸入。</p><p>  void printpoly(list head) </p><p>  輸出一個(gè)一元多項(xiàng)式,將多項(xiàng)式從頭到尾輸出,使用一個(gè)IF語(yǔ)句來(lái)區(qū)分第一項(xiàng)前是否有加號(hào),使用一個(gè)whlie在當(dāng)p->不為NULL時(shí),進(jìn)行循環(huán)輸出+ax^b的形式,當(dāng)a為零時(shí)輸出空白,當(dāng)b為

7、零時(shí)輸出+ax,當(dāng)a<0時(shí)輸出-ax^b的形式,等等。以應(yīng)對(duì)多項(xiàng)式中出現(xiàn)的各種情況。</p><p>  list addpoly(list pa, list pb)</p><p>  將兩個(gè)多項(xiàng)式執(zhí)行pa+pb的計(jì)算,從高冪次項(xiàng)向低冪次項(xiàng),無(wú)等冪項(xiàng)直接將數(shù)值輸出結(jié)果單鏈表,有等冪項(xiàng)兩系數(shù)相加后輸出到結(jié)果單鏈表中。</p><p>  list misep

8、oly(list pa, list pb)</p><p>  將兩個(gè)多項(xiàng)式執(zhí)行pa-pb的計(jì)算,從高冪次項(xiàng)向低冪次項(xiàng),無(wú)等冪項(xiàng)的pa式中直接將數(shù)值輸出結(jié)果單鏈表、pb式中將系數(shù)變號(hào)后輸出到結(jié)果單鏈表中,有等冪項(xiàng)兩系數(shù)相減后輸出到結(jié)果單鏈表中。</p><p>  int main(void)</p><p>  主函數(shù),具有部分交互界面以及各個(gè)函數(shù)的調(diào)

9、用過(guò)程??梢栽谥骱瘮?shù)中選擇是否不斷的進(jìn)行運(yùn)算,用一個(gè)while來(lái)循環(huán)整個(gè)程序。</p><p>  程序運(yùn)行說(shuō)明及結(jié)果截圖</p><p>  程序開始運(yùn)行輸入第一個(gè)一元多項(xiàng)式:</p><p><b>  圖二:算法的開始</b></p><p>  輸入第一個(gè)一元多項(xiàng)式之后輸入第二個(gè)一元多項(xiàng)式:</p>

10、<p>  圖三:第一個(gè)多項(xiàng)式輸入結(jié)束</p><p>  程序運(yùn)算后得到結(jié)果:</p><p>  圖四:運(yùn)算結(jié)束之后得到結(jié)果</p><p>  按下1后 程序繼續(xù)運(yùn)行:</p><p>  圖五:按下1后程序繼續(xù)運(yùn)行</p><p>  程序調(diào)試及測(cè)試過(guò)程記載</p><p>

11、  本程序從源碼開始經(jīng)過(guò)多次調(diào)試,一開始創(chuàng)建一元多項(xiàng)式并沒(méi)有遇到什么問(wèn)題,但是在一元多項(xiàng)式的加法時(shí)遇到一些問(wèn)題,在不從高到低的順序輸入時(shí)會(huì)導(dǎo)致計(jì)算混亂,多出很多項(xiàng)。后來(lái)將項(xiàng)從高到底順序輸入,并且沒(méi)有重復(fù)冪項(xiàng)時(shí),此問(wèn)題解決。</p><p>  然后是減法運(yùn)算,若第一個(gè)多項(xiàng)式中沒(méi)有比如5次冪項(xiàng),而第二個(gè)多項(xiàng)式中有5次冪項(xiàng),1式減2式的結(jié)果卻為正的五次冪項(xiàng),經(jīng)過(guò)修改后,無(wú)此問(wèn)題。</p><p&g

12、t;  最后是輸出時(shí)產(chǎn)生的問(wèn)題,第一項(xiàng)的輸出若為正的情況是沒(méi)有符號(hào)的,若第一項(xiàng)系數(shù)為零時(shí)還會(huì)輸出一個(gè)零的情況,還有加法運(yùn)算或者減法運(yùn)算后,其計(jì)算結(jié)果前面沒(méi)有‘+’號(hào)的情況,最后將程序制作成可以自動(dòng)識(shí)別正負(fù)項(xiàng)以及零項(xiàng)。</p><p><b>  總結(jié)及心得體會(huì)</b></p><p>  這次數(shù)據(jù)結(jié)構(gòu)的課程設(shè)計(jì)讓我加深了對(duì)數(shù)據(jù)結(jié)構(gòu)的理解,同時(shí)也明白了更多知識(shí)。讓我加深

13、了對(duì)單鏈表的運(yùn)用。</p><p>  在制作這個(gè)程序的同時(shí),加深了我對(duì)C語(yǔ)言的運(yùn)用以及理解,讓我的編譯水平的到了一定的提高。我覺(jué)得自己的能力提高了,也讓我明白數(shù)據(jù)結(jié)構(gòu)在生活中的運(yùn)用。</p><p>  我明白了理論與實(shí)際應(yīng)用相結(jié)合的重要性,并提高了自己組織數(shù)據(jù)及編寫大型程序的能力。培養(yǎng)了基本的、良好的程序設(shè)計(jì)技能以及合作能力。</p><p>  這次課程設(shè)計(jì)同

14、樣提高了我的綜合運(yùn)用所學(xué)知識(shí)的能力。并對(duì)VC有了更深入的了解?!稊?shù)據(jù)結(jié)構(gòu)》是一門實(shí)踐性很強(qiáng)的課程,上機(jī)實(shí)習(xí)是對(duì)學(xué)生全面綜合素質(zhì)進(jìn)行訓(xùn)練的一種最基本的方法,是與課堂聽講、自學(xué)和練習(xí)相輔相成的、必不可少的一個(gè)教學(xué)環(huán)節(jié)。上機(jī)實(shí)習(xí)一方面能使書本上的知識(shí)變“活”,起到深化理解和靈活掌握教學(xué)內(nèi)容的目的;另一方面,上機(jī)實(shí)習(xí)是對(duì)學(xué)生軟件設(shè)計(jì)的綜合能力的訓(xùn)練,包括問(wèn)題分析,總體結(jié)構(gòu)設(shè)計(jì),程序設(shè)計(jì)基本技能和技巧的訓(xùn)練。</p><p&g

15、t;<b>  附錄:源代碼</b></p><p>  #include<stdio.h></p><p>  #include<malloc.h></p><p>  #include<Windows.h></p><p>  typedef struct linklist<

16、/p><p><b>  {</b></p><p><b>  int mi;</b></p><p>  int xishu;</p><p>  struct linklist *next;</p><p><b>  }*list;</b></

17、p><p>  list creatpoly(void)</p><p><b>  {</b></p><p><b>  int a, n;</b></p><p>  int i = 1;</p><p>  list head, s, p;</p><

18、p>  printf("輸入一元多項(xiàng)式(以0,0標(biāo)志結(jié)束):\n");</p><p>  printf("要求:按冪從大到小的次序輸入各個(gè)結(jié)點(diǎn)\n");</p><p>  head = (list)malloc(sizeof(struct linklist));</p><p>  head->next = N

19、ULL;</p><p><b>  p = head;</b></p><p><b>  do</b></p><p><b>  {</b></p><p>  printf("第%d次-> 系數(shù),冪:", i);</p><

20、p><b>  i++;</b></p><p>  scanf_s("%d,%d", &a, &n);</p><p>  if (a != 0 || n != 0)</p><p><b>  {</b></p><p>  s = (list)mall

21、oc(sizeof(struct linklist));</p><p>  s->xishu = a;</p><p>  s->mi = n;</p><p>  s->next = NULL;</p><p>  p->next = s;</p><p><b>  p = s;

22、</b></p><p><b>  }</b></p><p>  } while (a != 0 || n != 0);</p><p>  printf("\n");</p><p>  return(head);</p><p><b>  }&l

23、t;/b></p><p>  void printpoly(list head)</p><p><b>  {</b></p><p><b>  list p;</b></p><p>  int first = 1;</p><p>  p = head->

24、;next;</p><p>  while (p != NULL)</p><p><b>  {</b></p><p>  if (first)</p><p><b>  {</b></p><p>  if (p->xishu == 1)</p>

25、<p>  printf("x^%d", p->mi);</p><p>  else if (p->xishu == 0)</p><p>  printf("");</p><p>  else if (p->mi == 0)</p><p>  printf(&quo

26、t;%d", p->xishu);</p><p><b>  else</b></p><p>  printf("%dx^%d", p->xishu, p->mi);</p><p>  first = 0;</p><p><b>  }</b>

27、</p><p><b>  else</b></p><p><b>  {</b></p><p>  if (p->xishu > 0)</p><p><b>  {</b></p><p>  if (p->mi == 1)&

28、lt;/p><p>  printf("+%dx", p->xishu);</p><p>  else if (p->mi == 0)</p><p>  printf("+%d", p->xishu);</p><p><b>  else </b></p&

29、gt;<p>  printf("+%dx^%d", p->xishu, p->mi);</p><p><b>  }</b></p><p>  else if (p->xishu < 0)</p><p><b>  {</b></p><

30、p>  if (p->mi == 1)</p><p>  printf("%dx", p->xishu);</p><p>  else if (p->mi == 0)</p><p>  printf("%d", p->xishu);</p><p><b>

31、  else </b></p><p>  printf("%dx^%d", p->xishu, p->mi);</p><p><b>  }</b></p><p><b>  else</b></p><p>  printf(""

32、;);</p><p><b>  }</b></p><p>  p = p->next;</p><p><b>  }</b></p><p>  printf("\n");</p><p><b>  }</b><

33、/p><p>  list addpoly(list pa, list pb) /*兩個(gè)多項(xiàng)式的加法運(yùn)算*/</p><p><b>  {</b></p><p><b>  int n;</b></p><p>  list pc, s, p;

34、 /*pc是新產(chǎn)生的鏈表頭結(jié)點(diǎn)指針*/</p><p>  pa = pa->next;</p><p>  pb = pb->next;</p><p>  pc = (list)malloc(sizeof(struct linklist)); /*產(chǎn)生附加的表頭結(jié)點(diǎn)*/</p><p>  pc->next = N

35、ULL;</p><p>  p = pc; /* P 指向PC鏈表的最后結(jié)點(diǎn)*/</p><p>  while (pa != NULL&&pb != NULL)</p><p><b>  {</b></p><p>  if (pa->mi>pb->

36、mi)</p><p><b>  {</b></p><p>  s = (list)malloc(sizeof(struct linklist)); /* 建新結(jié)點(diǎn)*/</p><p>  s->mi = pa->mi;</p><p>  s->xishu = pa->xishu;&l

37、t;/p><p>  s->next = NULL;</p><p>  p->next = s;</p><p><b>  p = s;</b></p><p>  pa = pa->next;</p><p><b>  }</b></p>

38、<p>  else if (pa->mi<pb->mi)</p><p><b>  {</b></p><p>  s = (list)malloc(sizeof(struct linklist));</p><p>  s->mi = pb->mi;</p><p>  s-

39、>xishu = pb->xishu;</p><p>  s->next = NULL;</p><p>  p->next = s;</p><p><b>  p = s;</b></p><p>  pb = pb->next;</p><p><b&g

40、t;  }</b></p><p>  else/* 兩項(xiàng)冪相等*/</p><p><b>  {</b></p><p>  n = pa->xishu + pb->xishu;</p><p>  if (n != 0)</p><p><b>  {&

41、lt;/b></p><p>  s = (list)malloc(sizeof(struct linklist));</p><p>  s->xishu = n;</p><p>  s->mi = pa->mi;</p><p>  s->next = NULL;</p><p> 

42、 p->next = s;</p><p><b>  p = s;</b></p><p><b>  }</b></p><p>  pa = pa->next;</p><p>  pb = pb->next;</p><p><b>  }

43、</b></p><p><b>  }</b></p><p>  while (pa != NULL)</p><p><b>  {</b></p><p>  s = (list)malloc(sizeof(struct linklist));</p><p&

44、gt;  s->mi = pa->mi;</p><p>  s->xishu = pa->xishu;</p><p>  s->next = NULL;</p><p>  p->next = s;</p><p><b>  p = s;</b></p><p

45、>  pa = pa->next;</p><p><b>  }</b></p><p>  while (pb != NULL)</p><p><b>  {</b></p><p>  s = (list)malloc(sizeof(struct linklist));</

46、p><p>  s->mi = pb->mi;</p><p>  s->xishu = -pb->xishu;</p><p>  s->next = NULL;</p><p>  p->next = s;</p><p><b>  p = s;</b><

47、;/p><p>  pb = pb->next;</p><p><b>  }</b></p><p>  return (pc);</p><p><b>  }</b></p><p>  list misepoly(list pa, list pb) /

48、*兩個(gè)多項(xiàng)式的減法運(yùn)算*/</p><p><b>  {</b></p><p><b>  int n;</b></p><p>  list pc, s, p; /*pc是新產(chǎn)生的鏈表頭結(jié)點(diǎn)指針*/</p><p>  pa = pa->n

49、ext;</p><p>  pb = pb->next;</p><p>  pc = (list)malloc(sizeof(struct linklist)); /*產(chǎn)生附加的表頭結(jié)點(diǎn)*/</p><p>  pc->next = NULL;</p><p>  p = pc; /* P 指

50、向PC鏈表的最后結(jié)點(diǎn)*/</p><p>  while (pa != NULL&&pb != NULL)</p><p><b>  {</b></p><p>  if (pa->mi>pb->mi)</p><p><b>  {</b></p>

51、<p>  s = (list)malloc(sizeof(struct linklist)); /* 建新結(jié)點(diǎn)*/</p><p>  s->mi = pa->mi;</p><p>  s->xishu = pa->xishu;</p><p>  s->next = NULL;</p><p&

52、gt;  p->next = s;</p><p><b>  p = s;</b></p><p>  pa = pa->next;</p><p><b>  }</b></p><p>  else if (pa->mi<pb->mi)</p>&l

53、t;p><b>  {</b></p><p>  s = (list)malloc(sizeof(struct linklist));</p><p>  s->mi = pb->mi;</p><p>  s->xishu = - pb->xishu;</p><p>  s->n

54、ext = NULL;</p><p>  p->next = s;</p><p><b>  p = s;</b></p><p>  pb = pb->next;</p><p><b>  }</b></p><p>  else/* 兩項(xiàng)冪相等*/&

55、lt;/p><p><b>  {</b></p><p>  n = pa->xishu - pb->xishu;</p><p>  if (n != 0)</p><p><b>  {</b></p><p>  s = (list)malloc(sizeof

56、(struct linklist));</p><p>  s->xishu = n;</p><p>  s->mi = pa->mi;</p><p>  s->next = NULL;</p><p>  p->next = s;</p><p><b>  p = s;&

57、lt;/b></p><p><b>  }</b></p><p>  pa = pa->next;</p><p>  pb = pb->next;</p><p><b>  }</b></p><p><b>  }</b>&l

58、t;/p><p>  while (pa != NULL)</p><p><b>  {</b></p><p>  s = (list)malloc(sizeof(struct linklist));</p><p>  s->mi = pa->mi;</p><p>  s->

59、xishu = pa->xishu;</p><p>  s->next = NULL;</p><p>  p->next = s;</p><p><b>  p = s;</b></p><p>  pa = pa->next;</p><p><b>  

60、}</b></p><p>  while (pb != NULL)</p><p><b>  {</b></p><p>  s = (list)malloc(sizeof(struct linklist));</p><p>  s->mi = pb->mi;</p><

61、p>  s->xishu = - pb->xishu;</p><p>  s->next = NULL;</p><p>  p->next = s;</p><p><b>  p = s;</b></p><p>  pb = pb->next;</p><p

62、><b>  }</b></p><p>  return (pc);</p><p><b>  }</b></p><p>  int main(void)</p><p><b>  {</b></p><p>  int choose;&

63、lt;/p><p><b>  do</b></p><p><b>  {</b></p><p>  list poly1, poly2, poly3,poly4,poly5;</p><p>  printf("建立第1個(gè)一元多項(xiàng)式=>\n");</p>&

64、lt;p>  poly1 = creatpoly();</p><p>  printf("建立第2個(gè)一元多項(xiàng)式=>\n");</p><p>  poly2 = creatpoly();</p><p>  poly3 = addpoly(poly1, poly2);</p><p>  poly4 = mi

65、sepoly(poly1, poly2);</p><p>  poly5 = misepoly(poly2,poly1);</p><p>  printf("第1個(gè)一元多項(xiàng)式為\n");</p><p>  printpoly(poly1);</p><p>  printf("第2個(gè)一元多項(xiàng)式為\n&quo

66、t;);</p><p>  printpoly(poly2);</p><p>  printf("加法運(yùn)算后的一元多項(xiàng)式為\n");</p><p>  printpoly(poly3);</p><p>  printf("減法(1-2)運(yùn)算后的一元多項(xiàng)式為\n");</p><

67、;p>  printpoly(poly4);</p><p>  printf("減法(2-1)運(yùn)算后的一元多項(xiàng)式為\n");</p><p>  printpoly(poly5);</p><p>  printf("你還要計(jì)算其它的多項(xiàng)式嗎?若是按1,若不是按0退出\n");</p><p>

68、  scanf_s("%d",&choose);</p><p>  }while(choose);</p><p>  system("pause");</p><p><b>  return 0;</b></p><p><b>  }</b>&

溫馨提示

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