版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
1、數(shù)據(jù)結(jié)構(gòu) 課程設(shè)計(jì)報(bào)告書 題 目數(shù)制轉(zhuǎn)換 系 另比計(jì)算機(jī)科學(xué)與應(yīng)用系 學(xué) 號(hào): 學(xué)生姓名: 指導(dǎo)教師: 完成日期: 2013 6 1 i 數(shù)制轉(zhuǎn)換 1. 需求分析 任意給定一個(gè) M進(jìn)制的數(shù)x ,實(shí)現(xiàn)如下要求 1) 求出此數(shù)x的10進(jìn)制值(用MD表示) 2) 實(shí)現(xiàn)對(duì)x向任意的一個(gè)非M進(jìn)制的數(shù)的轉(zhuǎn)換。 3) 至少用兩種或兩種以上的方法實(shí)現(xiàn)上述要求(用棧解決,用數(shù)組解決,其它方法解決) 2. 概要設(shè)計(jì) 程序流程可以用以下流程圖來刻畫: B用棧實(shí)現(xiàn) A用數(shù)組實(shí)現(xiàn) 3. 詳細(xì)設(shè)計(jì) A用數(shù)組實(shí)現(xiàn)該問題 D2M()函數(shù)和M2D()函數(shù)是實(shí)現(xiàn)該問題的主要函數(shù)。D2M()函數(shù)是實(shí)現(xiàn)十進(jìn)制轉(zhuǎn)換為其 他進(jìn)制的函數(shù),
2、它是將輸入的十進(jìn)制數(shù) x首先對(duì)需要轉(zhuǎn)換的進(jìn)制 M取余,然后在對(duì)其取整, 接著通過遞歸調(diào)用D2M()函數(shù)一次將得到的整數(shù)部分一次先取余后取整,并將所得的余數(shù) 依次存入下一數(shù)組,然后逆向去除數(shù)組中的元素,即得到轉(zhuǎn)換后的結(jié)果。而M2D()函數(shù)是 實(shí)現(xiàn)其他進(jìn)制 M轉(zhuǎn)換為十進(jìn)制,并將其轉(zhuǎn)換為非 M進(jìn)制。M進(jìn)制轉(zhuǎn)十進(jìn)制則是從該 M進(jìn) 制數(shù)的最后一位開始運(yùn)算, 依次列為第0、1、2、.N位并分別乘以 M的0、1、2、.N 次方,將得到的次方相加便得到對(duì)應(yīng)的十進(jìn)制數(shù),再調(diào)用D2M()函數(shù)將其轉(zhuǎn)換為非 M進(jìn)制 的數(shù)。 B.用棧實(shí)現(xiàn) 棧具有后進(jìn)先出的性質(zhì),具體實(shí)現(xiàn)方法和數(shù)組的方法有很大聯(lián)系,不再過多解釋。 4.
3、調(diào)試分析 (1) 構(gòu)造棧的方法通過查閱書籍知道了。 (2) 數(shù)組的遞歸調(diào)用查閱相關(guān)書籍了解了。 (3) 為了讓界面表達(dá)更清晰,多次調(diào)試完善了界面。 5. 測試結(jié)果 下面是我的測試函數(shù)及運(yùn)行結(jié)果: A.數(shù)組測試結(jié)果 18 回 百:新起文禪無.Debug廖制轉(zhuǎn)換數(shù)氫exh r8D O 2 2斧 M弄 和5甬結(jié)til 進(jìn):4進(jìn)的on C 團(tuán)換16y 陰義ke 一一霍an _/ 刖 S ,二-4.TT4,rr 丄# E 青青青青咗 r W擁文件無.氐buy做制轉(zhuǎn)換數(shù)氫exe r r 4 D o 1 2 2 1 c : M M頭 制E制制 進(jìn):7進(jìn)陽 刃 IM 需10蔦ke 一一韋an _1 人 F 4
4、ijgj|g青請pp 賣 B棧實(shí)現(xiàn)測試結(jié)果 3 i 2S: 擇玄 :選選請 進(jìn)進(jìn)亠: 制八二十選 進(jìn)一.奪fr WHS 詵 W,山?fETfF誹 In lhi進(jìn)併 _ TT 面一一 冒習(xí)g 同果果果果果 FlD _u _u D nu -司女-PI/女女女 R 9 八圣 y4J 1_ !%起請 豐舜 聲進(jìn)八擇 制八二十選 進(jìn)為為諮思 的 選 IF 畧進(jìn)進(jìn)全岀 誓習(xí)SU 一想 囲果果果果果 - u. u. D- D- 誦女-pc女女女 2 n=8=23 10111 請按任意鍵繼續(xù) 3 :選選* S進(jìn)八擇 制八二十選 進(jìn)藥力“詰S 的扯 專進(jìn)進(jìn)全岀 - - nn-lfl 你退 逆lsFEhEFsT
5、n D n D D 誦女-pc女女H:x 3 nC=B=23 1100111111 請按任意鍵繼續(xù). 6. 總結(jié) 通過數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì),我了解到數(shù)據(jù)結(jié)構(gòu)是計(jì)算機(jī)科學(xué)中一門綜合性的專業(yè)基礎(chǔ) 課。這次的課程設(shè)計(jì)使我對(duì)數(shù)組及棧有了初步的認(rèn)識(shí),雖然課程設(shè)計(jì)的不完善,但是在設(shè)計(jì) 過程中我受益匪淺, 通過查資料、網(wǎng)上搜索例子, 讓我學(xué)到了很多以前不知道的東西,提高 我的分析和解決問題的能力,進(jìn)一部掌握了應(yīng)用系統(tǒng)設(shè)計(jì)的方法和不步驟,也讓我意識(shí)到 自己所掌握的實(shí)在是太少了,只靠課本知識(shí)是不夠的, 應(yīng)該多多上機(jī)調(diào)試, 這樣才能提高自 己。 7. 附源程序 A.數(shù)組實(shí)現(xiàn) #include #include #de
6、fine N 1000 int i,j,y,n,s; int m,r,reminder; int x; /全局變量默認(rèn)初始化為 0,不必再賦0 了 D2M(int g,int h) int cN; i=0; reminder=g%h; g=g/h; if(reminder9) ci=reminder+55; i+; else ci=reminder; i+; if(g0) D2M(g,h); for(j=i-1;j=0;j-) if(cj=65) printf(%c,cj); /十進(jìn)制數(shù)轉(zhuǎn)換為其他進(jìn)制數(shù) else printf(%d,cj); return 0; M2D(int e) / 二進(jìn)
7、制和八進(jìn)制數(shù)轉(zhuǎn)換為十進(jìn)制數(shù) ,并這轉(zhuǎn) 換為其他進(jìn)制數(shù) int aN; printf( 請輸入 %d 進(jìn)制位數(shù) :,m); scanf(%d, printf( 請輸入 %d 進(jìn)制的每位并使每位用空格隔開 :,m); for(i=0;i=0;i-) y+=(int)pow(e,j)*ai; / 強(qiáng)制類型轉(zhuǎn)換, 以免造成數(shù)據(jù)丟失 j+; printf( 請輸出所得的 10 進(jìn)制的結(jié)果 : ); printf(%d,y); printf(n 需要轉(zhuǎn)換的進(jìn)制 M:); scanf(%d, printf( 請輸出轉(zhuǎn)換成 %d 進(jìn)制的結(jié)果 :,s); D2M(y,s); return 0; H2D(int
8、f)/十六進(jìn)制數(shù)轉(zhuǎn)換為十進(jìn)制數(shù), 并轉(zhuǎn)換為其 他進(jìn)制數(shù) int bN; printf( 請輸入 %d 進(jìn)制位數(shù) :,m); scanf(%d, printf( 請輸入 %d 進(jìn)制的每位并使每位用空格隔開 :,m); for(i=0;i=0;i-) y+=(int)pow(f,j)*bi;/ 強(qiáng)制類型轉(zhuǎn)換,以免造成數(shù)據(jù)丟 失 j+; printf( 請輸出所得的 10 進(jìn)制的結(jié)果 : ); printf(%d,y); printf(n 需要轉(zhuǎn)換的進(jìn)制 M:); scanf(%d, printf( 請輸出轉(zhuǎn)換成 %d 進(jìn)制的結(jié)果 :,s); D2M(y,s); return 0; void mai
9、n() printf( 請給定一個(gè)需轉(zhuǎn)換的進(jìn)制 M(2or8or10or16):); scanf(%d, if(m=2|m=8) /二進(jìn)制和八進(jìn)制轉(zhuǎn)換成十進(jìn)制 M2D(m); else if(m=16) /十六進(jìn)制轉(zhuǎn)換成十進(jìn)制 H2D(m); else if(m=10) /十進(jìn)制轉(zhuǎn)換成其它進(jìn)制 printf( 請輸入一個(gè) %d 進(jìn)制數(shù) :,m); scanf(%d, printf( 請輸入需要轉(zhuǎn)換成的進(jìn)制 M(2or8or16):); scanf(%d, printf( 請輸出轉(zhuǎn)換成 %d 進(jìn)制的結(jié)果 :,r); D2M(x,r); printf(n); B. 棧實(shí)現(xiàn) #include std
10、io.h #include string.h #include math.h #include limits.h #include stdlib.h #include malloc.h #define TRUE 1 #define OK 1 #define FALSE 0 #define ERROR 0 #define INFEASIBLE -1 typedef int Status; typedef int SElement; #define STACK_INIT_SIZE 10 #define STACKINCREMENT 2 typedef struct SqStack SElement
11、 *base ; SElement *top ; int stacksize ; SqStack; int InitStack (SqStack *S) * sizeof (*S).base = (SElement *)malloc(STACK_INIT_SIZE (SElement) ; if (!(*S).base) exit (OVERFLOW); S-top=S-base; S-stacksize= STACK_INIT_SIZE; return OK; int DestroyStack (SqStack *S) free (S-base); S-base = NULL; S-top
12、= NULL; S-stacksize = 0; return OK; int ClearStack(SqStack *S) S-top = S-base; return OK; int StackEmpty(SqStack S)判斷 sqstack 是否為空 if (S.top = S.base ) return TRUE; else return FALSE; int StackLength (SqStack S)/返回s的元素個(gè)數(shù),即棧的長度 return S.top-S.base ; int GetTop(SqStack S,int *e)若棧不為空,用e返回s的棧頂元素, 返回 ok
13、 if (S.top S.base ) *e=*(S.top-1); return OK; else return ERROR; int Push(SqStack *S,int e)插入元素e為新的棧頂元素 if (S-top - S-base = S-stacksize) S-base = (SElement * )realloc (*S).base,(*S).stacksize + STACKINCREMENT * sizeof (SElement); if (!S-base ) exit (OVERFLOW); S-top = S-base + S-stacksize; S-stacks
14、ize += STACKINCREMENT; *(S-top) = e; S-top +; return OK; int Pop(SqStack *S,int *e) /*若棧不空,則刪除S的棧頂元素,用e返回其值,并返回0K; 否則返回 ERROR */ if(*S).top=(*S).base) return ERR0R; *e=*-(*S).top; return OK; int StackTraverse (SqStack S ,int (*visit)(int )/ while (S.top S.base ) visit (*S.base + ); printf (n); retur
15、n OK; void conversion8(SqStack s) unsigned n; int e; InitStack (/ 初始化棧 printf (n(=0)=); scanf (%u, while (n)/ 當(dāng) n 不為 0 Push ( n=n/8; while (!StackEmpty(s)/ 當(dāng)棧不為空 :(a.P%J uud :他呦dod 卓華立辭樂(s)eduimpE)si) !3/u=u us$) qsnj 0 u 樂 (u)e|!i|M jueos !(11=(O=|oejsi!U| 3! !u pauBisun (S ”O(jiān)E)SbS)乙UOISJ9AUO3 piOA
16、 (,u J HU!d :(a.P%J uud dod 制Eaiq:(3P%HU!d4=ej aseo !|eajq!(ai11p%11)4;uud!o=e:O eseo (a)qoiMS dod 卓華立辭樂(s)eduimpE)si) eiM !3/u=u us$) qsnj 0 u 樂 (u)e|!i|M jueos !(11=(O=|oejsi!U| !a ui !p ueqo !u pauBisun (s |3esbs)9puoisuaAuoo piOA (,u J Buud case 2:e=2;printf(%d,e);break; case 3:e=3;printf(%d,e);
17、break; case 4:e=4;printf(%d,e);break; case 5:e=5;printf(%d,e);break; case 6:e=6;printf(%d,e);break; case 7:e=7;printf(%d,e);break; case 8:e=8;printf(%d,e);break; case 9:e=9;printf(%d,e);break; case 10:d=a;printf(%c,d);break; case 11:d=b;printf(%c,d);break; case 12:d=c;printf(%c,d);break; case 13:d=d
18、;printf(%c,d);break; case 14:d=e;printf(%c,d);break; case 15:d=f;printf(%c,d);break; printf (%d,e); printf (n); /選擇 int choose() int d; 1n); 2n); 3n); printf( 請選擇你要進(jìn)行的進(jìn)制的轉(zhuǎn)換: n printf( 如果是十進(jìn)制轉(zhuǎn)換為八進(jìn)制請選擇 printf( 如果是十進(jìn)制轉(zhuǎn)換為二進(jìn)制請選擇 printf( 如果是十進(jìn)制轉(zhuǎn)換為十六進(jìn)制請選擇 printf( 如果您想全部轉(zhuǎn)換請選擇 9n); printf( 如果想退出請選擇 0n); printf(n); scanf(%d, return d; void main() int f=0; SqSta
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年石灰礦山資源開采與利用合同3篇
- 推廣計(jì)劃的擬訂、執(zhí)行和評(píng)估
- 2025版國際商務(wù)合作合同模板匯編3篇
- 二零二五年度現(xiàn)代中式木工裝飾工程合同4篇
- 二零二五版高速公路500KVA箱變維護(hù)保養(yǎng)合同2篇
- 堅(jiān)果種植的社會(huì)經(jīng)濟(jì)效益考核試卷
- 《高血壓的護(hù)理常規(guī)》課件
- 2025版農(nóng)產(chǎn)品深加工項(xiàng)目貸款合同范本4篇
- 艾滋病HEALTH87課件講解
- 2025年加盟代理分銷商合同
- 2025年溫州市城發(fā)集團(tuán)招聘筆試參考題庫含答案解析
- 2025年中小學(xué)春節(jié)安全教育主題班會(huì)課件
- 2025版高考物理復(fù)習(xí)知識(shí)清單
- 除數(shù)是兩位數(shù)的除法練習(xí)題(84道)
- 2025年度安全檢查計(jì)劃
- 2024年度工作總結(jié)與計(jì)劃標(biāo)準(zhǔn)版本(2篇)
- 全球半導(dǎo)體測試探針行業(yè)市場研究報(bào)告2024
- 反走私課件完整版本
- 畢業(yè)論文-山東省農(nóng)產(chǎn)品出口貿(mào)易的現(xiàn)狀及對(duì)策研究
- 音樂思政課特色課程設(shè)計(jì)
- 2023年四川省樂山市中考數(shù)學(xué)試卷
評(píng)論
0/150
提交評(píng)論