版權(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 課程設(shè)計(jì) 長整數(shù)四則運(yùn)算
- 課程設(shè)計(jì) 長整數(shù)四則運(yùn)算
- c語言課程設(shè)計(jì)報(bào)告-長整數(shù)四則運(yùn)算
- c語言課程設(shè)計(jì)報(bào)告-長整數(shù)四則運(yùn)算
- 大整數(shù)的四則運(yùn)算課程設(shè)計(jì)
- c語言畢業(yè)課程設(shè)計(jì)報(bào)告-長整數(shù)四則運(yùn)算
- 數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)--《十進(jìn)制表達(dá)式四則運(yùn)算》
- 數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)-長整數(shù)加減運(yùn)算
- 數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)報(bào)告-長整數(shù)運(yùn)算
- 整數(shù)四則運(yùn)算總結(jié)與練習(xí)
- 數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)—十進(jìn)制四則運(yùn)算計(jì)算器的設(shè)計(jì)與實(shí)現(xiàn)
- eda課程設(shè)計(jì)--2位十進(jìn)制四則運(yùn)算器電路四則運(yùn)算器
- eda課程設(shè)計(jì)之2位十進(jìn)制四則運(yùn)算器電路四則運(yùn)算器
- 數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)--大整數(shù)的運(yùn)算
- 分?jǐn)?shù)四則運(yùn)算習(xí)題
- 1 四則運(yùn)算 2、四則混合運(yùn)算(有括號(hào))
- 匯編語言課程設(shè)計(jì)--四則運(yùn)算計(jì)算器
- 微機(jī)原理與接口技術(shù)課程設(shè)計(jì)--四則運(yùn)算
- 四則運(yùn)算練習(xí)題
- 小學(xué)四則運(yùn)算500道
評(píng)論
0/150
提交評(píng)論