版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
1、高級語言程序設(shè)計(jì)作業(yè)報(bào)告作業(yè)名稱 :大整數(shù)相加減學(xué)院計(jì)算機(jī)科學(xué)與工程學(xué)院專業(yè)計(jì)算機(jī)軟件學(xué)生awell任課教師xxx提交日期一、問題描述實(shí)現(xiàn)兩個(gè)大整數(shù)的相加減二、系統(tǒng)設(shè)計(jì)1、結(jié)構(gòu)說明建立結(jié)構(gòu)類型node :struct nodeint num;/ 每個(gè)位數(shù)用一個(gè)int 類型表示,其中num>=0&&num<=9;node * next;/ 建立單向鏈表,連接相鄰的數(shù)字;;2、函數(shù)說明建立鏈表(將輸入的兩個(gè)數(shù)中較大的保存在fir 表頭的鏈表中) :void creatlist() bool falg=false;/ 標(biāo)記輸入的兩個(gè)整數(shù)是否需要進(jìn)行互換;if(arr1.s
2、ize()-falg1>arr2.size()-falg2)/falg1表示輸入的第一個(gè)整數(shù)前面的符號;falg=true;if(arr2.size()-falg2=arr1.size()-falg1)for(int i=0;i<arr2.size()-falg2;i+)if(opration='+') / 如果是實(shí)現(xiàn)加法,不用管建鏈表時(shí)的整數(shù)互換 falg=true;break;if(arr1i+falg1>arr2i+falg2) falg=true;break;if(i=arr1.size()-falg1-1) falg=false;if(falg)fo
3、r(int i=arr1.size()-1;i>=falg1;i-)node *s;s=new node;s->num=arr1i-'0'/從輸入的整數(shù)尾部逆向建立鏈表if(fir=NULL) fir=s;else efir->next=s;efir=s;efir->next=NULL;/ 尾結(jié)點(diǎn)的 next 一定要賦NULL,不然會出現(xiàn)錯(cuò)誤for(int i=arr2.size()-1;i>=falg2;i-)node *s;s=new node;s->num=arr2i-'0'if(sec=NULL) sec=s;else
4、 esec->next=s;esec=s;esec->next=NULL;elsefor(int i=arr2.size()-1;i>=falg2;i-)node *s;s=new node;s->num=arr2i-'0'if(fir=NULL) fir=s;else efir->next=s;efir=s;efir->next=NULL;for(int i=arr1.size()-1;i>=falg1;i-)node *s;s=new node;s->num=arr1i-'0'if(sec=NULL) sec=
5、s;else esec->next=s;esec=s;esec->next=NULL;if(opration='+') return;if(!falg) f=!f;/f表示整個(gè)運(yùn)算結(jié)果的正負(fù)void add() / 實(shí)現(xiàn)加法bool falg=false;/ 標(biāo)記是否進(jìn)位int num2=sec->num;for(node *head1=fir,*head2=sec;head1;head1=head1->next)/因?yàn)橐?fir 為表頭建立的鏈表所保存的整數(shù)較大,所以,以sec 為表頭建立的鏈表會先或者同時(shí)遍歷到表位int num1=head1->
6、;num;head1->num=(falg+num1+num2)%10;falg=(falg+num1+num2)/10;if(head2->next) / 判斷以 sec 為表頭的鏈表是否達(dá)到表尾head2=head2->next;num2=head2->num;else num2=0;if(f) cout<<"-"if(falg) cout<<1;int i=0;char *ans=new charsizeof(arr1)+sizeof(arr2);for(node *head1=fir;head1;head1=head1
7、->next)ansi=head1->num+'0'i+;for(i-;i>=0;i-)cout<<ansi;void sub() / 實(shí)現(xiàn)兩整數(shù)相減int num2=sec->num;bool falg=false;/ 判是否退位for(node *head1=fir,*head2=sec;head1;head1=head1->next)int num1=head1->num;head1->num=num1-num2-falg;if(num1-falg-num2<0)falg=true;head1->num=h
8、ead1->num+10;else falg=false;if(head2->next)head2=head2->next;num2=head2->num;else num2=0;int i=0;char *ans=new charsizeof(arr1)+sizeof(arr2);for(node *head1=fir;head1;head1=head1->next)ansi=head1->num+'0'i+;i-;falg=false;for(int j=0;j<=i;j+)if(ansj!='0') break;i
9、f(j=i)falg=true;cout<<0;return;if(f) cout<<"-"if(ansi='0') i-;for(;i>=0;i-)cout<<ansi;void dele() / 回收存node *tem;for(;fir;)tem=fir;fir=fir->next;delete tem;for(;sec;)tem=sec;sec=sec->next;delete tem;tem=fir=efir=sec=esec=NULL;開始輸入式子程序流程圖判操作實(shí)現(xiàn)減法實(shí)現(xiàn)加法輸出結(jié)果結(jié)束三
10、、程序測試1、設(shè)計(jì)測試用例0 + 01 + 110+11+1000000 +-1+11+-1-10 + 100100 + -10-1000000 + -000000000010-101-1010-11 - 77 - 15555555 - 55555-10 - -10-11 - -1-1 - -15515-1-8-8-1- - -666666662、程序測試結(jié)果0+0=01+1=210+1=111+10=1100000 +=-1+1=01+-1=0-10 + 100 = 90100 + -10 = 90-1000000 + -0000000000 = -000100000010-10=01-10
11、=-910-1=91-7=-67-1=65555555 - 55555 =0000000-10-10=0-11 - -1 = -10-1 - -15515 = 15514-1-8=7-8-1=-7- - -66666666 = -四、使用說明能正確實(shí)現(xiàn)兩個(gè)大整數(shù)(包括正負(fù))相加減的運(yùn)算五、收獲體會及建議完整代碼:#include <cstdio>#include <string>#include <cstring>#include <iostream>using namespacestd;struct nodeint num;node * nex
12、t;bool f,falg1,falg2;string arr1,arr2;char opration ;node * fir=NULL,* efir=NULL,* sec=NULL,* esec=NULL;void creatlist()bool falg=false;if(arr1.size()-falg1>arr2.size()-falg2)falg=true ;if(arr2.size()-falg2=arr1.size()-falg1)for(int i=0;i<arr2.size()-falg2;i+)if(opration ='+') falg=tru
13、e ;break;if(arr1i+falg1>arr2i+falg2) falg=true ;break;if(i=arr1.size()-falg1-1) falg=false;if(falg)for(int i=arr1.size()-1;i>=falg1;i-)node *s;s=new node;s->num=arr1i-'0'if(fir=NULL) fir =s;else efir->next=s;efir=s;efir->next=NULL;for(int i=arr2.size()-1;i>=falg2;i-)node *s
14、;s=new node;s->num=arr2i-'0'if(sec=NULL) sec=s;else esec->next=s;esec=s;esec->next=NULL;elsefor(int i=arr2.size()-1;i>=falg2;i-)node *s;s=new node;s->num=arr2i-'0'if(fir=NULL) fir =s;else efir->next=s;efir=s;efir->next=NULL;for(int i=arr1.size()-1;i>=falg1;i-)
15、node *s;s=new node;s->num=arr1i-'0'if(sec=NULL) sec=s;else esec->next=s;esec=s;esec->next=NULL;if(opration='+') return ;if(!falg) f=!f;void add()bool falg=false;int num2=sec->num;for(node *head1=fir,*head2=sec;head1;head1=head1->next) int num1=head1->num;head1->n
16、um=(falg+num1+num2)%10;falg=(falg+num1+num2)/10;if(head2->next) head2=head2->next;num2=head2->num;elsenum2=0;if(f) cout<<"-" ;if(falg) cout<<1;int i=0;char *ans=new charsizeof(arr1)+sizeof(arr2); for(node *head1=fir;head1;head1=head1->next)ansi=head1->num+'0&
17、#39;i+;for(i-;i>=0;i-)cout<<ansi;void sub()int num2=sec->num;bool falg=false;for(node *head1=fir,*head2=sec;head1;head1=head1->next)int num1=head1->num;head1->num=num1-num2-falg;if(num1-falg-num2<0)falg=true ;head1->num=head1->num+10;elsefalg=false;if(head2->next)hea
18、d2=head2->next;num2=head2->num;elsenum2=0;int i=0;char *ans=new charsizeof(arr1)+sizeof(arr2); for(node *head1=fir;head1;head1=head1->next)ansi=head1->num+'0'i+;i-;falg=false;for(int j=0;j<=i;j+)if(ansj!='0') break;if(j=i)falg=true ;cout<<0;return ;if(f) cout<
19、<"-" ;if(ansi='0') i-;for(;i>=0;i-)cout<<ansi;void dele()/ 回收存node *tem;for(;fir ;)tem=fir ;fir=fir->next;delete tem;for(;sec;)tem=sec;sec=sec->next;delete tem;tem=fir=efir=sec=esec=NULL;int main()cout<<"輸入算式,形如: "<<endl;cout<<"a + b or a - b"<<endl;while(cin&g
溫馨提示
- 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. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025委托收購合同專業(yè)版范文
- 2025設(shè)立有限責(zé)任公司出資合同
- 2025私人的轉(zhuǎn)讓合同
- 線上醫(yī)療服務(wù)的發(fā)展現(xiàn)狀與未來趨勢分析
- 商場教師節(jié)促銷活動(dòng)策劃方案
- 2025年湘師大新版必修三語文下冊階段測試試卷
- 2025年浙教版七年級生物下冊月考試卷含答案
- 2025年湘教新版選擇性必修3物理上冊階段測試試卷含答案
- 2025年度智能家居鋪面轉(zhuǎn)租合同協(xié)議4篇
- 二零二五年度民辦學(xué)校教師信息技術(shù)應(yīng)用聘用合同4篇
- GB/T 45120-2024道路車輛48 V供電電壓電氣要求及試驗(yàn)
- 春節(jié)文化常識單選題100道及答案
- 華中師大一附中2024-2025學(xué)年度上學(xué)期高三年級第二次考試數(shù)學(xué)試題(含解析)
- 12123交管學(xué)法減分考試題及答案
- 2025年寒假實(shí)踐特色作業(yè)設(shè)計(jì)模板
- 24年追覓在線測評28題及答案
- 高考滿分作文常見結(jié)構(gòu)
- 心肌梗死診療指南
- 食堂項(xiàng)目組織架構(gòu)圖
- 原油脫硫技術(shù)
- GB/T 2518-2019連續(xù)熱鍍鋅和鋅合金鍍層鋼板及鋼帶
評論
0/150
提交評論