




版權(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)對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首先對需要轉(zhuǎn)換的進(jìn)制 M取余,然后在對其取整, 接著通過遞歸調(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 次方,將得到的次方相加便得到對應(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ì)使我對數(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ǔ)空間,僅對用戶上傳內(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職員雇傭合同2
- 2025工程合同管理臺(tái)帳B
- 人防工程專用合同樣本
- 個(gè)人商業(yè)購房合同樣本
- 保潔臨時(shí)聘用合同樣本
- 買賣加工中介合同樣本
- 涼亭采購安裝合同樣本
- 人工耕地種地合同樣本
- 出租外墻改造合同標(biāo)準(zhǔn)文本
- 傳媒股東協(xié)議合同范例
- 23G409先張法預(yù)應(yīng)力混凝土管樁
- 三年級(jí)下冊口算天天100題(A4打印版)
- 建筑空間組合論形式美的規(guī)律課件
- DB32T 3985-2021 河湖岸坡植物防護(hù)技術(shù)規(guī)范
- 受限空間作業(yè)票填寫模板
- CJJ-T 34-2022 城鎮(zhèn)供熱管網(wǎng)設(shè)計(jì)標(biāo)準(zhǔn)
- 小蝌蚪找媽媽(第一課時(shí))(省一等獎(jiǎng))
- 勘察設(shè)計(jì)工作大綱
- 道路運(yùn)輸從業(yè)資格證件換發(fā)、補(bǔ)發(fā)、變更登記表
- 事業(yè)單位1993歷次調(diào)整工資標(biāo)準(zhǔn)對照表
- 電氣工程及其自動(dòng)化專業(yè)英語詞匯
評(píng)論
0/150
提交評(píng)論