


下載本文檔
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認(rèn)領(lǐng)
文檔簡介
1、需求分析一.變量。輸入的形式以回車結(jié)束,可以直接輸入正數(shù)或負數(shù),程序1 本程序;、現(xiàn)計算任意長的整數(shù)的四那么運算.以用V : %、.;戶和計算機對話的方式,先 后輸入數(shù)字的最多位數(shù),然后程序就計算并顯示出這兩個數(shù)的運算。2.;利用雙向循環(huán)鏈表現(xiàn)實長整數(shù)的存儲每個結(jié)點含一個整形會過濾掉無效的字符。按中國對于長整數(shù)的表示習(xí)慣,每四位一“* 產(chǎn) L k °°組,除數(shù)字和位于首位置的負號外,其它一切字符都將作為分隔 . £. .3 測試數(shù)據(jù)10; 0;輸出絃丄000,000"輸出 “0 ;(2)-2345,6789;76543211; (3)-9999,9999
2、; 1,0000,0000,0000;輸岀符,連續(xù)多個分隔符當(dāng)一個處理。但不使用分隔符也不彤響結(jié)果.“9999,0000,0001 ; (4)1,0001,0001;,0001,0001;輸出 “0卩;(5)1,0001,0001; -1,0001,0001;輸出 銘1 ;(6).999999999999;9999,9999,9999;輸出 作1,9999,9999.9998 ; (7)1,0000,9999,9999; 1; 輸出,00010000,0000.二、概要設(shè)計為實現(xiàn)上述程序功能,應(yīng)以雙向循環(huán)鏈表表示長整數(shù)。為此,需要定義一個抽象數(shù)據(jù)類型。1.抽象數(shù)據(jù)類型定義為: ; 16flAD
3、T OrderedList 對彖:D=:ai|aieinti=l,2,.n, nO墓本操作::init(&a,digif4)操作結(jié)果:構(gòu)造一個位數(shù)是digit4*4長整數(shù)。 ". q pass(&a,&b,&c)初始條件i a,b3c都已存在操作結(jié)果:c等于a和b的和uep(&a)4F初始條件:a己存在e操作結(jié)果:a變?yōu)檩斎雲(yún)?shù)的相反數(shù)。printlong (&a)初始條件帚a己存在。操作結(jié)果:按四位一組,分隔符為?的格式,在屏幕上輸岀滾stcm(&S,&a)初始條件£ a已存在©操作結(jié)果:把字符串形
4、式的長數(shù)字賦給g ADT OrderedList2本程序包含兩個模塊:1)主模塊:Vbid main() 選擇操作:1:蠶助62:加法壬3:減法616/2 4:乘法。5:除法©6:退出。打印結(jié)果%去詳細設(shè)計1.元素類型,結(jié)點類型,指針類型#define NULL 0#include<stdio .h>#include<stdlib .h>#iiiclude<conio.h> . . typedef stinct longnode 每個節(jié)點的結(jié)構(gòu)対int num; /導(dǎo)數(shù)字資/*指向低一位節(jié)點勺s-r1 struct longnode *lowl;s
5、tinctlongnode *highl- /*指向高一位書點慕/% . longnode;typedef stinct xlong 嚴(yán)每個長整數(shù)的結(jié)構(gòu)*/longnode *High;嚴(yán)每個長整數(shù)的最高節(jié)點引 嚴(yán)每個長整數(shù)的最低節(jié)點*/ " longnode 審 Low;int digit4;/*每個長整數(shù)的總位數(shù)(不包括高位的0)/4 /J*xlong;int iiiit(xlong digit4)int I; /*.init:/longnode *j;(*a)=(xlong)malloc(sizeof(struct xlong);/*為 a 的頭結(jié)構(gòu)申請空間,并賦初始值*/ (
6、*a)>High=NULL;(*a)>Low=NULL;(*a)->Higli=NULL; (*a)-Low=NULL; * * . (a)->digit4=0:for(i=0; i<digit4;i-H-) /* 申請 digit4 個節(jié)點,初始化 */j=(longiiode)malloc(sizeof(longnode);j->num=O;j->highl=NULL; j ->lo w 1a>>High; 夕 夕 、 了 if(*a)->High) (*a)->High->higlil=j & . el
7、se(a)->Lowj ;(*a)->High=j ;(*a)->digit4+;int pass(xlong a,xlong b?xlong c) <1 f廠"int cf=O;/*兩個數(shù)字的相加*/.怙wliile(a l)cl->iium=a 1 ->num+b 1 ->num+cf;if(c l->num>9999?I16/*如果產(chǎn)生進位借位勺 14cE;cl>imm-=10000;elsecf=0;retiim cf; /*最高位的進位(借位)*/%int passa(xlong a?xlong b.xlong c
8、)兩個數(shù)字的相減int c=0;longuode *al-a->Low,*b l=b->Low,*cl =c->Low; . wliile(a );c 1 ->niun=a Eum-b 1 ->niun-cf;借位 if(cl->num>9999)cf=l;/* 如果產(chǎn)生進位0 */cl>num-=10000;elsecf=0;:al=al ->liigli l;b l=bl ->high 1; c lcl->high 1 ;/嚴(yán)/最高位的進位嚴(yán)retuni cf;借位?iiit passb(xlong a,xlong b,xl
9、ong c) J a a o*/兩個數(shù)字的相乘int cM;/*longnodewliile(a l)cl ->iium=a 1 ->niun*b 1 ->mun*cf;if(c 1 ->niun>9999) cf=l;怪 如果產(chǎn)生進位(借位)W cl->inuii=10000-O :elsecf=0;al=al->liighl;bl=bl->highl;cl=cl->highl;J:return cf; :/最高位的進位借位尸/int passc(xlong a?xlong b,xlong c)° H“*/ int cf=0;/
10、*兩個數(shù)字的相除longiiode * a 1 =d>Low *b 1 =b->Low,*c 1 =c->Low: while(al) c">num=a">niim/b_>niuii/cfif(c 1 ->inun>9999) c* 如果產(chǎn)空進仆(佇(5J:劑 else cf=0j.al-al->liigli 1 ;b 1 =b 1 ->highl;cl-cl->high 1; J: : retiun cf; /*最高位的進位(借位)*/$/的相反數(shù)求/* nep(xlong a) a/欄因為求相反數(shù)是取反加
11、一,所以這里 int cf= 1; c匸 1 ;longiiode 杓 l=a>Low;1616while(al)al ->inun=9999-(a b>mim)+cf;if(a lr>num>9999) al->nu:=10000;else cf=0; a 1 =a l->highl;return;%piiiitlong(xlong a) a */ longnode *i=a->Higli:/* fT印長整數(shù) if(i->num>=5000) F L */表示負數(shù),即用補碼表示printf(-); /*最高位(bit)=l */ &
12、#176; f Z*求反打印其絕對值nep(a); J while(i&&i>num=O) i=i->lowl; /* 跳過最位的 0 */iffi) printf(%d,i->num)i /i=i->lowl;);“ ,if(i) printf( J L else printf( “0*/ 扌丁 0"、); /* a=0while(i) printf(d?i->num); if(i->lowl) printfQ;i=i->lowU 號16/7int ston(char in,xlong out)/*把字符串轉(zhuǎn)化為數(shù)字賦給a*
13、/int bitj jishu=l,num0=0: longnode *j=out->Low;i=strlen(in)-l ;while(i>=0 && j) /*循環(huán)每一個字節(jié)*/bit=ini- P尸 把字符形式的值賦給整數(shù)形式的bit */iflg絆=0 && bit <=9):mun0+=j ishu*bit; /加進 numO */r 丁 r. .jishu*=10; /* 基數(shù)自乘 10 */ if(jishu>l&&(jishu>=10000|bit<0|bit>9)jf/* 數(shù)字以外的字符
14、 */ j->num=numO;j=j->highl; /* 存入一個節(jié)點 */ num0=0;jishu=T;卜;if(numO) j->num=numO;jj->highl;嚴(yán)把最后一個沒存入節(jié)點的數(shù)存入節(jié)點*/fty;j=j->liiglil) j->nxun=O; /* 最位缺乏補 0 */if(out->Higli->iium>=5000)return 1; /* 如果最高位是1,返回1表示出*/if(inO-') nep(out); /* 如果最后一個字符是貝!I取反 */retiun 0;16/sint add() c
15、har *a 11;/* 加 */int digit4,cf=0;xlong a?b,c;do priiitf(How much digits do you need?);/* 輸入最多位數(shù)*/: xscaiif(%d,&digit4); Jwliile(digit4<=0);a l=(char*)malloc(digit4+l);b 1 =(char*)malloc(digit4+l);digit4=digit4/4+l;init(&a,digit4);init(&bdigit4):init(&c,digit4); /* 初始化 a,b,c */: .
16、g 丄 J . .Ado cf=O; printf(Enter 2 number:n); scanf(%s,a 1 );pi'intf(+n);亠.« scanf(%s,bl);cfl=ston(al ,a); cf=ston(bl,b);引,如果轉(zhuǎn)換出錯側(cè)重輸輸入被加數(shù)和加數(shù)wliile(cf);/*':攜“ */ pass(a,b,c);/*執(zhí)行相加運算*/ printlong(a);printf(+); /* ;打印結(jié)果:printlong(b);printf(=);printlong (c);bioskey(0);16/9int subtract。/* 減ch
17、ar 細 1 衣bl;iiit digit4,c0;xlong a,b,c;do piintf(How much digits do you need?);/* 輸入最多位*/scanf(%d,&digit4); while(digit4<=0);a 1 =(char*)malloc(digit4+1); y / bl =(char*)malloc(digit4+l);digit4=digit4/4+l;init(&a,digit4);init(&b,digit4);init(&c,digit4); /* 初始化 a,b,c */wdo cf=0;piin
18、tf(Eiiter2mimber:n);scanf(%s,al);piintf(;scanf(%s,bl); .0 cfl=stoii(al,a);cf=stou(bl.b);while(cf);: /*輸入被減數(shù)和減數(shù)如果轉(zhuǎn)換出錯側(cè)重輸*/*執(zhí)行相減運算*J passa(abc);16/ioprintlong(a);priiitf(-);/* 打印結(jié)果 */ piiiitlong(b);piintf();ejpiintlong(c);printffprintf( );bioskey(0);int multiplyO /* 乘 */J chai al?*bl;int digit4,cf=0;x
19、long a,b,c;do printf(How much digits do you need?); /* 輸入最多位數(shù) */scanf(%d,&digit4); wliile(digit4<=0);a 1 =(char*)malloc(digit4+l);b 1 =(char * )niallo c(digit4+1 j;digit4=digit4/4+l;init (&a,digit4);init(&b,digit4);init(&c,digit4); /* 初始化 a,b,c */ do cf=O;piiiitf(Enter2number:n);A
20、 J scanf(%s,a l);printf(*n); 夕scanf(%s,bl);cf=ston(al,a);fit e <cf=ston(blnb);while(cf)/*輸入被乘數(shù)和乘數(shù)如果轉(zhuǎn)換出錯側(cè)重輸*/仔:抒* * * 怎: 叮 rpassb(a?b.c);/*執(zhí)行相乘運算*/憑-: . o :: printloiig(a);priiitf(滋和);/* 扛印結(jié)果 */piiiitlong(b);pidntf(=);4 piiiitlong(c);printf( printffx );bioskey(0); int divisionQ /* I;余勺char *al,*bl
21、;int digit4?cf=0;輸入最多位數(shù)嚴(yán)° xlong abc;do priiitf(How much digits do you need?); */ scanf(%d,&digit4);while(digit4<=0); a l=(chai*)malloc(digit4+l);b l=(char*)malloc(digit4+l);b,« digit4=digit4/4+l ;init(&a,digit4);init(&b,digit4);init(&c,digit4); /* a?b,c */ 初始化 cf=O;priii
22、tf(Enter 2 numb悠如膽40$scanf(%s,a l);piintf(An);16/12scanf(%s,bl)-% cf=ston(al,a);:.cfl=ston(bl,b);while(cf); /*輸入被除數(shù)和除數(shù),如果轉(zhuǎn)換岀錯,那么重輸*/* passc(a,b?c);執(zhí)行相除運算/ priiitlong(a);printf(/); /* 打印結(jié)果 */ piiiitlong(b) ;printf(=);- piiiitlong(c);piintf(a A * V););bioskey(0);2 主函數(shù)代碼void main() /*maiii*/ 'int c
23、;clrscrOltextcolor(BLUE);one: printf(:HELPn);piiiitf(: - ADDii);e % 16/13DiVISIONXn);piiiitf(:-EXITm);fbr(;)c=getchO;switch(atoi(&c) case 1: cliscrQ;goto one; break;case 2: add(); break;case 3:subtractQ ; break;case 4:multiplyO;break;; case 5*divisionO;break;case 6:textcoloiBLUE);printfOpiintf(Thanks cw's work!n);break
溫馨提示
- 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)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2024-2025學(xué)年福建省泉州市安溪一中惠安一中養(yǎng)正中學(xué)實驗中學(xué)高一上學(xué)期11月期中聯(lián)考化學(xué)試卷
- 2024-2030年中國機械制造行業(yè)市場深度研究及投資戰(zhàn)略規(guī)劃報告
- 2025年度二手小產(chǎn)權(quán)別墅買賣合同樣本
- 中國購物中心建設(shè)行業(yè)現(xiàn)狀調(diào)研及發(fā)展趨勢分析報告(2023-2029年)
- 專題15 函數(shù)及其基本性質(zhì)(單調(diào)性、奇偶性、周期性、對稱性)小題綜合(學(xué)生卷)2025年高考復(fù)習(xí)之近十年真題數(shù)學(xué)分項匯編
- 2023-2028年中國煙草包裝行業(yè)發(fā)展前景預(yù)測及投資規(guī)劃建議報告
- 煤礦管道施工合同范本
- Unit 4 Bobby's House Lesson4(教學(xué)設(shè)計)-2024-2025學(xué)年北師大版(三起)英語四年級上冊
- 2025年新型電視監(jiān)控系統(tǒng)項目可行性研究報告
- 《鋼鐵是怎樣煉成的》教學(xué)設(shè)計2023-2024學(xué)年統(tǒng)編版語文八年級下冊
- 危險化學(xué)品押運員培訓(xùn)
- 華為培訓(xùn)教程01網(wǎng)絡(luò)基礎(chǔ)
- 腦梗合并心衰護理查房
- 新星諾亞外語學(xué)校劍橋少兒英語一級上冊期中測試題
- QCT 291-2023 汽車機械式分動器總成性能要求和臺架試驗方法 (正式版)
- 浙教版勞動八年級下冊全冊教案教學(xué)設(shè)計
- 盤扣式腳手架培訓(xùn)課件
- 2024年中國血糖健康管理行業(yè)白皮書
- 文華財經(jīng)“麥語言”函數(shù)手冊
- 大班數(shù)學(xué)PPT課件《實物填補數(shù)》
- 乳痛癥的健康宣教
評論
0/150
提交評論