數據結構課程設計數制轉換_第1頁
數據結構課程設計數制轉換_第2頁
數據結構課程設計數制轉換_第3頁
數據結構課程設計數制轉換_第4頁
數據結構課程設計數制轉換_第5頁
免費預覽已結束,剩余12頁可下載查看

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

1、1前言目錄錯誤!未定義書簽。設計背景和意義數據結簡介錯誤!未定義書簽。錯誤!未定義書簽。選擇算法的原因錯誤!未定義書簽。設計的原理和內容錯誤!未定義書簽。2正文錯誤!未定義書簽。設計的目的和意義.目標和總體方案.設計方法和內容.模塊劃分.主要程序模塊.附錄錯誤!未定義書簽。錯誤!未定義書簽。錯誤!未定義書簽。錯誤!未定義書簽。錯誤!未定義書簽。錯誤!未定義書簽。1刖百設計背景和意義數據結構簡介數據結構是計算機程序設計的重要理論設計基礎,是一門綜合性的專業(yè)基礎科。數據結構是研究數據之間的相互關系,也即數據的組織形式的一門科學。它不僅是計算機學科的核心課程,數據結構是計算機存儲、組織數據的方式。通

2、常情況下,精心選擇的數據結構可以帶來更高的運行或者存儲效率的算法。在計算機科學中,“數據結構”不僅是一般程序設計的基礎,而且是設計和實現編譯程序、操作系統(tǒng)、數據庫系統(tǒng)及其他系統(tǒng)程序和大型應用程序的重要基礎。選擇算法的原因在許多類型的程序的設計中,數據結構的選擇是一個基本的設計考慮因素。許多大型系統(tǒng)的構造經驗表明,系統(tǒng)實現的困難程度和系統(tǒng)構造的質量都嚴重的依賴于是否選擇了最優(yōu)的數據結構。許多時候,確定了數據結構后,算法就容易得到了。有些時候事情也會反過來,我們根據特定算法來選擇數據結構與之適應。不論哪種情況,選擇合適的數據結構都是非常重要的。設計的原理和內容設計了一個10進制轉換其它進制(36進

3、制以內)及逆轉換的軟件,該軟件具有簡單的將10進制數車t換成2、8、16進制數以及較復雜的高進制數的轉換和逆轉功能。本軟件采用C語言編寫以VC+乍為軟件開發(fā)環(huán)境,采用順序棧存儲方式來存儲運算中的數位,借助棧后進先出的特點,易于結果輸出。操作簡單,界面清晰,易于為用戶所接受。2正文設計的目的和意義我們是計算機科學與技術專業(yè)的本科生,數據結構是我們重要的必修課程。當代社會學要大學培養(yǎng)出理論扎實,動手實踐能力強的大學生。所以,本次課程設計的目的就在于通過一次實踐性的活動加深對這門課程的理解,使我們在感性的認識上進一步升華為理性的認識。為后繼課程的學習打下堅實的基礎。通過本次數據結構課程設計,我們基本

4、上掌握了課程設計流程,還掌握了一些知識和技能,這對于我們以后對于數據結構的學習有了很大的幫助和提高,加深了我們對數據結構的理解,為今后的學習打下了堅實的基礎。同時也提高了我們對于編程這方面的能力。目標和總體方案本次設計的目標在于設計出一個能夠實現數制轉換的程序,于是特制訂了一個總體的方案:程序的設計第一步:查閱有關數據結構數制轉換操作的資料,用半天的時間。第二步:設計這個項目的整體架構和算法。用一到兩天的時間。第三步:使用C語言程序設計程序語言進行算法的描述。兩天的時間。程序的調試進行程序的調試。用一天。最后,我在完整的整理一遍,完成課設。設計方法和內容模塊劃分用數組實現該問題(1) i,j,

5、y,n,s,m,r,reminder,x是定義的全局變量,初始值都為0;(2) D2M(intg,inth)是實現十進制數轉換為M進制數的函數;(3) M2D()是實現M(僅指二進制數和八進制數)進制數轉換為十進制數的函數,并在其中調用D2M(intg,inth)實現向非M進制數的轉換;(4) H2D(intf)是實現十六進制數轉換為十進制數的函數,并在其中調用D2M(intD2M()函數g,inth)實現向非十六進制數的轉換;(5) voidmain()是主函數,功能是給出測試的數據,并在特定條件下調用和M2D()函數。用棧實現該問題(1) SqStack定義棧,說明base為棧底指針,to

6、p為棧頂指針,stacksize為棧容量;(2) intInitStack(SqStack&S)到intDestroyStack(SqStack&S)六大模塊分別表示構造一個空棧、用e表示棧元素、插入元素、刪除元素、判斷棧是否為空以及摧毀棧;(3) SqStackS是指定義棧S;(4) D2M(inta,intb)的功能是將十進制數轉換成M進制的函數;(5) M2D()的功能是M進制轉換為十進制的函數;(6) voidmain()是主函數。其功能是輸入需要測試的數據以及需要轉換的進制,并在特定情形下調用D2M()函數和M2D()函數,而且實現M進制數向轉任意非M進制數的換。主要

7、程序模塊(1):D2M(intg,inth)intcN;i=0;reminder=g%h;g=g/h;if(reminder>9)ci=reminder+55;i+;elseci=reminder;i+;if(g>o)D2M(g,h);for(j=i-1;j>=0;j-)if(cj>=65)printf("%c",cj);elseprintf("%d",cj);return0;)自定義函數D2Mffl于在用數組實現該問題的程序中十進制數轉換為其他進制數(2):M2D(inte)intaN;printf("請輸入d進制位數

8、:",m);scanf("%d",&n);printf("請輸入d進制的每位并使每位用空格隔開:",m);for(i=0;i<n;i+)2李春葆,曾慧,張植民編著.數據Z聲內程工皿題典Y清華大學出版社,2002年3郭翠英編著.C語言課程設計案例揶f.中國水利水電出4K2004年:轉換的數的位數:5屏麒m位”下二格限升7迸制的結果是:工目72四換附米制M汨iy+=jLnuheutocontinuieip8oi*10oi*165構(C語言版).清華大學出版社,2006數組附錄用數組實現:#include<>#include

9、<>#defineN1000inti,j,y,n,s;intm,r,reminder;intx;/全局變量默認初始化為0,不必再賦0了1988年4譚浩強編著.C程序設計.清華大學出版社,2005年5許卓群,張乃孝,楊冬青,唐世渭編著.數據結構.高等教育出版社,6晉良潁編著.數據結構.人民郵電出版社,2002年D2M(intg,inth)/十進制數轉換為其他進制數(intcN;i=0;reminder=g%h;g=g/h;if(reminder>9)(ci=reminder+55;i+;else(ci=reminder;i+;if(g>0)D2M(g,h);for(j=i

10、-1;j>=0;j-)if(cj>=65)printf("%c",cj);elseprintf("%d",cj);return0;M2D(inte)/二進制和八進制數車t換為十進制數,并這轉換為其他進制數(intaN;printf("請輸入d進制位數:",m);scanf("%d",&n);printf("請輸入d進制的每位并使每位用空格隔開:",m);for(i=0;i<n;i+)scanf("%d",&ai);for(i=n-1;i>

11、;=0;i-)(y+=(int)pow(e,j)*ai;/強制類型轉換,以免造成數據丟失j+;printf("請輸出所得的10進制的結果:");printf("%d",y);printf("n需要轉換的進制M:");scanf("%d",&s);printf("請輸出轉換成d進制的結果:",s);D2M(y,s);return0;H2D(intf)/十六進制數轉換為十進制數,并轉換為其他進制數(intbN;printf("請輸入d進制位數:",m);scanf(&qu

12、ot;%d",&n);printf("請輸入d進制的每位并使每位用空格隔開:",m);for(i=0;i<n;i+)scanf("%x”,&bi);for(i=n-1;i>=0;i-)y+=(int)pow(f,j)*bi;/強制類型轉換,以免造成數據丟失j+;printf("請輸出所得的10進制的結果:");printf("%d",y);printf("n需要轉換的進制M:");scanf("%d",&s);printf("請輸

13、出轉換成d進制的結果:",s);D2M(y,s);return0;voidmain()printf("請給定一個需轉換的進制M(2or80r100r16):");scanf("%d",&m);if(m=2|m=8)/二進制和八進制轉換成十進制M2D(m);elseif(m=16)/十六進制轉換成十進制H2D(m);elseif(m=10)/十進制轉換成其它進制printf("請輸入一個d進制數:",m);scanf("%d",&x);printf("請輸入需要轉換成的進制M(2o

14、r80r16):");scanf("%d",&r);printf("請輸出轉換成c®制的結果:",r);D2M(x,r);printf("n");用棧實現:#include<>#include<>#include<>#include<>#defineSTACK_INIT_SIZE100/存儲空間初始分配量#defineSTACKINCREMENT10/存儲空間分配增量inte,m,x,s,t;/x為要轉換的十進制數,e為臨時用的的int型變量intr,y,i,

15、n;typedefstructint*base;/棧底int*top;/棧頂intstacksize;/棧容量SqStack;intInitStack(SqStack&S)/構造一個空棧=(int*)malloc(STACK_INIT_SIZE*sizeof(int);if(!exit(0);/存儲空間失敗=STACK_INIT_SIZE;return0;)intGetTop(SqStackS,int&e)/若棧不為空,則用e返回S的棧頂元素,并返回0,否則返回1if=return1;e=*;return0;)intPush(SqStack&S,inte)/插入元素e為

16、新的棧頂元素if/棧滿,追加存儲空間=(int*)realloc,+STACKINCREMENT)*sizeof(int);if(!return1;/存儲分配失敗=+;+=STACKINCREMENT;)*+=e;return0;)intPop(SqStack&S,int&e)/若棧不空,則刪除S的棧頂元素,用e返回其值,并返回0,否則返回1if=return1;e=*;return0;intStackEmpty(SqStackS)/若???,則返回1,否則返回0十進制轉換成其他進制的函數D2M()壓入棧a/=b;/轉換成M進制if=return1;return0;intDest

17、royStack(SqStack&S)/銷毀棧S,棧S不再存在free;=NULL;/防止程序后面不小心使用了它=;return0;)SqStackS;/定義棧SD2M(inta,intb)/while(a)r=a%b;if(r>9)r=r+55;Push(S,r);/printf("該數轉換成d進制的結果:",b);while(!StackEmpty(S)(Pop(S,e);/彈出棧if(e>=65)printf("%c",e);elseprintf("%d",e);)return0;)M2D()/其他進制轉換為

18、十進制的函數M2D()(charc1000;printf("請輸入需要轉換的數的位數:");scanf("%d",&n);printf("請輸入需要轉換的數的每位并用空格隔開:");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+;)printf("轉換成10進制的Z果是:");printf("%d",y);return0;)voidmain()(InitStack(S);/構造一個空棧printf("請輸入需要轉換的進制M(2or80r100r16):");scanf("%d",&m);if(m=10)/十進制轉換成其他進制(printf("請給定一

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論