




版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、word數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)題 目 名 稱: 數(shù) 制 轉(zhuǎn) 換 問(wèn) 題 課 程 名 稱: 數(shù) 據(jù) 結(jié) 構(gòu) 學(xué) 生 姓 名: 學(xué) 號(hào): 學(xué) 院 名 稱: 指 導(dǎo) 教 師: 目 錄一需求分析二概要設(shè)計(jì)三詳細(xì)設(shè)計(jì)四調(diào)試測(cè)試五總結(jié)一需求分析 應(yīng)用環(huán)境設(shè)定: 生活中我們需要將M進(jìn)制的數(shù)轉(zhuǎn)換為我們所需要的進(jìn)制,從鍵盤(pán)任意輸入一個(gè)M進(jìn)制的數(shù),對(duì)其進(jìn)行轉(zhuǎn)換成其他三種進(jìn)制的數(shù),然后再?gòu)碾娔X中顯示出來(lái),最終得到我們的結(jié)果。 用戶界面:命令行界面,根據(jù)自己的要求,對(duì)界面的提示進(jìn)行操作,正確輸入我們需要的數(shù)據(jù)。輸入方式:首先輸入將轉(zhuǎn)換的進(jìn)制數(shù),回車(chē)確認(rèn);然后輸入確定的數(shù)據(jù),回車(chē)確認(rèn);接著選擇要轉(zhuǎn)換為的進(jìn)制數(shù),回車(chē)確認(rèn)。輸出
2、方式:界面直接輸出,啟動(dòng)程序后,按照界面提示,輸入數(shù)據(jù),直接回車(chē)確認(rèn),顯示屏即輸出我們的數(shù)據(jù)結(jié)果。數(shù)據(jù)儲(chǔ)存方式:全部在內(nèi)存存放,不使用硬盤(pán)上的文件或其他數(shù)據(jù)源,程序執(zhí)行過(guò)程中和結(jié)束后不保存數(shù)據(jù)。程序功能:1.根據(jù)界面提示輸入M進(jìn)制數(shù)據(jù)。 2.對(duì)任意M進(jìn)制數(shù)據(jù)實(shí)行非M進(jìn)制的轉(zhuǎn)換。二概要設(shè)計(jì)在此說(shuō)明數(shù)據(jù)結(jié)構(gòu)設(shè)計(jì)和關(guān)鍵的算法設(shè)計(jì)思想1. 用數(shù)組實(shí)現(xiàn)該問(wèn)題D2M()函數(shù)和M2D()函數(shù)是實(shí)現(xiàn)該問(wèn)題的主要函數(shù)。D2M()函數(shù)是實(shí)現(xiàn)十進(jìn)制轉(zhuǎn)換為其它進(jìn)制的函數(shù),它是將輸入的十進(jìn)制數(shù)取首先對(duì)需要轉(zhuǎn)換的進(jìn)制M取余,然后再對(duì)其取整,接著通過(guò)遞歸調(diào)用D2M()函數(shù)依次將得到的整數(shù)局部依次先取余后取整,并將所得的余數(shù)
3、依次存入一個(gè)數(shù)組中,然后逆向取出數(shù)組中的元素,即得到轉(zhuǎn)換后的結(jié)果。而M2D()函數(shù)那么是實(shí)現(xiàn)其他進(jìn)制M轉(zhuǎn)換為十進(jìn)制,并將其轉(zhuǎn)換為非M進(jìn)制的數(shù)。M進(jìn)制轉(zhuǎn)十進(jìn)制那么是從該M進(jìn)制數(shù)的最后一位開(kāi)始算,依次列為第、位并分別乘以M的、次方,將得到的次方相加便得到對(duì)應(yīng)的十進(jìn)制數(shù),再調(diào)用D2M()函數(shù)將其轉(zhuǎn)換為非M進(jìn)制的數(shù)。i,j,y,n,s,m,r,reminder,x是定義的全局變量,初始值都為; D2M(int g,int h)是實(shí)現(xiàn)十進(jìn)制數(shù)轉(zhuǎn)換為M進(jìn)制數(shù)的函數(shù);M2D(int e)是實(shí)現(xiàn)M(僅指二進(jìn)制數(shù)和八進(jìn)制數(shù))進(jìn)制數(shù)轉(zhuǎn)換為十進(jìn)制數(shù)的函數(shù),并在其中調(diào)用D2M(int g,int h)實(shí)現(xiàn)向非M進(jìn)制數(shù)
4、的轉(zhuǎn)換;H2D(int f)是實(shí)現(xiàn)十六進(jìn)制數(shù)轉(zhuǎn)換為十進(jìn)制數(shù)的函數(shù),并在其中調(diào)用D2M(int g,int h)實(shí)現(xiàn)向非十六進(jìn)制數(shù)的轉(zhuǎn)換;void main()是主函數(shù),功能是給出測(cè)試的數(shù)據(jù),并在特定條件下調(diào)用D2M()函數(shù)和M2D()函數(shù)。使用簡(jiǎn)單一維數(shù)組int aN,int bN, int cN。2. 用棧實(shí)現(xiàn)該問(wèn)題 同樣是利用D2M()和M2D()兩個(gè)函數(shù)實(shí)現(xiàn)。兩個(gè)函數(shù)的思想同利用數(shù)組實(shí)現(xiàn)時(shí)相同。只是棧具有后進(jìn)先出的性質(zhì),故其用Pop()取數(shù)較數(shù)組的逆向取數(shù)方便些。SqStack定義棧,說(shuō)明base為棧底指針,top為棧頂指針,stacksize為棧容量;int InitStack(SqS
5、tack &S)到int DestroyStack(SqStack &S)六大模塊分別表示構(gòu)造一個(gè)空棧、用表示棧元素、插入元素、刪除元素、判斷棧是否為空以及摧毀棧;SqStack S是指定義棧S;D2M(int a,int b)的功能是將十進(jìn)制數(shù)轉(zhuǎn)換成M進(jìn)制的函數(shù);M2D()的功能是M進(jìn)制轉(zhuǎn)換為十進(jìn)制的函數(shù);void main()是主函數(shù)。其功能是輸入需要測(cè)試的數(shù)據(jù)以及需要轉(zhuǎn)換的進(jìn)制,并在特定情形下調(diào)用D2M()函數(shù)和M2D()函數(shù),而且實(shí)現(xiàn)M進(jìn)制數(shù)向任意非M進(jìn)制數(shù)的轉(zhuǎn)換。數(shù)據(jù)類(lèi)型定義如下:typedef struct int *base; 棧底int *top; 棧頂int
6、stacksize;棧容量SqStack;int InitStack(SqStack &S)構(gòu)造一個(gè)個(gè)空棧int GetTop(SqStack S, int &e) 假設(shè)棧不為空,那么用e返回S的棧頂元素,并返回0,否那么返回1int Push(SqStack &S , int e) 插入元素e為新的棧頂元素int Pop(SqStack &S, int &e) 假設(shè)棧不空,那么刪除S的棧頂元素,用e返回其值,并返回0,否那么返回1。1.程序流程圖開(kāi)始棧數(shù)組輸入需轉(zhuǎn)換的位數(shù)輸入需轉(zhuǎn)換的數(shù)的進(jìn)制N 假設(shè)N!=10 假設(shè)N=10輸入需轉(zhuǎn)換的數(shù)輸出結(jié)果輸入將轉(zhuǎn)
7、換的進(jìn)制數(shù)2.程序源代碼A用數(shù)組實(shí)現(xiàn)文件名shuzu.cpp#include<stdio.h>#include<math.h>#define N 1000int i,j,y,n,s;int m,r,reminder;int x; /全局變量默認(rèn)初始化為0,不必再賦0了D2M(int g,int h) /十進(jìn)制數(shù)轉(zhuǎn)換為其他進(jìn)制數(shù)int cN;i=0;reminder=g%h;g=g/h;if(reminder>9)ci=reminder+55;i+; elseci=reminder;i+;if(g>0)D2M(g,h);for(j=i-1;j>=0;j-
8、)if(cj>=65)printf("%c",cj);elseprintf("%d",cj);return 0;M2D(int e) /二進(jìn)制和八進(jìn)制數(shù)轉(zhuǎn)換為十進(jìn)制數(shù),并這轉(zhuǎn)換為其他進(jìn)制數(shù)int aN; printf("請(qǐng)輸入%d進(jìn)制位數(shù):",m);scanf("%d",&n);printf("請(qǐng)輸入%d進(jìn)制的每位并使每位用空格隔開(kāi):",m);for(i=0;i<n;i+) scanf("%d",&ai);for(i=n-1;i>=0;i-)
9、y+=(int)pow(e,j)*ai; /強(qiáng)制類(lèi)型轉(zhuǎn)換,以免造成數(shù)據(jù)喪失j+; printf("需要轉(zhuǎn)換的進(jìn)制M:");scanf("%d",&s);printf("請(qǐng)輸出轉(zhuǎn)換成%d進(jìn)制的結(jié)果:",s);D2M(y,s);return 0;H2D(int f) /十六進(jìn)制數(shù)轉(zhuǎn)換為十進(jìn)制數(shù),并轉(zhuǎn)換為其他進(jìn)制數(shù)int bN;printf("請(qǐng)輸入%d進(jìn)制位數(shù):",m);scanf("%d",&n);printf("請(qǐng)輸入%d進(jìn)制的每位并使每位用空格隔開(kāi):",m)
10、;for(i=0;i<n;i+) scanf("%x",&bi);for(i=n-1;i>=0;i-)y+=(int)pow(f,j)*bi; /強(qiáng)制類(lèi)型轉(zhuǎn)換,以免造成數(shù)據(jù)喪失 j+;printf("需要轉(zhuǎn)換的進(jìn)制M:");scanf("%d",&s);printf("請(qǐng)輸出轉(zhuǎn)換成%d進(jìn)制的結(jié)果:",s);D2M(y,s);return 0;void main()printf("請(qǐng)給定一個(gè)需轉(zhuǎn)換的進(jìn)制M(2or8or10or16):");scanf("%d&
11、quot;,&m);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("請(qǐng)輸入一個(gè)%d進(jìn)制數(shù):",m);scanf("%d",&x);printf("請(qǐng)輸入需要轉(zhuǎn)換成的進(jìn)制M(2or8or16):");scanf("%d",&r);printf("請(qǐng)輸出轉(zhuǎn)換成%d進(jìn)制的結(jié)果:",r);D2M(x,r);printf("n
12、");B用棧實(shí)現(xiàn)文件名zhan.cpp#include<stdio.h>#include<malloc.h>#include<stdlib.h>#include<math.h>#define STACK_INIT_SIZE 100 /存儲(chǔ)空間初始分配量#define STACKINCREMENT 10 /存儲(chǔ)空間分配增量int e,m,x,s,t; /x為要轉(zhuǎn)換的十進(jìn)制數(shù),e 為臨時(shí)用的的int型變量int r,y,i,n;typedef struct int *base; /棧底int *top; /棧頂int stacksize;
13、/棧容量SqStack;int InitStack(SqStack &S) /構(gòu)造一個(gè)空棧S.base=(int *)malloc(STACK_INIT_SIZE *sizeof(int);if(!S.base) exit(0); /存儲(chǔ)空間失敗S.top=S.base;S.stacksize=STACK_INIT_SIZE;return 0;int GetTop(SqStack S, int &e) /假設(shè)棧不為空,那么用e返回S的棧頂元素,并返回0,否那么返回1if(S.top=S.base) return 1;e=*(S.top-1);return 0;int Push(
14、SqStack &S , int e) /插入元素e為新的棧頂元素if(S.top-S.base>=S.stacksize) /棧滿,追加存儲(chǔ)空間S.base=(int *)realloc(S.base,(S.stacksize+STACKINCREMENT)*sizeof(int);if(!S.base) return 1 ; /存儲(chǔ)分配失敗S.top=S.base+S.stacksize;S.stacksize+=STACKINCREMENT;*S.top+=e;return 0;int Pop(SqStack &S, int &e) /假設(shè)棧不空,那么刪除S
15、的棧頂元素,用e返回其值,并返回0,否那么返回1if(S.top=S.base) return 1;e=*-S.top;return 0;int StackEmpty(SqStack S) /假設(shè)??眨敲捶祷?,否那么返回0if(S.top=S.base)return 1;return 0 ;int DestroyStack(SqStack &S) /銷(xiāo)毀棧S,棧S不再存在free(S.base);S.top=NULL; /防止程序后面不小心使用了它S.base=S.top;return 0 ;SqStack S; /定義棧SD2M(int a,int b) /十進(jìn)制轉(zhuǎn)換成其他進(jìn)制的
16、函數(shù)D2M()while(a)r=a%b;if(r>9)r=r+55;Push(S,r); /壓入棧a/=b; /轉(zhuǎn)換成M進(jìn)制printf("該數(shù)轉(zhuǎn)換成%d進(jìn)制的結(jié)果:",b);while(!StackEmpty(S)Pop(S,e); /彈出棧if(e>=65)printf("%c",e);elseprintf("%d",e);return 0;M2D() /其他進(jìn)制轉(zhuǎn)換為十進(jìn)制的函數(shù)M2D() char c1000;printf("請(qǐng)輸入需要轉(zhuǎn)換的數(shù)的位數(shù):");scanf("%d&quo
17、t;,&n);printf("請(qǐng)輸入需要轉(zhuǎn)換的數(shù)的每位并用空格隔開(kāi):");for(i=0;i<n;i+)scanf("%x",&ci);Push(S,ci); i=0;while(!StackEmpty(S)Pop(S,e);y+=(int)pow(m,i)*e;i+;void main()InitStack(S); /構(gòu)造一個(gè)空棧printf("請(qǐng)輸入需要轉(zhuǎn)換的進(jìn)制M(2or8or10or16):");scanf("%d",&m);if(m=10) /十進(jìn)制轉(zhuǎn)換成其他進(jìn)制printf
18、("請(qǐng)給定一個(gè)需要轉(zhuǎn)換的10進(jìn)制數(shù):");scanf("%d",&x);printf("請(qǐng)輸入需要轉(zhuǎn)換成的進(jìn)制數(shù):");scanf("%d",&t);D2M(x,t);if(m=2|m=8|m=16) /其他進(jìn)制轉(zhuǎn)換成十進(jìn)制,且其他任意進(jìn)制的相互轉(zhuǎn)換M2D();printf("給定要轉(zhuǎn)換成的進(jìn)制M:");scanf("%d",&s);D2M(y,s);printf("n");DestroyStack(S); /銷(xiāo)毀棧S,棧S不再存在 四調(diào)試測(cè)試 1.十進(jìn)
溫馨提示
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 舊屋面防水施工方案
- 毛坯粉墻涂料施工方案
- YD B 050-2010 VRLA蓄電池組在線診斷技術(shù)要求和測(cè)試方法
- 2025年度美容院顧客資源與合同權(quán)益轉(zhuǎn)讓書(shū)
- 腳手架班組承包協(xié)議(2025年度)包含環(huán)保責(zé)任條款
- 二零二五年度轉(zhuǎn)租協(xié)議甲乙丙三方房屋租賃合同
- 二零二五年度主播與網(wǎng)絡(luò)文學(xué)出版社解除合同
- 2025年度男女分手后共同子女保險(xiǎn)權(quán)益處理協(xié)議
- 二零二五年度返利協(xié)議書(shū):健康體檢機(jī)構(gòu)返利合作協(xié)議
- 二零二五年度校園借車(chē)免責(zé)協(xié)議實(shí)施細(xì)則
- 2025年皖北衛(wèi)生職業(yè)學(xué)院?jiǎn)握新殬I(yè)技能測(cè)試題庫(kù)參考答案
- 2024年廣州市公安局招聘交通輔警考試真題
- 隨機(jī)交易策略(TB版)
- 《綠色建筑設(shè)計(jì)原理》課件
- 中醫(yī)館裝修合同范本
- 1.1 銳角三角函數(shù)(第1課時(shí)) 課件 2024-2025學(xué)年北師大版九年級(jí)數(shù)學(xué)下冊(cè)
- 2025年分手協(xié)議書(shū)規(guī)范承諾函
- 椎管打骨水泥后的護(hù)理
- 學(xué)習(xí)與科技的融合主題班會(huì)
- 《直播銷(xiāo)售》課件-項(xiàng)目一 認(rèn)識(shí)直播與直播銷(xiāo)售
- 中國(guó)民航大學(xué)《普通物理專(zhuān)題》2023-2024學(xué)年第一學(xué)期期末試卷
評(píng)論
0/150
提交評(píng)論