




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、課程設(shè)計(jì)報(bào)告設(shè)計(jì)題目:進(jìn)制轉(zhuǎn)換問題學(xué)生姓名:專 業(yè):信息安全班 級(jí):信息安全10-02學(xué) 號(hào):指導(dǎo)教師:完成日期:2011年12月課程設(shè)計(jì)報(bào)告的內(nèi)容及要求一、問題描述:任意給定一個(gè)M進(jìn)制的數(shù)x ,請(qǐng)實(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ù)組解決,其它方法解決)軟件環(huán)境:Vc6.0編程軟件二、實(shí)驗(yàn)環(huán)境運(yùn)行平臺(tái):Win32硬件:普通個(gè)人pc機(jī)軟件環(huán)境:VC+6.0編程軟件三、解決辦法:、用數(shù)組實(shí)現(xiàn)該問題:ten_else()函數(shù)是實(shí)現(xiàn)十進(jìn)制轉(zhuǎn)換為其它進(jìn)制的函數(shù),先設(shè)置一個(gè)while循環(huán)
2、,當(dāng)十進(jìn)制數(shù)g等于零時(shí)停止,再將輸入的十進(jìn)制數(shù)取首先對(duì)需要轉(zhuǎn)換的進(jìn)制M取余,然后再對(duì)其取整,并將所得的余數(shù)依次存入一個(gè)數(shù)組中,然后逆向取出數(shù)組中的元素,即得到轉(zhuǎn)換后的結(jié)果。將其他進(jìn)制M轉(zhuǎn)換為十進(jìn)制,并將其轉(zhuǎn)換為非M進(jìn)制數(shù)是在主函數(shù)中實(shí)現(xiàn)的。M進(jìn)制轉(zhuǎn)十進(jìn)制則是從該M進(jìn)制數(shù)的最后一位開始算,依次列為第、位并分別乘以M的、次方,將得到的次方相加便得到對(duì)應(yīng)的十進(jìn)制數(shù),再調(diào)用ten_else()函數(shù)將其轉(zhuǎn)換為非M進(jìn)制的數(shù)。實(shí)際上十進(jìn)制起到了一個(gè)橋梁作用。、用棧實(shí)現(xiàn)該問題:與數(shù)組方法核心思想相同,stack定義棧,初始化一個(gè)空棧,然后判斷是否為空,接著是去棧頂元素(用z表示棧頂元素),數(shù)據(jù)入棧,出棧的操作
3、。棧具有后進(jìn)先出的性質(zhì),故其用s.pop()取數(shù)較數(shù)組的逆向取數(shù)較為方便,體現(xiàn)了棧的優(yōu)越性。四、設(shè)計(jì)和編碼的回顧討論和分析(1)函數(shù)ten_else()的作用體現(xiàn)在將任意10進(jìn)制數(shù)轉(zhuǎn)換為非10進(jìn)制數(shù),程序能實(shí)現(xiàn)116進(jìn)制的相互轉(zhuǎn)換。在10進(jìn)制以上的數(shù)需要用字母表示,由此設(shè)計(jì)了switch函數(shù),當(dāng)出現(xiàn)余數(shù)大與10的情況可以調(diào)用相應(yīng)的字母。考慮到最終結(jié)果是所求余數(shù)的倒序,添加新的整型變量j,通過一個(gè)for循環(huán)實(shí)現(xiàn)倒序。(2)編程初期設(shè)計(jì)了else_ten函數(shù),后幾經(jīng)修改將其融入main函數(shù)中較為直觀。(3)當(dāng)輸入10進(jìn)制以下的數(shù)向10進(jìn)制轉(zhuǎn)換時(shí)候較為簡(jiǎn)單,程序中設(shè)計(jì)char型數(shù)組smaxnum來統(tǒng)
4、計(jì)所輸入數(shù)據(jù)的位數(shù),不需要用戶輸入。在求10進(jìn)制的時(shí)候通過for循環(huán)求一個(gè)累和即可。(4)當(dāng)輸入10進(jìn)制以上的數(shù)設(shè)計(jì)字母較為復(fù)雜,通過對(duì)ASC表的理解設(shè)計(jì)程序。(5)在用棧法實(shí)現(xiàn)非10進(jìn)制向10進(jìn)制轉(zhuǎn)換的時(shí)候遇到了些麻煩,當(dāng)輸入8A的時(shí)候程序?qū)?當(dāng)成字符類型,將其編譯為數(shù)字56,導(dǎo)致最終轉(zhuǎn)換結(jié)果出現(xiàn)錯(cuò)誤。于是通過查閱ASC表對(duì)程序做出了修正,設(shè)計(jì)了條件語句if(z<=57)z-=48;if(z>=65)z-=65;z+=10;五、程序框圖開 始輸入要輸入數(shù)的進(jìn)制M及輸入要轉(zhuǎn)換的數(shù)先轉(zhuǎn)換成十進(jìn)制數(shù)X輸出轉(zhuǎn)換結(jié)果MD輸入要轉(zhuǎn)換的進(jìn)制類型轉(zhuǎn)換后的10進(jìn)制取余余數(shù)進(jìn)棧(存入數(shù)組)商為0輸出
5、棧(數(shù)組)及轉(zhuǎn)換結(jié)果六、經(jīng)驗(yàn)和體會(huì)(1)我們?cè)趯懗绦虻臅r(shí)候要多角度考慮問題,比如題目中要求棧法與數(shù)組方法同時(shí)去實(shí)現(xiàn)進(jìn)制轉(zhuǎn)換問題。在編譯過程中我們可以將特殊的問題逐漸的化為一般問題,比如10進(jìn)制轉(zhuǎn)換到16進(jìn)制是,我舉的例子是200轉(zhuǎn)換為C8。(2)通過此次課程設(shè)計(jì)的考驗(yàn),讓我們回顧了算法與數(shù)據(jù)結(jié)構(gòu)這門課的主要內(nèi)容。掌握了如何分別用數(shù)組和棧來實(shí)現(xiàn)數(shù)據(jù)存儲(chǔ)與轉(zhuǎn)換,加深了對(duì)棧的掌握和操作,以及棧先進(jìn)后出的特點(diǎn)。(3)在程序的調(diào)試初期,我們遇到了許多問題,暴露了對(duì)編譯軟件不熟悉的弊端,如設(shè)置斷點(diǎn)和單步調(diào)試,讓我們意識(shí)到要想學(xué)好編程,就得多上機(jī)調(diào)試。一個(gè)星期時(shí)間自己用vc+實(shí)現(xiàn)了進(jìn)制轉(zhuǎn)換問題,收獲很大同時(shí)
6、在編寫代碼過程中也出現(xiàn)了很多的問題,最大的問題就是對(duì)程序設(shè)計(jì)框架結(jié)構(gòu)的不了解,在實(shí)現(xiàn)代碼與功能的連接時(shí)經(jīng)常會(huì)出現(xiàn)各種不同的錯(cuò)誤,在實(shí)現(xiàn)一些功能時(shí)系統(tǒng)常常會(huì)報(bào)錯(cuò),許多錯(cuò)誤不知從哪修改。課程設(shè)計(jì)中,回顧了很多以前的東西,收獲很大。(4)每一次的課程設(shè)計(jì),都是讓我們對(duì)原有的知識(shí)從了解表面到深入本質(zhì),從個(gè)體學(xué)習(xí)到整體把握的跳躍,對(duì)新知識(shí)的汲取,更是把課本的知識(shí)應(yīng)用到實(shí)際中,讓我們了解了我們的學(xué)習(xí)有什么用,能夠解決什么樣的問題,增加了自信和學(xué)習(xí)的動(dòng)力。總之,我們收獲匪淺首先由衷感謝老師提供這樣一個(gè)鍛煉自己的機(jī)會(huì),感受到學(xué)來的知識(shí)不只是用來完成試卷的。一向慣于獨(dú)立思考的自己學(xué)會(huì)了積極的同同學(xué)、朋友交流,取
7、長(zhǎng)補(bǔ)短,共同進(jìn)步。課程設(shè)計(jì)使自己發(fā)現(xiàn)考試并不是最重要,最重要的是能運(yùn)用所學(xué)的知識(shí)。在整個(gè)課程設(shè)計(jì)的學(xué)習(xí)過程中,不再是用學(xué)到的知識(shí)解題,而是在實(shí)際運(yùn)用時(shí)遇到什么學(xué)什么,重在把知識(shí)應(yīng)用于實(shí)際。五、附錄代碼框架/實(shí)現(xiàn)116進(jìn)制之間的相互轉(zhuǎn)化(數(shù)組方法)/實(shí)現(xiàn)116進(jìn)制之間的相互轉(zhuǎn)化(數(shù)組方法)#include<iostream.h>#include<math.h>/#include<stdio.h>#define N 100#definemax_num 10int y,n,s;int m,r,x;void ten_else(int g,int h) /十進(jìn)制數(shù)轉(zhuǎn)換
8、為其他進(jìn)制數(shù)int cN,mod;int i=0,j;while(g!=0)mod = g % h;g = g/h;ci = mod;i+;for(j=i-1;j>=0;j-)switch(cj) case 10: cout<<"A" break;case 11: cout<<"B" break;case 12: cout<<"C" break;case 13: cout<<"D" break;case 14: cout<<"E"
9、 break;case 15: cout<<"F" break;default: cout<<cj; /*void ten_else(int g,int h) /十進(jìn)制數(shù)轉(zhuǎn)換為其他進(jìn)制數(shù)int cN,mod;int i=0,j;while(g!=0)mod = g % h;g = g/h;ci = mod;i+;for(j=i-1;j>=0;j-)if(cj <= 9)cout<<cj;elseprintf("%c",('A'+(cj-10);/cout<<('A'
10、;+(cj-9);*/void main()cout<<"請(qǐng)輸入任意進(jìn)制M:"cin>>m;if(m<10) /29進(jìn)制轉(zhuǎn)換成10進(jìn)制char smax_num;intk,z=0,j=0;/z存儲(chǔ)十進(jìn)制數(shù),j表示輸入m進(jìn)制數(shù)的位數(shù)。for(int i=0;i<max_num;i+)si='u'cout<<"請(qǐng)輸入一個(gè)"<<m<<"進(jìn)制數(shù):"cin>>s;for(i=1;i<max_num;i+)if(si!='u'
11、) j+;k=j;/保存輸入位數(shù)for(i=0;i<j;i+)z=z+(si-'0')*(pow(m,-k);cout<<"轉(zhuǎn)換后的10進(jìn)制數(shù)MD為:"<<z<<endl;cout<<"請(qǐng)輸入需要轉(zhuǎn)換成的進(jìn)制(非M):"cin>>r;cout<<"輸出轉(zhuǎn)換成"<<r<<"進(jìn)制的結(jié)果:"ten_else(z,r);cout<<endl;else if(m<=16 &&
12、 m>=11) /1116進(jìn)制轉(zhuǎn)換成10進(jìn)制char smax_num;intk,z=0,j=0;/z存儲(chǔ)十進(jìn)制數(shù),j表示輸入16進(jìn)制數(shù)的位數(shù)。for(int i=0;i<max_num;i+)si='u'cout<<"請(qǐng)輸入一個(gè)"<<m<<"進(jìn)制數(shù):"cin>>s;for(i=1;i<max_num;i+)if(si!='u') j+;k=j;/保存輸入位數(shù)for(i=0;i<j;i+)if(si>='A'&&s
13、i<='F')z=z+(si-'A'+10)*(pow(m,-k); if(si>='a'&&si<='f')z=z+(si-'a'+10)*(pow(m,-k); if(si>='0'&&si<='9')z=z+(si-'0')*(pow(m,-k);cout<<"轉(zhuǎn)換后的10進(jìn)制數(shù)為:"<<z<<endl;cout<<"請(qǐng)輸入
14、需要轉(zhuǎn)換成的進(jìn)制(非M):"cin>>r;cout<<"輸出轉(zhuǎn)換成"<<r<<"進(jìn)制的結(jié)果:"ten_else(z,r);cout<<endl;else if(m=10) /十進(jìn)制轉(zhuǎn)換成其它進(jìn)制int x;cout<<"請(qǐng)輸入一個(gè)10進(jìn)制數(shù):"cin>>x;cout<<"請(qǐng)輸入需要轉(zhuǎn)換成的進(jìn)制(非M):"cin>>r;if(r<=10)cout<<"輸出轉(zhuǎn)換成"
15、<<r<<"進(jìn)制的結(jié)果:"ten_else(x,r);cout<<endl; elsecout<<"輸出轉(zhuǎn)換成"<<r<<"進(jìn)制的結(jié)果:"ten_else(x,r);cout<<endl; /實(shí)現(xiàn)116進(jìn)制之間的相互轉(zhuǎn)化(堆棧方法)#include <iostream.h>#include <math.h>enum error_codesuccess,overflow,underflow;const maxlen=100;int
16、 a,n,h;class stackpublic:stack();bool empty()const;bool full()const;error_code get_top(int &x)const; error_code push(int x);error_code pop();int seesize()return count;private:int count;int datamaxlen;/初始化鏈棧stack:stack()count = 0;bool stack:empty()const /判斷棧是否為空if(count = 0) return true;return fa
17、lse;error_code stack:get_top(int &x)const /取棧頂元素if ( empty() ) return underflow;elsex = datacount - 1;return success;error_code stack:push(int x) /入棧if( full() ) return underflow;datacount = x;count +;return success;error_code stack:pop() /出棧if ( empty() ) return underflow;count -;return success
18、;bool stack:full()constif( count = maxlen ) return true;return false;void ten_else(int g,int h) /十進(jìn)制數(shù)g轉(zhuǎn)換為其他進(jìn)制(h進(jìn)制)數(shù)int a,x;int mod;stack s;mod = g % h;if(mod>9)a=mod+55;if(a>=65)switch(a - 55) case 10:cout<<"A"break; case 11:cout<<"B"break;case 12:cout<<&q
19、uot;C"break;case 13:cout<<"D"break;case 14:cout<<"E"break;case 15: cout<<"F"break;default:break;elses.push(a); elses.push(mod);g = g/h;if(g>0) ten_else(g,h);while(!s.empty()s.get_top(x);s.pop();cout<<x;int main()int m,a,z,sum;int i = 1;int j = 0;sum=0;stack s;cout<<"請(qǐng)輸入任意進(jìn)制M(116):"cin>>m;cout<<"請(qǐng)輸入"<<m<<"進(jìn)制的數(shù):"if(m = 10)int x;cin>>x;cout<<"10進(jìn)制數(shù)MD即為:"<<x<<endl;cout<<"輸入最終轉(zhuǎn)化的進(jìn)制(非M):"cin>>h;ten_else(x
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(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)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 向銀行抵押土地合同范本
- 中介委托租房電子合同范例
- 看圖寫話在初中英語教學(xué)中的運(yùn)用研究
- 某手足口病高發(fā)縣手足口病流行影響因素研究
- 房地產(chǎn)企業(yè)納稅籌劃風(fēng)險(xiǎn)防控研究
- 小學(xué)班主任教育工作以及心理健康教育對(duì)策
- 游戲教學(xué)應(yīng)用于小學(xué)英語詞匯教學(xué)中的幾點(diǎn)思考
- 口罩外銷合同范本
- 產(chǎn)品研發(fā)測(cè)試合同范例
- 養(yǎng)老贈(zèng)與合同范例
- 蔬菜種植基地管理手冊(cè)
- 2024解析:第二十章電與磁-講核心(解析版)
- 2023年會(huì)計(jì)基礎(chǔ)各章節(jié)習(xí)題及答案
- 《中小學(xué)教師人工智能素養(yǎng)框架與實(shí)踐路徑研究》專題講座
- DB4101T 25.2-2021 物業(yè)服務(wù)規(guī)范 第2部分:住宅
- 舞臺(tái)設(shè)計(jì)課件教學(xué)課件
- 六年級(jí)數(shù)學(xué)下冊(cè) 負(fù)數(shù)練習(xí)題(人教版)
- 2024-2030年中國(guó)康復(fù)醫(yī)院行業(yè)管理模式分析及發(fā)展規(guī)劃研究報(bào)告
- 斐訊PSG1218路由器的上網(wǎng)設(shè)置教程
- 重大事故隱患判定標(biāo)準(zhǔn)
- 人教版(PEP)五年級(jí)英語下冊(cè)第一單元測(cè)試卷-Unit 1 My day 含答案
評(píng)論
0/150
提交評(píng)論