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

下載本文檔

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

文檔簡介

1、<p>  算 法 與 數(shù) 據(jù) 結(jié) 構(gòu)</p><p>  課 程 設(shè) 計(jì) 報(bào) 告</p><p>  題 目:長整數(shù)的四則運(yùn)算 </p><p><b>  班 級(jí): </b></p><p><b>  學(xué) 號(hào): </b></p><p>  

2、姓 名: </p><p><b>  指導(dǎo)教師: </b></p><p><b>  成 績:</b></p><p>  2010年 1 月 9 日</p><p><b>  題目</b></p><p>  問題描述:設(shè)計(jì)

3、一個(gè)實(shí)現(xiàn)任意長的整數(shù)進(jìn)行加法運(yùn)算的演示程序。</p><p>  (2)基本要求:利用雙向循環(huán)鏈表實(shí)現(xiàn)長整數(shù)的存儲(chǔ),每個(gè)結(jié)點(diǎn)含一個(gè)整形變量。任何整形變量的范圍是 -(2^15 - 1)(2^15 - 1)。輸入和輸出形式:按中國對(duì)于長整數(shù)的表示習(xí)慣,每四位一組,組間用逗號(hào)隔開。</p><p><b>  (3)測試數(shù)據(jù):</b></p><p&g

4、t;  ① 0;0;應(yīng)輸出“0”。</p><p> ?、?-2345,6789;-7654,3211;應(yīng)輸出“-1,0000,0000”。</p><p> ?、?-9999,9999;1,0000,0000,0000;應(yīng)輸出“9999,0000,0001”。</p><p>  ④ 1,0001,0001;-1,0001,0001;應(yīng)輸出“0”。</p&g

5、t;<p>  ⑤ 1,0001,0001;-1,0001,0000;應(yīng)輸出“1”。</p><p> ?、?-9999,9999,9999;-9999,9999,9999;應(yīng)輸出“1,9999,9999,9998”。</p><p>  ⑦ 1,0000,9999,9999;1;應(yīng)輸出“1,0001,0000,0000”。</p><p><b

6、> ?。?)實(shí)現(xiàn)提示:</b></p><p>  ① 每個(gè)結(jié)點(diǎn)中可以存放的最大整數(shù)為32767,才能保證兩數(shù)相加不會(huì)溢出,但若這樣存放,即相當(dāng)于按32768進(jìn)制存放,在十進(jìn)制與32768進(jìn)制數(shù)之間的轉(zhuǎn)換十分不方便,故可以在每個(gè)結(jié)點(diǎn)中僅存十進(jìn)制的4位,即不超過9999的非負(fù)整數(shù),整個(gè)鏈表表示為萬進(jìn)制。</p><p> ?、?可以利用頭結(jié)點(diǎn)數(shù)據(jù)域的符號(hào)代表長整數(shù)的符號(hào)。用

7、其絕對(duì)值表示元素結(jié)點(diǎn)數(shù)目。相加過程中不要破壞兩個(gè)操作數(shù)鏈表。兩操作數(shù)的頭指針存于指針數(shù)組中是簡化程序結(jié)構(gòu)的一種方法。不能給長整數(shù)位數(shù)規(guī)定上限。</p><p><b>  設(shè)計(jì)思想</b></p><p>  將如何設(shè)計(jì)程序、思想步驟以及一些必要的圖和數(shù)據(jù)附上,如“校園導(dǎo)游咨詢”要有校園平面圖。</p><p>  基本要求:所用到的關(guān)鍵算法要

8、描述清楚,算法和數(shù)據(jù)結(jié)構(gòu)可用偽代碼和圖示描述。 </p><p>  這一部分的目的是讓讀者在短時(shí)間內(nèi)清楚地理解作者解決問題的整體思路,表達(dá)方式必須比源代碼更通俗易懂。如果讀者感覺還不如直接讀源代碼來得明白,這一部分內(nèi)容就失去了意義。</p><p>  三、軟件結(jié)構(gòu)圖及流程圖</p><p>  軟件結(jié)構(gòu)圖即函數(shù)調(diào)用圖</p><p>&l

9、t;b>  如下圖</b></p><p><b>  流程圖即一般流程圖</b></p><p><b>  測試結(jié)果</b></p><p>  要緊扣課程設(shè)計(jì)的題目類型和要求,設(shè)計(jì)和提供相應(yīng)的測試方法和結(jié)果。</p><p>  對(duì)于需要比較不同算法性能優(yōu)劣的題目,應(yīng)設(shè)計(jì)并填

10、寫一張性能比較表格,列出不同算法在同一指標(biāo)下的性能表現(xiàn)。僅僅羅列出一堆數(shù)據(jù)是不夠的,還應(yīng)將數(shù)字轉(zhuǎn)化為圖形、曲線等方式,幫助讀者更直觀地理解測試結(jié)果。</p><p>  對(duì)于需要利用某算法解決某問題的題目,應(yīng)設(shè)計(jì)并填寫一張測試用例表。每個(gè)測試用例一般應(yīng)包括下列內(nèi)容:</p><p>  測試輸入:99,9999,9999,9999,9999;2</p><p>  

11、測試目的:設(shè)計(jì)該輸入的目的在于測試程序在進(jìn)位方面可能存在漏洞;</p><p>  正確輸出:對(duì)該輸入,若程序正確,應(yīng)該輸出的內(nèi)容100,0000,0000,0000,0001;</p><p>  實(shí)際輸出:該數(shù)據(jù)輸入后,實(shí)際測試得到的輸出內(nèi)容;</p><p>  錯(cuò)誤原因:如果實(shí)際輸出與正確輸出不符,需分析產(chǎn)生錯(cuò)誤的可能原因;</p><p

12、><b>  當(dāng)前狀態(tài):通過。</b></p><p>  注意:測試時(shí),不是提供幾組簡單的數(shù)據(jù)讓程序容易通過,從而宣稱該程序是正確的;而應(yīng)該千方百計(jì)設(shè)計(jì)“刁難”的數(shù)據(jù),想辦法讓程序暴露出問題,這樣才能真正幫助程序員完成正確的程序。</p><p><b>  分析與探討</b></p><p>  總體上講,剛開始

13、時(shí)沒有寫上函數(shù)的聲明,結(jié)果幾個(gè)函數(shù)都無法識(shí)別,提示當(dāng)前函數(shù)定義不合法。最后改正后,就減少了很多錯(cuò)誤。</p><p>  總體思路框架并不是很難,就是程序中要考慮的細(xì)節(jié)問題較多,很容易沒考慮到??傮w框架就是main()函數(shù)的內(nèi)容:建立兩個(gè)雙向鏈表存儲(chǔ)長整數(shù);再進(jìn)行加法運(yùn)算;輸出運(yùn)算結(jié)果;最后釋放所有的結(jié)點(diǎn)。</p><p>  對(duì)于以上的幾個(gè)步驟,幾乎都有細(xì)節(jié)得考慮:</p>

14、<p>  對(duì)于creat(),要考慮的問題較多,首先得進(jìn)行輸入錯(cuò)誤判斷:只要輸入不是規(guī)定的格式都提示錯(cuò)誤信息。對(duì)于這種問題,,剛開始不會(huì)一下子都想得到的,只有慢慢琢磨才能考慮得差不多。能想得到的就是輸入不是數(shù)字或,的錯(cuò)誤情況,還有輸入的每個(gè),,間的部分應(yīng)為四個(gè)數(shù)字,最后就是第一個(gè),前的部分。其中的第二種情況較為不好辦。具體思路請(qǐng)見程序。</p><p>  然后就是如何建立鏈表:要考慮符號(hào),這比較好

15、辦。關(guān)鍵是以,為界,將字符串截成數(shù)字串,將其轉(zhuǎn)化為整數(shù)。</p><p>  對(duì)于Add函數(shù)是最關(guān)鍵的,也是最復(fù)雜的部分。由于能力有限,所用的思路比較煩瑣,篇幅較長。關(guān)鍵是要分好各種情況,把大的問題化為一個(gè)個(gè)小的問題,再解決。</p><p>  分好同號(hào)與異號(hào)兩種情況,相對(duì)于異號(hào),同號(hào)較為簡單。思路就是從尾結(jié)點(diǎn)開始,一直往前加。要考慮的就是進(jìn)位。剛開始沒考慮好前面多出的結(jié)點(diǎn)的進(jìn)位,結(jié)果輸

16、入9999,9999,9999和2時(shí)就發(fā)現(xiàn)錯(cuò)誤了。</p><p>  而對(duì)于異號(hào)情況。又可依據(jù)長度分為三種情況:n1<n2,n1=n2,n1>n2 。兩長度不等時(shí),直接由較長的減去另一個(gè),特別注意的是借位;對(duì)于相等情況,首先看哪個(gè)的絕對(duì)值大,再相減。因此可用一循環(huán)從第一個(gè)結(jié)點(diǎn)開始,一直找到不等的結(jié)點(diǎn),再按以上的方法做減法。若都相等則兩數(shù)相加為0</p><p>  而prin

17、t()函數(shù),主要是補(bǔ)0的問題。但第一個(gè)結(jié)點(diǎn)并不需要。因此將第一個(gè)結(jié)點(diǎn)分開獨(dú)立輸出。</p><p>  最后的myfree() ,剛開始由于沒注意,將函數(shù)名取為 free()就出現(xiàn)錯(cuò)誤,最后檢查才發(fā)現(xiàn)函數(shù)里的free遞歸調(diào)用了函數(shù)。</p><p>  5該程序遇到的問題較多,由于只追求功能,對(duì)于效率上,就沒什么優(yōu)勢。因此把其支解掉后,分開考慮子函數(shù)。對(duì)于具體碰到的問題再設(shè)法解決。<

18、;/p><p>  6調(diào)試中,每編寫好一個(gè)小的功能,測試其是否正確。比如:出錯(cuò)情況,可 輸入各種錯(cuò)誤,看是否錯(cuò)誤;進(jìn)位或借位,也可輸入相應(yīng)的數(shù)據(jù)檢驗(yàn)。直到對(duì)為止。</p><p><b>  附錄:源代碼</b></p><p>  源代碼列在附錄中,要求程序風(fēng)格清晰易理解,有充分的注釋。有意義的注釋行少于代碼的30%將不能得分。</p>

19、;<p>  #include<iostream></p><p>  #include<string></p><p>  #include<math.h></p><p>  using namespace std;</p><p>  struct LinkNode</p>

20、<p><b>  {</b></p><p>  int data; //記錄每個(gè)節(jié)點(diǎn)的整數(shù)(小于10000)</p><p>  LinkNode *next; //記錄下一個(gè)節(jié)點(diǎn)的地址</p><p>  LinkNode *pre; //記錄前一個(gè)節(jié)點(diǎn)的地址

21、</p><p><b>  };</b></p><p>  class LinkList</p><p><b>  {</b></p><p><b>  private:</b></p><p>  LinkNode *head0,*head1;

22、 //head0,head1分別記錄兩個(gè)整數(shù)鏈表的頭指針</p><p>  LinkNode *currptr;</p><p>  LinkNode *result; //result記錄結(jié)果鏈表的頭指針</p><p><b>  public:</b></p><p>  LinkList

23、(); //構(gòu)造函數(shù),初始化鏈表</p><p>  ~LinkList(); //析構(gòu)函數(shù),釋放空間</p><p>  void Creat(string a); //引入字符串,創(chuàng)立兩個(gè)鏈表,分別表示兩個(gè)整數(shù)</p><p>  void Add(); //實(shí)現(xiàn)

24、兩個(gè)整數(shù)相加</p><p>  void Display(); //顯示結(jié)果</p><p>  void addtwo(); </p><p>  //節(jié)點(diǎn)多的作為被加數(shù),少的作為加數(shù),實(shí)現(xiàn)整數(shù)絕對(duì)值大的加小的</p><p>  }; </p>

25、<p>  int sum(int n);</p><p>  LinkList::LinkList() //構(gòu)造函數(shù)初始化鏈表</p><p><b>  {</b></p><p>  head0=new LinkNode; </p><p>  //申請(qǐng)一個(gè)空間

26、記錄整數(shù)的符號(hào)和節(jié)點(diǎn)數(shù)</p><p>  head1=new LinkNode;</p><p>  head0->next=head0;</p><p>  head0->pre=head0; //初始化鏈表,建立雙向循環(huán)鏈表</p><p>  head1->next=head1;</p&

27、gt;<p>  head1->pre=head1;</p><p>  result=new LinkNode;</p><p>  result->next=result;</p><p>  result->pre=result;</p><p>  currptr=NULL;</p>&l

28、t;p><b>  }</b></p><p>  LinkList::~LinkList() //析構(gòu)函數(shù),釋放空間</p><p><b>  {</b></p><p>  LinkNode *p1=head0,*p2=head1,*p3=result; </p&

29、gt;<p>  //三個(gè)指針分別指向三條鏈表的頭指針</p><p>  while(p1!=p1->pre) </p><p><b>  {</b></p><p>  p1->pre->next=p1->next;</p><p>

30、  p1->next->pre=p1->pre;</p><p>  currptr=p1;</p><p>  p1=p1->next;</p><p>  delete currptr;</p><p><b>  }</b></p><p>  while(p2!=p

31、2->pre) //逐個(gè)刪除節(jié)點(diǎn),釋放空間</p><p><b>  {</b></p><p>  p2->pre->next=p2->next;</p><p>  p2->next->pre=p2->pre;</p><p>  

32、currptr=p2;</p><p>  p2=p2->next;</p><p>  delete currptr;</p><p><b>  }</b></p><p>  while(p3!=p3->pre)</p><p><b>  {</b><

33、;/p><p>  p3->pre->next=p3->next;</p><p>  p3->next->pre=p3->pre;</p><p>  currptr=p3;</p><p>  p3=p3->next;</p><p>  delete currptr;<

34、/p><p><b>  }</b></p><p>  // delete p1;</p><p>  // delete p2;</p><p>  // delete p3;</p><p><b>  }</b></p><p>  void Li

35、nkList::Creat(string a) //引入字符串,創(chuàng)立兩個(gè)鏈表,分別表示兩個(gè)整數(shù)</p><p><b>  {</b></p><p>  int i=0,j=0,m=0,n=0,k=0,l=0,s=0,w=0; </p><p>  //i記錄字符串,j記錄加數(shù)節(jié)點(diǎn)數(shù),s記錄被加數(shù)節(jié)點(diǎn)數(shù)

36、</p><p>  //w標(biāo)記字符串中的‘-’號(hào)</p><p>  //k記錄字符串中的字符轉(zhuǎn)換為整數(shù)的值,l使每個(gè)節(jié)點(diǎn)記錄4位</p><p>  while(a[m]!=';') m++; //m記錄字符串中被加數(shù)的字符數(shù)</p><p>  n=m;

37、 </p><p>  while(a[n]!='\0') n++; //n記錄字符串的總字符數(shù)</p><p>  if(a[0]=='-')</p><p><b>  {</b></p><p>  head0->data=(-1);

38、 //記錄整數(shù)符號(hào)</p><p><b>  w=1;</b></p><p><b>  }</b></p><p>  else {head0->data=1;}</p><p>  for(i=m-1;i>=w;i--) </p><

39、p><b>  {</b></p><p>  if(a[i]!=',') //把字符轉(zhuǎn)化為整數(shù) {</p><p>  k+=(a[i]-'0')*sum(l);</p><p><b>  l++;</b></p><p&g

40、t;<b>  }</b></p><p>  if(a[i]==','||i==w)</p><p><b>  {</b></p><p>  currptr=new LinkNode; //把整數(shù)存到雙向循環(huán)鏈表中</p><p>  currptr->

41、;data=k;</p><p>  currptr->next=head0;</p><p>  currptr->pre=head0->pre;</p><p>  head0->pre->next=currptr;</p><p>  head0->pre=currptr;</p>&l

42、t;p>  head0=currptr;</p><p>  s++; //節(jié)點(diǎn)數(shù)加1</p><p>  k=0; //重新初始化k和l</p><p>  l=0; </p>&

43、lt;p><b>  }</b></p><p><b>  }</b></p><p>  head0->pre->data*=s; //´存儲(chǔ)整數(shù)符號(hào)和節(jié)點(diǎn)數(shù)</p><p>  //與建第一個(gè)整數(shù)鏈表一樣,建立第二個(gè)整數(shù)鏈表head1</p>

44、;<p><b>  k=0;l=0;</b></p><p>  if(a[m+1]=='-')</p><p><b>  {</b></p><p>  head1->data=(-1);</p><p><b>  m++;</b>&

45、lt;/p><p><b>  }</b></p><p><b>  else</b></p><p>  head1->data=1;</p><p>  for(i=n-1;i>m;i--)</p><p><b>  {</b></

46、p><p>  if(a[i]!=',')</p><p><b>  {</b></p><p>  k+=(a[i]-'0')*sum(l);</p><p><b>  l++;</b></p><p><b>  }</b&

47、gt;</p><p>  if(a[i]==','||i==m+1)</p><p><b>  {</b></p><p>  currptr=new LinkNode;</p><p>  currptr->data=k;</p><p>  currptr->n

48、ext=head1;</p><p>  currptr->pre=head1->pre;</p><p>  head1->pre->next=currptr;</p><p>  head1->pre=currptr;</p><p>  head1=currptr;</p><p>

49、<b>  j++;</b></p><p><b>  k=0;</b></p><p><b>  l=0;</b></p><p><b>  }</b></p><p><b>  }</b></p><p

50、>  head1->pre->data*=j;</p><p><b>  }</b></p><p>  void LinkList::Add() //實(shí)現(xiàn)兩個(gè)整數(shù)相加</p><p><b>  {</b></p><p>

51、;  LinkNode *temp;</p><p>  if(abs(head0->pre->data)>abs(head1->pre->data)) </p><p>  //兩個(gè)整數(shù)中,絕對(duì)值大的為被加</p><p><b>  addtwo();</b></p><p>

52、;  else if(abs(head0->pre->data)<abs(head1->pre->data))</p><p><b>  {</b></p><p>  temp=head0;</p><p>  head0=head1;</p><p>  head1=temp;<

53、/p><p><b>  addtwo();</b></p><p><b>  }</b></p><p>  else if(abs(head0->pre->data)==abs(head1->pre->data))</p><p><b>  {</b>

54、;</p><p>  int k1,k2;</p><p>  LinkNode *p=head0,*q=head1; </p><p>  //如果節(jié)點(diǎn)數(shù)相同,則判斷節(jié)點(diǎn)中數(shù)值大小</p><p>  while(p->data==q->data&&p!=head0->pre-

55、>pre&&q!=head1->pre->pre)</p><p><b>  {</b></p><p>  p=p->next;</p><p>  q=q->next;</p><p><b>  }</b></p><p>

56、;  k1=p->data;</p><p>  k2=q->data;</p><p><b>  if(k1>k2)</b></p><p><b>  addtwo();</b></p><p><b>  else</b></p><

57、;p><b>  {</b></p><p>  temp=head0;</p><p>  head0=head1;</p><p>  head1=temp;</p><p><b>  addtwo();</b></p><p><b>  }</

58、b></p><p><b>  }</b></p><p><b>  }</b></p><p>  void LinkList::addtwo() </p><p>  //節(jié)點(diǎn)多的作為被加數(shù),少的作為加數(shù),實(shí)現(xiàn)整數(shù)絕對(duì)值大的加小的</p><p> 

59、 //默認(rèn)head0存的整數(shù)絕對(duì)值比head1大</p><p><b>  {</b></p><p>  int s=0,m1=head0->data,m2=head1->data;</p><p>  m1=(head0->pre->data/abs(head0->pre->data));

60、//head0的符號(hào)</p><p>  m2=(head1->pre->data/abs(head1->pre->data)); //head1的符號(hào)</p><p>  LinkNode *p=head0->pre->pre,*q=head1->pre->pre;</p><p>  result-&g

61、t;data=head0->pre->data; //存結(jié)果的節(jié)點(diǎn)數(shù)和符號(hào)</p><p>  while(q!=head1->pre) </p><p>  //head0存的整數(shù)絕對(duì)值比head1大,即head0的節(jié)點(diǎn)數(shù)大于或等于head1</p><p><b>  {</b></p&

62、gt;<p>  currptr=new LinkNode;</p><p>  currptr->data=(p->data)*m1+(q->data)*m2+s; //兩整數(shù)相加</p><p>  if((m1*m2)>0) //如果符號(hào)相同</p><p><

63、b>  {</b></p><p>  if(abs(currptr->data)-10000>=0) //相加后超過10000,則進(jìn)位</p><p><b>  {</b></p><p>  s=currptr->data/10000;</p><p>  currptr

64、->data=abs(currptr->data)%10000;</p><p><b>  }</b></p><p>  else //abs(currptr->data)-10000<0不進(jìn)位</p><p><b>  {</b></p><p

65、><b>  s=0;</b></p><p>  currptr->data=abs(currptr->data);</p><p><b>  }</b></p><p><b>  }</b></p><p>  else if(m1>0&

66、&m2<0) </p><p>  //符號(hào)不同,則在此相當(dāng)于實(shí)現(xiàn)兩個(gè)正整數(shù)相減</p><p><b>  {</b></p><p><b>  s=0;</b></p><p>  if(currptr->data<0)

67、 //小于0,向前一位借1</p><p><b>  {</b></p><p>  currptr->data+=10000;</p><p><b>  s=-1;</b></p><p><b>  }</b></p><p><b&

68、gt;  }</b></p><p>  else if(m1<0&&m2>0) </p><p>  //符號(hào)不同,在此則相當(dāng)于實(shí)現(xiàn)負(fù)整數(shù)加上正整數(shù)</p><p><b>  {</b></p><p><b>  s=0;</b><

69、;/p><p>  if(currptr->data>0) //大于0</p><p><b>  {</b></p><p>  currptr->data=10000-currptr->data;</p><p><b>  s=1;</b></p>

70、;<p><b>  }</b></p><p>  else currptr->data=abs(currptr->data);</p><p><b>  }</b></p><p>  currptr->next=result; //存入鏈表</p>

71、<p>  currptr->pre=result->pre;</p><p>  result->pre->next=currptr;</p><p>  result->pre=currptr;</p><p>  result=currptr;</p><p><b>  p=p-&g

72、t;pre;</b></p><p><b>  q=q->pre;</b></p><p>  } </p><p>  //當(dāng)head0節(jié)點(diǎn)數(shù)比head1長時(shí),繼續(xù)建鏈</p><p>  while(p!=head0->pre) </p><p&g

73、t;<b>  {</b></p><p>  currptr=new LinkNode;</p><p>  currptr->data=p->data+s;</p><p>  s=currptr->data/10000;</p><p>  if((m1*m2)>0)</p>

74、<p><b>  {</b></p><p>  if(abs(currptr->data)-10000>=0)</p><p><b>  {</b></p><p>  s=currptr->data/10000;</p><p>  currptr->dat

75、a=abs(currptr->data)%10000;</p><p><b>  }</b></p><p>  else {s=0;currptr->data=abs(currptr->data);}</p><p><b>  }</b></p><p>  else if(

76、m1>0&&m2<0)</p><p><b>  {</b></p><p><b>  s=0;</b></p><p>  if(currptr->data<0)</p><p><b>  {</b></p><

77、;p>  currptr->data+=10000;</p><p><b>  s=-1;</b></p><p><b>  }</b></p><p><b>  }</b></p><p>  else if(m1<0&&m2>0

78、)</p><p><b>  {</b></p><p><b>  s=0;</b></p><p>  if(currptr->data>0)</p><p><b>  {</b></p><p>  currptr->data

79、=10000-currptr->data;</p><p><b>  s=1;</b></p><p><b>  }</b></p><p>  else currptr->data=abs(currptr->data);</p><p><b>  }</b&

80、gt;</p><p>  currptr->data=abs(currptr->data)%10000;</p><p>  currptr->next=result;</p><p>  currptr->pre=result->pre;</p><p>  result->pre->next=c

81、urrptr;</p><p>  result->pre=currptr;</p><p>  result=currptr;</p><p><b>  p=p->pre;</b></p><p><b>  }</b></p><p>  if(s!=0)

82、 //處理相加后,進(jìn)位問題{</p><p>  currptr=new LinkNode;</p><p>  currptr->data=abs(s);</p><p>  currptr->next=result;</p><p>  currptr->pre=result->

83、pre;</p><p>  result->pre->next=currptr;</p><p>  result->pre=currptr;</p><p>  result=currptr;</p><p>  result->pre->data=m1*(abs(result->pre->dat

84、a)+1);</p><p><b>  }</b></p><p><b>  }</b></p><p>  void LinkList::Display() //顯示結(jié)果</p><p><b>  {</b></p>&

85、lt;p>  LinkNode *p=result;</p><p>  int FuHao=result->pre->data/abs(result->pre->data);//結(jié)果的符號(hào)</p><p>  while(p->data==0&&p!=result->pre->pre) </p&

86、gt;<p>  //當(dāng)運(yùn)算后,前幾個(gè)節(jié)點(diǎn)的數(shù)據(jù)為0時(shí),不輸入</p><p><b>  {</b></p><p>  p=p->next;</p><p>  result->pre->data=(abs(result->pre->data)-1)*FuHao;</p><p

87、>  //結(jié)果記錄非0節(jié)點(diǎn)數(shù)</p><p><b>  }</b></p><p>  cout<<FuHao*p->data; //首先顯示符號(hào)和第一個(gè)節(jié)點(diǎn)中的數(shù)</p><p>  if(abs(result->pre->data)!=1) p=p->next; //判斷非0節(jié)點(diǎn)數(shù)

88、是否為1</p><p>  while(p!=result->pre->pre) //繼續(xù)輸出</p><p><b>  {</b></p><p>  cout<<","; //每四位一組,并用‘,’隔開</p><p>  cout.w

89、idth(4);</p><p>  cout.fill('0');</p><p>  cout<<p->data;</p><p>  p=p->next;</p><p><b>  }</b></p><p>  if(p==result->p

90、re->pre&&abs(result->pre->data)!=1) </p><p>  //顯示最后一個(gè)節(jié)點(diǎn)數(shù)據(jù)</p><p><b>  {</b></p><p>  cout<<",";</p><p>  cout.width(4);&l

91、t;/p><p>  cout.fill('0');</p><p>  cout<<p->data;</p><p><b>  }</b></p><p>  cout<<endl;</p><p><b>  }</b><

92、/p><p>  int sum(int n) //計(jì)算10的乘方</p><p><b>  {</b></p><p>  int i,s=1;</p><p>  for(i=1;i<=n;i++)</p><p><b>  {</b&g

93、t;</p><p><b>  s=s*10;</b></p><p><b>  }</b></p><p><b>  return s;</b></p><p><b>  }</b></p><p>  int main(

94、) //主函數(shù)</p><p><b>  {</b></p><p>  cout<<"|_______________________________________________|\n";</p><p>  cout<<"|

95、 |\n";</p><p>  cout<<"| 歡迎使用任意長整數(shù)加法系統(tǒng) |\n";</p><p>  cout<<"|

96、 |\n";</p><p>  cout<<"|_______________________________________________|\n";</p><p>  cout<<"|*在此系統(tǒng)中,可以輸入任意長整數(shù)。 |\n";</p><p>  strin

97、g ch;</p><p>  char Yes_No;</p><p><b>  do{</b></p><p>  cout<<"|*輸入形式:(-)**,****,****;(-)*,****,****,****|\n";</p><p>  cout<<"|

98、*即符號(hào)+數(shù),每四位加一個(gè)‘,’,兩個(gè)數(shù)之間用‘;’隔開 |\n";</p><p>  cout<<"|#請(qǐng)輸入你要計(jì)算的兩個(gè)數(shù): |\n";</p><p>  cin>>ch; //輸入任意長字符串</p>

99、<p>  LinkList List; //定義鏈表對(duì)象</p><p>  List.Creat(ch); //把字符串轉(zhuǎn)化為整數(shù),并存到鏈表中</p><p>  List.Add(); //實(shí)現(xiàn)兩個(gè)整數(shù)相加</p>&

100、lt;p>  List.Display(); //輸出結(jié)果</p><p>  cout<<"#是否繼續(xù)計(jì)算(Y/N):"; //詢問是否繼續(xù)計(jì)算</p><p>  cin>>Yes_No;</p><p>  }while(Y

101、es_No=='y'||Yes_No=='Y'); //Yes_No不等于‘Y’或‘y’時(shí),程序退出</p><p>  cout<<"|-----------------------------------------------|\n";</p><p>  cout<<"|

102、 |\n";</p><p>  cout<<"| 感謝使用本系統(tǒng) |\n";</p><p>  cout<<"|

103、 |\n";</p><p>  cout<<"|-----------------------------------------------|\n";</p><p><b>  return 0;</b></p><p><b>  }</b></p>

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 眾賞文庫僅提供信息存儲(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)論