![數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)匯總_第1頁(yè)](http://file3.renrendoc.com/fileroot_temp3/2022-3/5/0952e454-bd39-46e9-84a7-22addb218e87/0952e454-bd39-46e9-84a7-22addb218e871.gif)
![數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)匯總_第2頁(yè)](http://file3.renrendoc.com/fileroot_temp3/2022-3/5/0952e454-bd39-46e9-84a7-22addb218e87/0952e454-bd39-46e9-84a7-22addb218e872.gif)
![數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)匯總_第3頁(yè)](http://file3.renrendoc.com/fileroot_temp3/2022-3/5/0952e454-bd39-46e9-84a7-22addb218e87/0952e454-bd39-46e9-84a7-22addb218e873.gif)
版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、需求分析一.變量。輸入的形式以回車結(jié)束,可以直接輸入正數(shù)或負(fù)數(shù),程序1 本程序;、現(xiàn)計(jì)算任意長(zhǎng)的整數(shù)的四那么運(yùn)算.以用V : %、.;戶和計(jì)算機(jī)對(duì)話的方式,先 后輸入數(shù)字的最多位數(shù),然后程序就計(jì)算并顯示出這兩個(gè)數(shù)的運(yùn)算。2.;利用雙向循環(huán)鏈表現(xiàn)實(shí)長(zhǎng)整數(shù)的存儲(chǔ)每個(gè)結(jié)點(diǎn)含一個(gè)整形會(huì)過(guò)濾掉無(wú)效的字符。按中國(guó)對(duì)于長(zhǎng)整數(shù)的表示習(xí)慣,每四位一“* 產(chǎn) L k °°組,除數(shù)字和位于首位置的負(fù)號(hào)外,其它一切字符都將作為分隔 . £. .3 測(cè)試數(shù)據(jù)10; 0;輸出絃丄000,000"輸出 “0 ;(2)-2345,6789;76543211; (3)-9999,9999
2、; 1,0000,0000,0000;輸岀符,連續(xù)多個(gè)分隔符當(dāng)一個(gè)處理。但不使用分隔符也不彤響結(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è)計(jì)為實(shí)現(xiàn)上述程序功能,應(yīng)以雙向循環(huán)鏈表表示長(zhǎng)整數(shù)。為此,需要定義一個(gè)抽象數(shù)據(jù)類型。1.抽象數(shù)據(jù)類型定義為: ; 16flAD
3、T OrderedList 對(duì)彖:D=:ai|aieinti=l,2,.n, nO墓本操作::init(&a,digif4)操作結(jié)果:構(gòu)造一個(gè)位數(shù)是digit4*4長(zhǎng)整數(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、式的長(zhǎng)數(shù)字賦給g ADT OrderedList2本程序包含兩個(gè)模塊:1)主模塊:Vbid main() 選擇操作:1:蠶助62:加法壬3:減法616/2 4:乘法。5:除法©6:退出。打印結(jié)果%去詳細(xì)設(shè)計(jì)1.元素類型,結(jié)點(diǎn)類型,指針類型#define NULL 0#include<stdio .h>#include<stdlib .h>#iiiclude<conio.h> . . typedef stinct longnode 每個(gè)節(jié)點(diǎn)的結(jié)構(gòu)対int num; /導(dǎo)數(shù)字資/*指向低一位節(jié)點(diǎn)勺s-r1 struct longnode *lowl;s
5、tinctlongnode *highl- /*指向高一位書(shū)點(diǎn)慕/% . longnode;typedef stinct xlong 嚴(yán)每個(gè)長(zhǎng)整數(shù)的結(jié)構(gòu)*/longnode *High;嚴(yán)每個(gè)長(zhǎng)整數(shù)的最高節(jié)點(diǎn)引 嚴(yán)每個(gè)長(zhǎng)整數(shù)的最低節(jié)點(diǎn)*/ " longnode 審 Low;int digit4;/*每個(gè)長(zhǎng)整數(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)申請(qǐng)空間,并賦初始值*/ (
6、*a)>High=NULL;(*a)>Low=NULL;(*a)->Higli=NULL; (*a)-Low=NULL; * * . (a)->digit4=0:for(i=0; i<digit4;i-H-) /* 申請(qǐng) digit4 個(gè)節(jié)點(diǎn),初始化 */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;/*兩個(gè)數(shù)字的相加*/.怙wliile(a l)cl->iium=a 1 ->num+b 1 ->num+cf;if(c l->num>9999?I16/*如果產(chǎn)生進(jìn)位借位勺 14cE;cl>imm-=10000;elsecf=0;retiim cf; /*最高位的進(jìn)位(借位)*/%int passa(xlong a?xlong b.xlong c
8、)兩個(gè)數(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)生進(jìn)位0 */cl>num-=10000;elsecf=0;:al=al ->liigli l;b l=bl ->high 1; c lcl->high 1 ;/嚴(yán)/最高位的進(jìn)位嚴(yán)retuni cf;借位?iiit passb(xlong a,xlong b,xl
9、ong c) J a a o*/兩個(gè)數(shù)字的相乘int cM;/*longnodewliile(a l)cl ->iium=a 1 ->niun*b 1 ->mun*cf;if(c 1 ->niun>9999) cf=l;怪 如果產(chǎn)生進(jìn)位(借位)W cl->inuii=10000-O :elsecf=0;al=al->liighl;bl=bl->highl;cl=cl->highl;J:return cf; :/最高位的進(jìn)位借位尸/int passc(xlong a?xlong b,xlong c)° H“*/ int cf=0;/
10、*兩個(gè)數(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)空進(jìn)仆(佇(5J:劑 else cf=0j.al-al->liigli 1 ;b 1 =b 1 ->highl;cl-cl->high 1; J: : retiun cf; /*最高位的進(jìn)位(借位)*/$/的相反數(shù)求/* nep(xlong a) a/欄因?yàn)榍笙喾磾?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印長(zhǎng)整數(shù) if(i->num>=5000) F L */表示負(fù)數(shù),即用補(bǔ)碼表示printf(-); /*最高位(bit)=l */ &
12、#176; f Z*求反打印其絕對(duì)值nep(a); J while(i&&i>num=O) i=i->lowl; /* 跳過(guò)最位的 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 號(hào)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)每一個(gè)字節(jié)*/bit=ini- P尸 把字符形式的值賦給整數(shù)形式的bit */iflg絆=0 && bit <=9):mun0+=j ishu*bit; /加進(jìn) 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; /* 存入一個(gè)節(jié)點(diǎn) */ num0=0;jishu=T;卜;if(numO) j->num=numO;jj->highl;嚴(yán)把最后一個(gè)沒(méi)存入節(jié)點(diǎn)的數(shù)存入節(jié)點(diǎn)*/fty;j=j->liiglil) j->nxun=O; /* 最位缺乏補(bǔ) 0 */if(out->Higli->iium>=5000)return 1; /* 如果最高位是1,返回1表示出*/if(inO-') nep(out); /* 如果最后一個(gè)字符是貝!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)換出錯(cuò)側(cè)重輸輸入被加數(shù)和加數(shù)wliile(cf);/*':攜“ */ pass(a,b,c);/*執(zhí)行相加運(yùn)算*/ printlong(a);printf(+); /* ;打印結(jié)果:printlong(b);printf(=);printlong (c);bioskey(0);16/9int subtract。/* 減ch
17、ar 細(xì) 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)換出錯(cuò)側(cè)重輸*/*執(zhí)行相減運(yùn)算*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)換出錯(cuò)側(cè)重輸*/仔:抒* * * 怎: 叮 rpassb(a?b.c);/*執(zhí)行相乘運(yùn)算*/憑-: . 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)換岀錯(cuò),那么重輸*/* passc(a,b?c);執(zhí)行相除運(yùn)算/ 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. 本站所有資源如無(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ù)網(wǎng)僅提供信息存儲(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025-2030全球鍍銅光亮劑行業(yè)調(diào)研及趨勢(shì)分析報(bào)告
- 2025年全球及中國(guó)母嬰健康產(chǎn)后護(hù)理行業(yè)頭部企業(yè)市場(chǎng)占有率及排名調(diào)研報(bào)告
- 2025年全球及中國(guó)敏捷滲透測(cè)試行業(yè)頭部企業(yè)市場(chǎng)占有率及排名調(diào)研報(bào)告
- 2025年全球及中國(guó)LTCC用導(dǎo)電銀漿行業(yè)頭部企業(yè)市場(chǎng)占有率及排名調(diào)研報(bào)告
- 2025建筑安裝工程承包合同范本版
- 教室租賃合同范本
- 2025工礦企業(yè)大型成套設(shè)備采購(gòu)合同范本
- 裝修設(shè)計(jì)合同范本大全
- 2025勞動(dòng)合同試用期法律疑難問(wèn)題詳解
- 門(mén)店合伙協(xié)議合同范本
- 2024年1月高考適應(yīng)性測(cè)試“九省聯(lián)考”數(shù)學(xué) 試題(學(xué)生版+解析版)
- JT-T-1004.1-2015城市軌道交通行車調(diào)度員技能和素質(zhì)要求第1部分:地鐵輕軌和單軌
- (高清版)WST 408-2024 定量檢驗(yàn)程序分析性能驗(yàn)證指南
- (正式版)JBT 11270-2024 立體倉(cāng)庫(kù)組合式鋼結(jié)構(gòu)貨架技術(shù)規(guī)范
- DB11∕T 2035-2022 供暖民用建筑室溫?zé)o線采集系統(tǒng)技術(shù)要求
- 《復(fù)旦大學(xué)》課件
- 針灸與按摩綜合療法
- Photoshop 2022從入門(mén)到精通
- T-GDWJ 013-2022 廣東省健康醫(yī)療數(shù)據(jù)安全分類分級(jí)管理技術(shù)規(guī)范
- 校本課程生活中的化學(xué)
- DB43-T 2775-2023 花櫚木播種育苗技術(shù)規(guī)程
評(píng)論
0/150
提交評(píng)論