


版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、安徽農(nóng)業(yè)大學(xué)經(jīng)濟(jì)技術(shù)學(xué)院課程設(shè)計(jì)制*換目名稱【據(jù)結(jié)構(gòu)課程名稱學(xué)生姓名學(xué) 號(hào)張東升10538022系、專 業(yè)計(jì)算機(jī)科學(xué)與技術(shù)指導(dǎo)教師涂力靜二0一年十二月十七日數(shù)制轉(zhuǎn)換問(wèn)題一、問(wèn)題描述任意給定一個(gè)M進(jìn)制的數(shù)X,轉(zhuǎn)換為其它任意進(jìn)制的數(shù)據(jù)。二、基本要求1、對(duì)給字一個(gè)M進(jìn)制的數(shù)據(jù)x,求出此數(shù)x的10進(jìn)制值(用MD表示);2、實(shí)現(xiàn)對(duì)x向任意的一個(gè)非M進(jìn)制的數(shù)的轉(zhuǎn)換;3、至少用兩種方法實(shí)現(xiàn)上述要求(用棧解決,用數(shù)組解決,其它方法解決)。三、測(cè)試數(shù)據(jù)初始輸入的數(shù)據(jù)有:十進(jìn)制數(shù)527和十六進(jìn)制數(shù)1A2C9四、算法思想1、用數(shù)組實(shí)現(xiàn)該問(wèn)題:D2MO函數(shù)和M2DO函數(shù)是實(shí)現(xiàn)該問(wèn)題的主要函數(shù)。D2MO函數(shù)是實(shí)現(xiàn)十進(jìn)制
2、轉(zhuǎn)換 為其它進(jìn)制的函數(shù),它是將輸入的十進(jìn)制數(shù)x取首先對(duì)需要轉(zhuǎn)換的進(jìn)制H取余,然后再 對(duì)其取整,接著通過(guò)遞歸調(diào)用D2MO函數(shù)依次將得到的整數(shù)部分依次先取余后取整,并 將所得的余數(shù)依次存入一個(gè)數(shù)組中,然后逆向取出數(shù)組中的元素,即得到轉(zhuǎn)換后的結(jié)果。 而M2DO函數(shù)則是實(shí)現(xiàn)其他進(jìn)制H轉(zhuǎn)換為十進(jìn)制,并將其轉(zhuǎn)換為非M進(jìn)制的數(shù)。M進(jìn)制 轉(zhuǎn)十進(jìn)制則是從該M進(jìn)制數(shù)的最后一位開(kāi)始算,依次列為第0、1、2-n位并分別乘 以H的0、1、2-n次方,將得到的次方相加便得到對(duì)應(yīng)的十進(jìn)制數(shù),再調(diào)用D2MO 函數(shù)將其轉(zhuǎn)換為非M進(jìn)制的數(shù)。2、用棧實(shí)現(xiàn)該問(wèn)題:同樣是利用D2MO和M2D()兩個(gè)函數(shù)實(shí)現(xiàn)。兩個(gè)函數(shù)的思想同利用數(shù)組實(shí)
3、現(xiàn)時(shí)相同。 只是棧具有后進(jìn)先出的性質(zhì),故其用Pop()取數(shù)較數(shù)組的逆向取數(shù)方便些。五、模塊劃分1、用數(shù)組實(shí)現(xiàn)該問(wèn)題:(1) i, j, y, n, s, m, r, reminder, x是定義的全局變量,初始值都為0 ;(2) D2M(int g, int h)是實(shí)現(xiàn)十進(jìn)制數(shù)轉(zhuǎn)換為M進(jìn)制數(shù)的函數(shù);(3) M2D0是實(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ù)的轉(zhuǎn)換;(4) 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)換;(5) vo
4、id main0是主函數(shù),功能是給出測(cè)試的數(shù)據(jù),并在特定條件下調(diào)用D2M() 函數(shù)和M2D0函數(shù)。2、用棧實(shí)現(xiàn)該問(wèn)題:(1) SqStack定義棧,說(shuō)明base為棧底指針,top為棧頂指針,stacksize為棧容 量;(2) int InitStack (SqStack &S)到 int DestroyStack (SqStack &S)六人模塊分別 表示構(gòu)造一個(gè)空棧、用e表示棧元素、插入元素、刪除元素、判斷棧是否為空 以及摧毀棧;(3) SqStack S是指定義棧S;D2M(int a, int b)的功能是將十進(jìn)制數(shù)轉(zhuǎn)換成M進(jìn)制的函數(shù);(5) M2D 0的功能是M進(jìn)制轉(zhuǎn)
5、換為十進(jìn)制的函數(shù);(6) void main0是主函數(shù)。其功能是輸入需要測(cè)試的數(shù)據(jù)以及需要轉(zhuǎn)換的進(jìn)制, 并在特定情形下調(diào)用D2M0函數(shù)和M2D0函數(shù),而且實(shí)現(xiàn)M進(jìn)制數(shù)向任意非M 進(jìn)制數(shù)的轉(zhuǎn)換。六、數(shù)據(jù)結(jié)構(gòu)1、用數(shù)組實(shí)現(xiàn)該問(wèn)題:使用簡(jiǎn)單一維數(shù)組 int aN, int bN, int cN。2、用棧實(shí)現(xiàn)該問(wèn)題:數(shù)據(jù)類型定義如下:typedef struetint *base:int *top;int stacksize;SqStack;七、源程序源程序有兩個(gè),zhshuzu. epp是用數(shù)組實(shí)現(xiàn)該問(wèn)題的程序,而zhstack. epp是用棧實(shí)現(xiàn) 該問(wèn)題的程序:文件 zhshuzu. epp#in
6、clude<stdio.h>#mclude<math.h>#defiiie N 1000int i、j,y,n,s;int mjueniuider;D2M(mt gjnt h)十進(jìn)制數(shù)轉(zhuǎn)換為其他進(jìn)制數(shù)mt cN;1=0;reniuidei-g%h;g=g/h;if(reminder>9)ci=reniHider+55;1+;elseci=reniHider;1+;if(g>0)D2M(g,h);for(j=i-l;j>=0;j-)if(cj>=65)elsereturn 0;M2D(mt e)二進(jìn)制和八進(jìn)制數(shù)轉(zhuǎn)換為十進(jìn)制數(shù),并這轉(zhuǎn)換為其他進(jìn)制數(shù)m
7、t aN;pnntf(”請(qǐng)輸入d進(jìn)制位數(shù):”,m);scanf(”d=&n);pnmf(“請(qǐng)輸入d進(jìn)制的每位并使每位用空格隔開(kāi):”,m);fbr(i=0;i<n;i+)scaufp%d;&ai);fbr(i=n-l;i>=0;i)y+=(mt )pow(e j) * a 1;強(qiáng)制類型轉(zhuǎn)換,以免造成數(shù)據(jù)丟失J卄;pruitfC1請(qǐng)輸出所得的10進(jìn)制的結(jié)果:”);prmtfCi需要轉(zhuǎn)換的進(jìn)制M:”);scanf(”d”,&s);pirntfC1請(qǐng)輸出轉(zhuǎn)換成d進(jìn)制的結(jié)果:”,s);D2M(y,s);return 0;H2D(mt f)十六進(jìn)制數(shù)轉(zhuǎn)換為十進(jìn)制數(shù),并轉(zhuǎn)
8、換為其他進(jìn)制數(shù)mt bN;pirntfC1請(qǐng)輸入d進(jìn)制位數(shù):",m);scanf(”d=&n);pirntfC*請(qǐng)輸入d進(jìn)制的每位并使每位用空格隔開(kāi):”,m);fbr(i=0;i<n;i+)scanfC%xt&bi);fbr(i=n-l;i>=0;i)y+=(int)pow(f,j)*bi;強(qiáng)制類型轉(zhuǎn)換,以免造成數(shù)據(jù)丟失J+;pruitfC1請(qǐng)輸出所得的10進(jìn)制的結(jié)果:”);需要轉(zhuǎn)換的進(jìn)制M:”);scaiif(,%d,&s);pirntfC1請(qǐng)輸出轉(zhuǎn)換成d進(jìn)制的結(jié)果:”,s);D2M(y,s);return 0;void niam()printf
9、(”請(qǐng)給定一個(gè)需轉(zhuǎn)換的進(jìn)制M(2or8orl0orl6):H);scanf(”d”,&m); if(m=2|m=8)二進(jìn)制和八進(jìn)制轉(zhuǎn)換成十進(jìn)制else if(m=16)十六進(jìn)制轉(zhuǎn)換成十進(jìn)制H2D(m);else if(m=10)十進(jìn)制轉(zhuǎn)換成其它進(jìn)制pnntfC請(qǐng)輸入一(d進(jìn)制數(shù):m); scanf(”d 役&x);請(qǐng)輸入需要轉(zhuǎn)換成的進(jìn)制M(2oi8oi scanf(H%d,&r);請(qǐng)輸出轉(zhuǎn)換成4進(jìn)制的結(jié)果:”,r);D2M(x,r); pnntffE);文件 zhstack. cpp#iiiclude<stdio.h>#iiiclude<malloc.
10、h>#mclude<stdlib.h>#iiiclude<math.h>特define STACK_INIT_SIZE 100存儲(chǔ)空間初始分配屋#defiiie STACKINCREMENT 10存儲(chǔ)空間分配增量int e,gx,s,t; /x為要轉(zhuǎn)換的十進(jìn)制數(shù),e為臨時(shí)用的的mt型變量mt r,yj,n;typedef stmctint *base;棧底int *top;棧頂int stacksize; 棧容 量JSqStack;int IiutStack(SqStack &S)構(gòu)造一個(gè)空棧S.base=(mt *)nialloc(STACK_INIT_
11、SIZE *sizeof(iiit); if(!S.base) exit(0);存儲(chǔ)空間失敗S.top=S.base;S.stacksize=STACK_INIT_SIZE;return 0;int GetTop(SqStack S, int &e)若棧不為空,則用e返回S的棧頂元素,并返回0,否則返回1if(S.top=S.base) return 1;e=*(S.top-l);return 0;int Push(SqStack &S , int e)插入元素e為新的棧頂元素if(S.top-S.base>=S.stacksize)棧滿,追加存儲(chǔ)空間S.base=(mt
12、 *)realloc(S.base, (S.stacksize+STACKINCREMENT)*sizeof<mt);if(!S.base) return 1 ;存儲(chǔ)分配失敗S. top=S. ba se+S. stacksize;Sstacksize+=STACKINCREMENT;*S.top+=e;int Pop(SqStack &S, int &e) 返回0,否則返回1 if(S.top=S.base) return 1; e=*S.top;return 0;若棧不空,則刪除S的棧頂元素,用亡返回其值,并int StackEmptv(SqStack S) 若棧空,
13、則返回E否則返回0 if(S.top=S.base)return 1;return 0 ;int DestroyStack(SqStack &S) 銷毀棧 S,棧 S 不再存在 fiee(S.base);S.top=NULL;防止程序后面不小心使用了它S.base=S.top;return 0;SqStack S;定義棧 SD2M(iiit a,int b)while(a)r=a%b;if(r>9) r=+55;Push(Sj);十進(jìn)制轉(zhuǎn)換成其他進(jìn)制的函數(shù)D2MQ壓入棧轉(zhuǎn)換成M進(jìn)制pirntfC1該數(shù)轉(zhuǎn)換成d進(jìn)制的結(jié)呆:”,b); while(! StackEmpty(S)Pop
14、(S,e);/彈出棧if(亡 >=65)elseM2D()其他進(jìn)制轉(zhuǎn)換為十進(jìn)制的函數(shù)M2D()cliar c1000;pnmf(“請(qǐng)輸入需要轉(zhuǎn)換的數(shù)的位數(shù):“);pnmf(“請(qǐng)輸入需要轉(zhuǎn)換的數(shù)的每位并用空格隔開(kāi):”);fbr(i=0;i<n;i+)scanf(H%xH,&ci);Push(S,ci);1=0;while(! StackEmpty(S)Pop(S,e);y+=(mt)pow(m,i) *e;i+;pnntf("轉(zhuǎn)換成10進(jìn)制的結(jié)果是:”);retimi 0;void niaiii()ImtStack(S);構(gòu)造一個(gè)空棧printf(“請(qǐng)輸入需要轉(zhuǎn)換的進(jìn)制M(2or8orl0orl6):n);if(m=10)十進(jìn)制轉(zhuǎn)換成其他進(jìn)制請(qǐng)給定一個(gè)需要轉(zhuǎn)換的10進(jìn)制數(shù):“);scanf("%d”,&x);pnntf(”請(qǐng)輸入需要轉(zhuǎn)換成的進(jìn)制數(shù):”);scanf("%d”,&t);D2M(x,t);if(m=21|m=81|m= 16)其他進(jìn)制轉(zhuǎn)換成十進(jìn)制,且其他任意進(jìn)制的相互轉(zhuǎn)換M2DQ;pimtfC'kii給定要轉(zhuǎn)換成的進(jìn)制M:”);scanf(”cT;&s);D2M(y,s);printfW1);DestrovStack(S); 銷毀
溫馨提示
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 公司背景墻策劃方案
- 公司春季放風(fēng)箏活動(dòng)方案
- 公司游園小活動(dòng)策劃方案
- 公司職稱評(píng)審策劃方案
- 公司群體互動(dòng)策劃方案
- 公司群體性運(yùn)動(dòng)活動(dòng)方案
- 公司節(jié)前大掃除活動(dòng)方案
- 公司知識(shí)跨年活動(dòng)方案
- 公司管理規(guī)范年活動(dòng)方案
- 公司旅游預(yù)熱引流活動(dòng)方案
- 網(wǎng)絡(luò)輿情監(jiān)控管理制度
- 機(jī)器試用擔(dān)保協(xié)議書范本
- 小學(xué)生預(yù)防拐騙教育課件
- 醫(yī)學(xué)影像分析-洞察及研究
- 2025至2030中國(guó)無(wú)線通訊檢測(cè)行業(yè)市場(chǎng)發(fā)展分析及競(jìng)爭(zhēng)格局與投資機(jī)會(huì)報(bào)告
- 2025年上海徐匯區(qū)高一(下)信息技術(shù)合格考試題及答案
- 國(guó)家開(kāi)放大學(xué)《理工英語(yǔ)1》期末機(jī)考題庫(kù)
- 少兒財(cái)商的培養(yǎng)(課堂)課件
- 暨南大學(xué)《馬克思主義基本原理概論》題庫(kù)歷年期末考試真題分類匯編及答案
- 青霉素的發(fā)現(xiàn)與作用課件
- 2018年專利代理師資格考試科目三-專利代理實(shí)務(wù)真題及解析
評(píng)論
0/150
提交評(píng)論