版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、<p> 課 程 設(shè) 計(jì)</p><p><b> 進(jìn)制轉(zhuǎn)換</b></p><p> 課程設(shè)計(jì)名稱: 數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì) </p><p> 專 業(yè) 班 級(jí) : </p><p> 學(xué) 生 姓 名 : </p&
2、gt;<p> 學(xué) 號(hào) : </p><p> 指 導(dǎo) 教 師 : </p><p> 設(shè) 計(jì) 時(shí) 間 : </p><p> 計(jì)算機(jī) 專業(yè)課程設(shè)計(jì)任務(wù)書</p><p><b> 目
3、錄</b></p><p><b> 一、轉(zhuǎn)換概述3</b></p><p><b> 1、需求分析3</b></p><p><b> 2、概要設(shè)計(jì)3</b></p><p><b> 3.詳細(xì)設(shè)計(jì)5</b></p>
4、;<p> 1.十進(jìn)制轉(zhuǎn)化為任意進(jìn)制函數(shù):5</p><p> 2.任意進(jìn)制轉(zhuǎn)化十進(jìn)制函數(shù):6</p><p><b> 3.程序流程圖7</b></p><p><b> 4.運(yùn)行環(huán)境11</b></p><p> 5.開發(fā)工具和編程語言12</p>
5、<p><b> 二、數(shù)學(xué)原理13</b></p><p> 十進(jìn)制轉(zhuǎn)二進(jìn)制:13</p><p> 十進(jìn)制轉(zhuǎn)八進(jìn)制:13</p><p> 十進(jìn)制轉(zhuǎn)十六進(jìn)制:14</p><p> 二進(jìn)制轉(zhuǎn)十進(jìn)制:14</p><p> 二進(jìn)制轉(zhuǎn)八進(jìn)制:14</p>
6、;<p> 二進(jìn)制轉(zhuǎn)十六進(jìn)制:15</p><p> 八進(jìn)制轉(zhuǎn)十進(jìn)制:15</p><p> 八進(jìn)制轉(zhuǎn)十六進(jìn)制:16</p><p> 十六進(jìn)制轉(zhuǎn)二進(jìn)制:16</p><p> 十六進(jìn)制轉(zhuǎn)八進(jìn)制:16</p><p><b> 三、程序編碼17</b><
7、/p><p><b> 測(cè)試結(jié)果22</b></p><p><b> 參考文獻(xiàn)25</b></p><p><b> 四、心得體會(huì)26</b></p><p><b> 一、轉(zhuǎn)換概述</b></p><p><b&
8、gt; 1、需求分析</b></p><p> 進(jìn)制數(shù)制是人們利用符號(hào)進(jìn)行計(jì)數(shù)的科學(xué)方法。數(shù)制有很多種,在計(jì)算機(jī)中常用的數(shù)制有:十進(jìn)制,二進(jìn)制、八進(jìn)制和十六進(jìn)制。十六進(jìn)制數(shù)有兩個(gè)基本特點(diǎn):它由十六個(gè)字符0~9以及A,B,C,D,E,F(xiàn)組成(它們分別表示十進(jìn)制數(shù)0~15),十六進(jìn)制數(shù)運(yùn)算規(guī)律是逢十六進(jìn)一。</p><p><b> 要求: </b>&l
9、t;/p><p> 輸入一個(gè)十進(jìn)制數(shù)N,將它轉(zhuǎn)換成R進(jìn)制數(shù)輸出,并可以進(jìn)行逆轉(zhuǎn)換。</p><p> 輸入數(shù)據(jù)包含多個(gè)測(cè)試實(shí)例,每個(gè)測(cè)試實(shí)例包含兩個(gè)整數(shù)N(32位整數(shù))和R(2<=R<=16, R<>10)。</p><p> 為每個(gè)測(cè)試實(shí)例輸出轉(zhuǎn)換后的數(shù),每個(gè)輸出占一行。如果R大于10,則對(duì)應(yīng)的數(shù)字規(guī)則參考16進(jìn)制(比如,10用A表示,等
10、等)。</p><p><b> 界面友好。</b></p><p><b> 2、概要設(shè)計(jì)</b></p><p> 數(shù)制轉(zhuǎn)換器程序是要求任意兩種數(shù)間的相互轉(zhuǎn)化,本次課程設(shè)計(jì)以任意進(jìn)制間轉(zhuǎn)換為中心實(shí)現(xiàn)二進(jìn)制、八進(jìn)制、十進(jìn)制、十六進(jìn)制、十八進(jìn)制之間的相互轉(zhuǎn)化。對(duì)輸入的任意進(jìn)制的數(shù)字進(jìn)行轉(zhuǎn)換,實(shí)現(xiàn)常見進(jìn)制間的轉(zhuǎn)換以及用
11、戶自定義需要轉(zhuǎn)換的目標(biāo)進(jìn)制數(shù),這樣大大提高了本程序的用途。常見的二進(jìn)制、八進(jìn)制、十進(jìn)制、十六進(jìn)制、十六進(jìn)制之間的固定轉(zhuǎn)換,其轉(zhuǎn)換方式大同小異,從低進(jìn)制數(shù)向高進(jìn)制數(shù)轉(zhuǎn)換進(jìn)行乘數(shù)累加,反之則逐步求余,最終進(jìn)行分布計(jì)算得到想要的結(jié)果,對(duì)以上思想進(jìn)行擴(kuò)展,使其不僅僅局限于那些常見進(jìn)制間的轉(zhuǎn)換,更多的應(yīng)用到任意進(jìn)制之間的轉(zhuǎn)換。本次系統(tǒng)程序,主要有兩大模塊組成,即任意進(jìn)制轉(zhuǎn)換為十進(jìn)制、十進(jìn)制轉(zhuǎn)換為任意進(jìn)制,這兩部分共同組成了對(duì)任意進(jìn)制數(shù)的轉(zhuǎn)換的實(shí)現(xiàn)
12、,通過菜單選擇,讓用戶實(shí)現(xiàn)自己想要的結(jié)果,同時(shí)也在程序的簡(jiǎn)潔上有所壓減,達(dá)到簡(jiǎn)潔的應(yīng)用程序?qū)崿F(xiàn)相對(duì)較復(fù)雜的功能。最后打印輸出結(jié)果,清屏執(zhí)行下次任務(wù)。</p><p> 該程序包括七個(gè)子函數(shù)模塊,其中菜單函數(shù)模塊定義為整型,其余字符轉(zhuǎn)換函數(shù)處理模塊都根據(jù)函數(shù)所需定義數(shù)據(jù)類型。數(shù)制轉(zhuǎn)換器處理系統(tǒng)中用數(shù)組來儲(chǔ)存處十進(jìn)制以外的數(shù),將一個(gè)指定進(jìn)制的數(shù),從低到低高一位一位取出,并計(jì)算出每位的十進(jìn)制值,然后乘以其數(shù)基的特定冪
13、指數(shù),得出這一位數(shù)的十進(jìn)制值,將所有各位的十進(jìn)制值相加得出這個(gè)數(shù)的十進(jìn)制值,然后再將該十進(jìn)制數(shù)轉(zhuǎn)換為指定數(shù)制的數(shù),此過程采用求余法進(jìn)行,用這個(gè)十進(jìn)制數(shù)作為被除數(shù),用指定的數(shù)基作除數(shù),連續(xù)求余,得出的余數(shù)依由個(gè)位到十位等的順序組成新數(shù),即得指定數(shù)制的數(shù)。</p><p> ?。?)邏輯設(shè)計(jì)如圖所示: </p><p><b> 圖2.1</b></p>
14、<p> 程序中各函數(shù)簡(jiǎn)單說明見如表1、1函數(shù)說明所示:</p><p><b> 表2.1</b></p><p><b> 3.詳細(xì)設(shè)計(jì)</b></p><p> 1.十進(jìn)制轉(zhuǎn)化為任意進(jìn)制函數(shù):</p><p> 十進(jìn)制整數(shù)num轉(zhuǎn)換為任意(x)進(jìn)制整數(shù)采用"除x取
15、余,逆序排列法。具體做法是:用x去除十進(jìn)制整數(shù),可以得到一個(gè)商和余數(shù);再用x去除商,又會(huì)得到一個(gè)商和余數(shù),如此進(jìn)行,直到商為一時(shí)為止,然后把先得到的余數(shù)作為x進(jìn)制數(shù)的低位有效位,后得到的余數(shù)作為x進(jìn)制數(shù)的高位有效位,結(jié)構(gòu)圖如圖3.4所示:</p><p> int ANY_ten(int x,int num)</p><p><b> { </b></p&g
16、t;<p> int i,j=0;</p><p><b> int s=0;</b></p><p> for(i=1;num!=0;i*=x)</p><p><b> {</b></p><p> if(num%10>(x-1))</p><p
17、><b> {</b></p><p><b> j=1;</b></p><p><b> break;</b></p><p><b> }</b></p><p><b> else</b></p>
18、<p><b> {</b></p><p> s+=(num%10)*i;</p><p> num=num/10;</p><p><b> }</b></p><p><b> }</b></p><p><b>
19、 if(j==1)</b></p><p> printf("原數(shù)據(jù)出錯(cuò)!請(qǐng)重新輸入:\n");</p><p><b> else</b></p><p> printf("轉(zhuǎn)換為十進(jìn)制:%d\n\n",s);</p><p><b> return
20、 s;</b></p><p><b> }</b></p><p> 2.任意進(jìn)制轉(zhuǎn)化十進(jìn)制函數(shù):</p><p> 從最后一位開始算,依次列為第0、1、2...位第n位的數(shù)乘以任意進(jìn)制數(shù)y的n次方得到的結(jié)果相加結(jié)構(gòu)圖如圖3.5所示:</p><p> void ten_ANY(int num,in
21、t y)</p><p><b> {</b></p><p><b> int i;</b></p><p> int arr[30];</p><p> for(i=0;;i++)</p><p><b> {</b></p>
22、<p> arr[i]=num%y;</p><p> num=num/y;</p><p> if(num==0)</p><p><b> {</b></p><p><b> break;</b></p><p><b> }</
23、b></p><p><b> }</b></p><p> printf("轉(zhuǎn)換為 %d 進(jìn)制:",y);</p><p> for(;i>=0;i--)</p><p><b> {</b></p><p> switch(arr
24、[i])</p><p><b> {</b></p><p> case 10 : printf("A");break;</p><p> case 11 :printf("B");break;</p><p> case 12 :printf("C"
25、);break;</p><p> case 13 :printf("D");break;</p><p> case 14 :printf("E");break;</p><p> case 15 :printf("F");break;</p><p> case 16 :
26、printf("G");break;</p><p> case 17 :printf("H");break;</p><p> case 18 :printf("I");break;</p><p> case 19 :printf("J");break;</p>
27、<p> default :printf("%d",arr[i]);</p><p><b> }</b></p><p><b> }</b></p><p> printf("\n\n");</p><p><b> }<
28、;/b></p><p><b> 3.程序流程圖</b></p><p> (1)主函數(shù)main()流程圖,如圖3.1所示:</p><p> 圖3.1 main函數(shù)流程圖</p><p> ?。?)主菜單list2()流程圖,如圖3.2所示:</p><p> 圖3.2 list
29、2()函數(shù)流程圖</p><p> ?。?)常見進(jìn)制轉(zhuǎn)換菜單list1()函數(shù)流程圖,如圖3.3所示:</p><p> 圖3.3常見進(jìn)制轉(zhuǎn)換菜單list1()函數(shù)流程圖</p><p> ?。?)十進(jìn)制轉(zhuǎn)換為任意進(jìn)制函數(shù)ten_ANY ()函數(shù)流程圖,如圖3.4所示:</p><p> 圖3.4十進(jìn)制轉(zhuǎn)換為任意進(jìn)制函數(shù)ten_ANY (
30、)函數(shù)流程圖</p><p> ?。?)任意進(jìn)制轉(zhuǎn)換為十進(jìn)制函數(shù)ANY _ch()函數(shù)流程圖,如圖3.5所示:</p><p> 圖3.5任意進(jìn)制數(shù)之間的轉(zhuǎn)換ANY_ch ()函數(shù)流程圖</p><p><b> 4.運(yùn)行環(huán)境</b></p><p><b> 軟件環(huán)境</b></p&g
31、t;<p> 操作系統(tǒng):Windows7</p><p><b> 硬件環(huán)境</b></p><p> 處理器:Intel Pentium 166MX 或更高</p><p><b> 內(nèi)存:32MB以上</b></p><p> 硬盤空間:1GB以上</p>
32、<p> 顯卡:SVGA 顯示適配</p><p> 5.開發(fā)工具和編程語言</p><p> Microsoft visual C++</p><p><b> C語言</b></p><p><b> 二、數(shù)學(xué)原理 </b></p><p>
33、 實(shí)現(xiàn)進(jìn)制轉(zhuǎn)換需要編個(gè)函數(shù)(進(jìn)制轉(zhuǎn)換器),每一函數(shù)完成相應(yīng)進(jìn)制的轉(zhuǎn)換,下面是各個(gè)進(jìn)制之間轉(zhuǎn)換的數(shù)學(xué)方法的算法。 </p><p><b> 十進(jìn)制轉(zhuǎn)二進(jìn)制: </b></p><p> 十進(jìn)制數(shù)轉(zhuǎn)換成二進(jìn)制數(shù),是一個(gè)連續(xù)除2的過程;把要轉(zhuǎn)換的數(shù),除以2,得到商和余數(shù),將商繼續(xù)除以2,直到商為0.最后將所有余數(shù)倒序排列,得到數(shù)就是轉(zhuǎn)換結(jié)果。
34、160;例如: </p><p> 302/2 = 151 余0 </p><p> 151/2 = 75 余1 </p><p> 75/2 = 37 余1</p><p> 37/2 =
35、160;18 余1</p><p> 18/2 = 9 余0 </p><p> 9/2 = 4 余1</p><p> 4/2 = 2 余0</p><p> 2/2 = 1 余0 &
36、#160;</p><p> 所以302轉(zhuǎn)換為2進(jìn)制,結(jié)果:100101110 . </p><p><b> 十進(jìn)制轉(zhuǎn)八進(jìn)制: </b></p><p> 十進(jìn)制數(shù)轉(zhuǎn)換成八進(jìn)制的方法和轉(zhuǎn)換為二進(jìn)制的方法類似,唯一變化:除數(shù)由2變成8。 例如: </p><
37、p> 120/8=15余0 </p><p><b> 15/8=1余7</b></p><p><b> 1/8=0余1 </b></p><p> 所以120轉(zhuǎn)換為8進(jìn)制,結(jié)果:170. </p><p> 十進(jìn)制轉(zhuǎn)十六進(jìn)制:
38、</p><p> 十進(jìn)制數(shù)轉(zhuǎn)換成十六進(jìn)制數(shù)的方法和轉(zhuǎn)換為二進(jìn)制的方法類似,唯一變化:除數(shù)由2變成16。 不過,十六進(jìn)制數(shù):(10~15)是用英文大寫字母(A~F)表示。 例如: </p><p> 123/16=7余11 </p><p> 所以123轉(zhuǎn)換為16進(jìn)制,結(jié)果:7B. </p&g
39、t;<p><b> 二進(jìn)制轉(zhuǎn)十進(jìn)制: </b></p><p> 二進(jìn)制數(shù)轉(zhuǎn)換為十進(jìn)制數(shù)按權(quán)展開,第0位的權(quán)值是2的0次方,第1位的權(quán)值是2的1次方······ 例如: </p><p> 1010轉(zhuǎn)換成十進(jìn)制數(shù):</p><p>
40、 第0位:0*2^0=0 </p><p> 第1位:1*2^1=2</p><p> 第2位:0*2^2=0</p><p> 第3位:1*2^3=8</p><p> 所以1010轉(zhuǎn)換成十進(jìn)制數(shù),結(jié)果:0+2+0+8=10. </p><p><b> 二進(jìn)制轉(zhuǎn)八進(jìn)制:
41、60;</b></p><p> 利用421,從后往前每三位一組,缺位補(bǔ)0,然后按十進(jìn)制方法進(jìn)行轉(zhuǎn)換。 例如: (11001) 001=1 011=3 </p><p> 然后將結(jié)果按從下往上頂順序書寫:31. </p><p> 二進(jìn)制轉(zhuǎn)十六進(jìn)制: </p>&l
42、t;p> 二進(jìn)制和十六進(jìn)制的互相轉(zhuǎn)換比較重要。不過這二者的轉(zhuǎn)換卻不用計(jì)算;利用8421,對(duì)于任意一個(gè)4位的二進(jìn)制數(shù),都可以很快算出它對(duì)應(yīng)的10進(jìn)制值。 例如: </p><p> 1111=8+4+2+1=15 </p><p> 又因?yàn)槭M(jìn)制數(shù):10~15用大寫字母A~F表示,所以15為F. </p><
43、;p><b> 八進(jìn)制轉(zhuǎn)二進(jìn)制: </b></p><p> 利用421;從后往前每三位一組,缺位處用0填補(bǔ),然后按十進(jìn)制方法進(jìn)行轉(zhuǎn)化; </p><p> 例如: 1—>001 3-?011 </p><p> 然后我們將結(jié)果按從下往上的順序書寫就是
44、:11001,那么這個(gè)11001就是八進(jìn)制31的二進(jìn)制形式。 </p><p><b> 八進(jìn)制轉(zhuǎn)十進(jìn)制: </b></p><p> 八進(jìn)制就是逢8進(jìn)1,八進(jìn)制數(shù)采用 0~7這八數(shù)來表達(dá)一個(gè)數(shù);八進(jìn)制數(shù)第0位的權(quán)值為8的0次方,第1位權(quán)值為8的1次方,第2位權(quán)值為8的2次方…… 例如: </p>&
45、lt;p> 1507轉(zhuǎn)換成十進(jìn)制數(shù):</p><p> 第0位:7*8^0=7</p><p> 第1位:0*8^1=0 </p><p> 第2位:5*8^2=320 </p><p> 第3位:1*8^3=512 </p><p> 所以換算成十進(jìn)制:7+0+320+
46、512=839 .</p><p> 八進(jìn)制轉(zhuǎn)十六進(jìn)制: </p><p> 八進(jìn)制轉(zhuǎn)換成十六進(jìn)制:有兩種方法:一種是先將八進(jìn)制轉(zhuǎn)換成二進(jìn)制,在將二進(jìn)制轉(zhuǎn)換成十六進(jìn)制。另一種方法是將八進(jìn)制轉(zhuǎn)換成十進(jìn)制,在將十進(jìn)制轉(zhuǎn)換成十六進(jìn)制。 </p><p> 十六進(jìn)制轉(zhuǎn)二進(jìn)制: </p>&l
47、t;p> 上面已經(jīng)提到二進(jìn)制轉(zhuǎn)換成十六進(jìn)制的方法,記住8421,每一位的權(quán)值,所以十六進(jìn)制轉(zhuǎn)成二進(jìn)制就是一段四位分別轉(zhuǎn)成二進(jìn)制。 </p><p> 例如:F?1111 ,D?1101,A?1010,5?0101. </p><p> 十六進(jìn)制轉(zhuǎn)八進(jìn)制: </p><p> 十六進(jìn)制轉(zhuǎn)八進(jìn)制也不能直接轉(zhuǎn)換,需要將
48、十六進(jìn)制轉(zhuǎn)換成十進(jìn)制或者二進(jìn)制,才能由十進(jìn)制或者二進(jìn)制轉(zhuǎn)換成八進(jìn)制。 </p><p> 十六進(jìn)制轉(zhuǎn)十進(jìn)制: </p><p> 16進(jìn)制就是逢16進(jìn)1,但我們只有0~9這十個(gè)數(shù)字,所以我們用A,B,C,D,E,F(xiàn)這六個(gè)字母來分別表示10,11,12,13,14,15。 </p><p> 十六進(jìn)制數(shù)的第0位的權(quán)值為16的0次方,
49、第1位的權(quán)值為16的1次方,第2位的權(quán)值為16的2次方······ 所以,在第N(N從0開始)位上,如果是數(shù) X (X 大于等于0,并且X小于等于 15,即:F)表示的大小為 X * 16的N次方。 </p><p> 例如: 2AF5
50、60; </p><p> 第0位:5*16^0=5</p><p> 第1位:F*16^1=240 </p><p> 第2位:A*16^3=2560 </p><p> 第3位:2*16^4=8192 </p><p> 所以轉(zhuǎn)換 成十進(jìn)制數(shù)為:10997
51、.</p><p><b> 三、程序編碼</b></p><p> #include<stdio.h></p><p> #include<stdlib.h></p><p> #include<string.h></p><p><b>
52、 list2();</b></p><p> int ANY_ten(int x,int num)</p><p><b> { </b></p><p> int i,j=0;</p><p><b> int s=0;</b></p><p> fo
53、r(i=1;num!=0;i*=x)</p><p><b> {</b></p><p> if(num%10>(x-1))</p><p><b> {</b></p><p><b> j=1;</b></p><p><b&g
54、t; break;</b></p><p><b> }</b></p><p><b> else</b></p><p><b> {</b></p><p> s+=(num%10)*i;</p><p> num=num/
55、10;</p><p><b> }</b></p><p><b> }</b></p><p><b> if(j==1)</b></p><p> printf("原數(shù)據(jù)出錯(cuò)!請(qǐng)重新輸入:\n");</p><p>&l
56、t;b> else</b></p><p> printf("轉(zhuǎn)換為十進(jìn)制:%d\n\n",s);</p><p><b> return s;</b></p><p><b> }</b></p><p> void ten_ANY(int num,
57、int y)</p><p><b> {</b></p><p><b> int i;</b></p><p> int arr[30];</p><p> for(i=0;;i++)</p><p><b> {</b></p>
58、;<p> arr[i]=num%y;</p><p> num=num/y;</p><p> if(num==0)</p><p><b> {</b></p><p><b> break;</b></p><p><b> }<
59、;/b></p><p><b> }</b></p><p> printf("轉(zhuǎn)換為 %d 進(jìn)制:",y);</p><p> for(;i>=0;i--)</p><p><b> {</b></p><p> switch(a
60、rr[i])</p><p><b> {</b></p><p> case 10 : printf("A");break;</p><p> case 11 :printf("B");break;</p><p> case 12 :printf("C&quo
61、t;);break;</p><p> case 13 :printf("D");break;</p><p> case 14 :printf("E");break;</p><p> case 15 :printf("F");break;</p><p> case 16
62、 :printf("G");break;</p><p> case 17 :printf("H");break;</p><p> case 18 :printf("I");break;</p><p> case 19 :printf("J");break;</p>
63、<p> default :printf("%d",arr[i]);</p><p><b> }</b></p><p><b> }</b></p><p> printf("\n\n");</p><p><b> }&
64、lt;/b></p><p> void list1()</p><p><b> {</b></p><p> int i,a,m,num;</p><p> char ch[100];</p><p><b> FILE *f;</b></p>
65、;<p><b> do{</b></p><p> getchar();</p><p> system("cls");</p><p> printf(" ********************************************\n");</p>
66、<p> printf(" ********** **********\n");</p><p> printf(" ********** 數(shù)制轉(zhuǎn)換器 **********\n");</p><p> printf(" *******
67、*** **********\n");</p><p> printf(" ********** 1 - 十進(jìn)制轉(zhuǎn)二進(jìn)制 **********\n");</p><p> printf(" ********** 2 - 十進(jìn)制轉(zhuǎn)八進(jìn)制 **********\n")
68、;</p><p> printf(" ********** 3 - 十進(jìn)制轉(zhuǎn)十六進(jìn)制 **********\n");</p><p> printf(" ********** 4 - 二進(jìn)制轉(zhuǎn)十進(jìn)制 **********\n");</p><p> printf(" ******
69、**** 5 - 八進(jìn)制轉(zhuǎn)十進(jìn)制 **********\n");</p><p> printf(" ********** 6 - 十六進(jìn)制轉(zhuǎn)十進(jìn)制 **********\n");</p><p> printf(" ********** 7 - 二進(jìn)制轉(zhuǎn)八進(jìn)制 **********\n");</p
70、><p> printf(" ********** 8 - 二進(jìn)制轉(zhuǎn)十六進(jìn)制 **********\n");</p><p> printf(" ********** 0 - 返回 **********\n");</p><p> printf(" ********
71、** * **********\n");</p><p> printf(" ********************************************\n");</p><p> loop:printf("請(qǐng)輸入你所選擇的序號(hào): ");</p><p&
72、gt; scanf("%d",&a);</p><p> if(a!=0&&a<9)</p><p><b> {</b></p><p> st:printf("\n輸入要轉(zhuǎn)換的數(shù): ");</p><p> scanf("%s&
73、quot;,&ch);</p><p> f=fopen("num.txt","w");</p><p> for(i=0;i<=(int)strlen(ch);i++)</p><p> fputc(ch[i],f);</p><p> fclose(f);</p>
74、<p><b> }</b></p><p> for(i=0;i<(int)strlen(ch);i++)</p><p><b> {</b></p><p> if((int)(ch[i])>=48&&(int)(ch[i])<=57||(ch[i])>=&
75、#39;A'&&(int)(ch[i])<='J')</p><p><b> continue;</b></p><p><b> else</b></p><p> printf("輸入有誤! 請(qǐng)輸入數(shù)字: ");goto st;break;<
76、;/p><p><b> }</b></p><p> f=fopen("num.txt","r");</p><p> fscanf(f,"%d",&num); //讀出文件num.txt中權(quán)值</p><p> fclose(f);<
77、;/p><p><b> switch(a)</b></p><p><b> {</b></p><p> case 0 : list2();break;/*返回上一層*/</p><p> case 1 : ten_ANY(num,2); break; /*十進(jìn)制轉(zhuǎn)二進(jìn)制*/</p&g
78、t;<p> case 2 : ten_ANY(num,8); break; /*十進(jìn)制轉(zhuǎn)八進(jìn)制*/</p><p> case 3 : ten_ANY(num,16); break; /*十進(jìn)制轉(zhuǎn)十六進(jìn)制*/</p><p> case 4 : ANY_ten(2,num); break; /*二進(jìn)制轉(zhuǎn)十進(jìn)制*/</p><p> case
79、5 : ANY_ten(8,num); break; /*八進(jìn)制轉(zhuǎn)十進(jìn)制*/</p><p> case 6 : ANY_ten(16,num); break; /*十六進(jìn)制轉(zhuǎn)十進(jìn)制*/</p><p> case 7 : m=ANY_ten(2,num);ten_ANY(m,8); break;/*二進(jìn)制轉(zhuǎn)八進(jìn)制*/</p><p> case 8 : m=
80、ANY_ten(2,num);ten_ANY(m,16);break; /*二進(jìn)制轉(zhuǎn)十六進(jìn)制*/</p><p> default : printf("您的輸入有誤,請(qǐng)重新選擇!\n");goto loop;break;</p><p><b> }</b></p><p> getchar();</p>
81、<p> }while(a>0);</p><p><b> }</b></p><p> void ANY_ch()</p><p><b> {</b></p><p> int a,m,x,y,num;</p><p> printf(&q
82、uot;請(qǐng)輸入進(jìn)制數(shù): ");</p><p> scanf("%d",&x);</p><p> printf("輸入該 %d 進(jìn)制數(shù):",x);</p><p> scanf("%d",&num);</p><p> m=ANY_ten(x,nu
83、m);</p><p> printf(" 是否將當(dāng)前十進(jìn)制數(shù)進(jìn)一步轉(zhuǎn)換: 1.是 2.否\n");</p><p> printf(" 請(qǐng)選擇: ");</p><p> loop2:scanf("%d",&a);</p><p><b> s
84、witch(a)</b></p><p><b> {</b></p><p> case 1:printf("轉(zhuǎn)換的目標(biāo)進(jìn)制數(shù)為: ");</p><p> scanf("%d",&y);</p><p> ten_ANY(m,y);break;<
85、;/p><p> case 2:printf("\t轉(zhuǎn)換結(jié)束!");break;</p><p> default:printf("選擇有誤! 請(qǐng)重選: ");goto loop2;break;</p><p><b> }</b></p><p> getchar();<
86、;/p><p><b> }</b></p><p> int list2()</p><p><b> {</b></p><p><b> int b;</b></p><p><b> do{</b></p>
87、<p> printf(" ************************************************\n");</p><p> printf(" *** 二十進(jìn)制內(nèi)任意進(jìn)制轉(zhuǎn)換! ***\n");</p><p> printf(" ************************
88、************************\n");</p><p> printf("\t\t按Enter進(jìn)入主菜單!");</p><p> getchar();</p><p> system("cls");</p><p> printf(" ******
89、**************************************\n");</p><p> printf(" ********** 【主菜單】 **********\n");</p><p> printf(" ********** *********
90、*\n");</p><p> printf(" ********** 模式選擇 **********\n");</p><p> printf(" ********** **********\n");</p><p> pr
91、intf(" ********** 1 - 常見進(jìn)制轉(zhuǎn)換 **********\n");</p><p> printf(" ********** 2 - 自定義進(jìn)制數(shù)轉(zhuǎn)換 **********\n");</p><p> printf(" ********** 0 - 退出
92、 **********\n");</p><p> printf(" ********** **********\n");</p><p> printf(" ********************************************\n");</p>
93、<p> loop1:printf(" 請(qǐng)選擇要執(zhí)行的模式: ");</p><p> scanf("%d",&b);</p><p><b> switch(b)</b></p><p><b> {</b></p><p>
94、; case 1: list1();break; /*常見進(jìn)制轉(zhuǎn)換菜單*/</p><p> case 2: ANY_ch();break; /*任意進(jìn)制數(shù)之間轉(zhuǎn)換*/</p><p> case 0: exit(0);break;</p><p> default: printf("\n您的輸入有誤,請(qǐng)重新選擇!\n\n");goto
95、 loop1;break;</p><p><b> }</b></p><p> getchar();</p><p> }while(b>0);</p><p><b> return 0;</b></p><p><b> }</b>
96、;</p><p> void main()</p><p><b> {</b></p><p><b> list2();</b></p><p><b> }</b></p><p><b> 測(cè)試結(jié)果</b><
97、;/p><p> 按Enter鍵進(jìn)入主菜單,如圖3.1所示:</p><p> 圖3.1十進(jìn)制轉(zhuǎn)換為二進(jìn)制</p><p> 選擇1,進(jìn)入常見進(jìn)制轉(zhuǎn)換菜單,如圖3.2所示:</p><p> 圖3.2十進(jìn)制轉(zhuǎn)換為二進(jìn)制</p><p> 選擇1,十進(jìn)制轉(zhuǎn)換為二進(jìn)制函數(shù),輸入12,結(jié)果如圖3.3所示:</p&
98、gt;<p> 圖3.3十進(jìn)制轉(zhuǎn)換為二進(jìn)制</p><p> 選擇2,十進(jìn)制轉(zhuǎn)換為八進(jìn)制函數(shù),輸入20,結(jié)果如圖3.4所示:</p><p> 圖3.4十進(jìn)制轉(zhuǎn)換為八進(jìn)制</p><p> 選擇3,十進(jìn)制轉(zhuǎn)換為十六進(jìn)制函數(shù),輸入30,結(jié)果如圖3.5所示:</p><p> 圖3.5十進(jìn)制轉(zhuǎn)換為十六進(jìn)制</p>
99、;<p> 選擇4,二進(jìn)制轉(zhuǎn)換為十進(jìn)制函數(shù),輸入131,結(jié)果如圖3.6所示:</p><p> 圖3.6二進(jìn)制轉(zhuǎn)換為十進(jìn)制</p><p> 選擇4,二進(jìn)制轉(zhuǎn)換為十進(jìn)制函數(shù),輸入111,結(jié)果如圖3.7所示:</p><p> 圖3.7二進(jìn)制轉(zhuǎn)換為十進(jìn)制</p><p> 選擇5,八進(jìn)制轉(zhuǎn)換為十進(jìn)制函數(shù),輸入171,結(jié)果
100、如圖3.8所示:</p><p> 圖3.8八進(jìn)制轉(zhuǎn)換為十進(jìn)制</p><p> 選擇6,十六進(jìn)制轉(zhuǎn)換為十進(jìn)制函數(shù),輸入19AF,結(jié)果如圖3.9所示:</p><p> 圖3.9十六進(jìn)制轉(zhuǎn)換為十進(jìn)制</p><p> 選擇7,二進(jìn)制轉(zhuǎn)換為八進(jìn)制函數(shù),輸入1101,結(jié)果如圖3.10所示:</p><p> 圖3
101、.10十六進(jìn)制轉(zhuǎn)換為十進(jìn)制</p><p> 選擇8,二進(jìn)制轉(zhuǎn)換為十六進(jìn)制函數(shù),輸入11111,結(jié)果如圖3.11所示:</p><p> 圖3.11二進(jìn)制轉(zhuǎn)換為十六進(jìn)制</p><p> 選擇0,返回主菜單如圖3.12所示:</p><p> 圖3.12返回主菜單</p><p> 選擇2,自定義進(jìn)制轉(zhuǎn)換,輸
102、入進(jìn)制數(shù)為2,數(shù)字為110101,選擇1.是,結(jié)果如圖3.13所示:</p><p> 圖3.13自定義進(jìn)制轉(zhuǎn)換</p><p><b> 參考文獻(xiàn)</b></p><p> [1]譚浩強(qiáng).C程序設(shè)計(jì)(第三版).北京:清華大學(xué)出版社.2005:34</p><p> [2]李建忠.大學(xué)計(jì)算機(jī)基礎(chǔ).西安:西北大學(xué)出
103、版社.2005:104</p><p> [3]譚浩強(qiáng).C程序設(shè)計(jì)題解與上機(jī)指導(dǎo)(第三版).北京:清華大學(xué)出版社.2005:68</p><p> [4]羅建軍、朱丹軍、顧剛.C++程序設(shè)計(jì)教程(第2版).北京:高等教育出版社.2007:76</p><p><b> 四、心得體會(huì)</b></p><p> 本次
104、課程設(shè)計(jì),完成的數(shù)制轉(zhuǎn)換器系統(tǒng)實(shí)現(xiàn)了二進(jìn)制、八進(jìn)制、十六進(jìn)制和十進(jìn)制之間相互轉(zhuǎn)換等功能,同時(shí)也實(shí)現(xiàn)了二十進(jìn)制內(nèi)任意進(jìn)制之間的轉(zhuǎn)化功能。并且加入了對(duì)輸入數(shù)字的判定是否符合要求,對(duì)輸入不合法字符檢驗(yàn)并提示的功能。當(dāng)輸入的數(shù)字太大而無法實(shí)現(xiàn)轉(zhuǎn)化時(shí),主要是因?yàn)閿?shù)字超過了定義的長(zhǎng)度,無法實(shí)現(xiàn)兩個(gè)數(shù)制轉(zhuǎn)化。除此之外本程序不能實(shí)現(xiàn)小數(shù)的轉(zhuǎn)化等問題。我希望以后可以實(shí)現(xiàn)上述兩個(gè)問題,首先是改進(jìn)程序,使其能實(shí)現(xiàn)小數(shù)的轉(zhuǎn)化,其次改進(jìn)定義的長(zhǎng)度問題,使其能夠轉(zhuǎn)
105、化更大的數(shù)。</p><p> 這次課程設(shè)計(jì)使我對(duì)C語言知識(shí)進(jìn)行了系統(tǒng)的、有條理的復(fù)習(xí),對(duì)許多知識(shí)點(diǎn)都加強(qiáng)了記憶。通過本次數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì),我進(jìn)一步學(xué)習(xí)了用C語言設(shè)計(jì)代碼的思想,并把它運(yùn)用到實(shí)際操作中。C語言是工具,數(shù)據(jù)結(jié)構(gòu)是思想,把兩者結(jié)合起來,熟練運(yùn)用,才能設(shè)計(jì)出符合要求的算法。設(shè)計(jì)過程中,我也遇到很多麻煩,并通過翻閱資料、詢問同學(xué)來解決。在這個(gè)過程中,我知道了與他人合作的重要性,學(xué)會(huì)了與他人合作。以后,我
106、會(huì)更認(rèn)真的學(xué)習(xí)C語言,不斷提高自己的編程水平。</p><p> 信息科學(xué)與工程 學(xué)院課程設(shè)計(jì)成績(jī)?cè)u(píng)價(jià)表</p><p> 課程名稱:數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)</p><p><b> 設(shè)計(jì)題目:進(jìn)制轉(zhuǎn)換</b></p><p> 專業(yè): 班級(jí): 姓名: 學(xué)號(hào):&
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝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ù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 眾賞文庫(kù)僅提供信息存儲(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- c語言課程設(shè)計(jì)--進(jìn)制轉(zhuǎn)換
- c語言課程設(shè)計(jì)--進(jìn)制轉(zhuǎn)換
- c語言進(jìn)制轉(zhuǎn)換課程設(shè)計(jì)
- 基于c語言進(jìn)制轉(zhuǎn)換課程設(shè)計(jì)
- C語言課程設(shè)計(jì)--進(jìn)制轉(zhuǎn)換.doc
- c語言課程設(shè)計(jì)課程設(shè)計(jì)-成績(jī)統(tǒng)計(jì)系統(tǒng)+進(jìn)制轉(zhuǎn)換系統(tǒng)
- c語言進(jìn)制轉(zhuǎn)換
- 課程設(shè)計(jì)--進(jìn)制轉(zhuǎn)換
- 課程設(shè)計(jì)--進(jìn)制轉(zhuǎn)換
- 課程設(shè)計(jì)--進(jìn)制轉(zhuǎn)換.doc
- c語言_各種進(jìn)制轉(zhuǎn)換
- c語言課程設(shè)計(jì) (2)
- 數(shù)制轉(zhuǎn)換課程設(shè)計(jì)--進(jìn)制轉(zhuǎn)換的實(shí)現(xiàn)
- c++課程設(shè)計(jì)報(bào)告--數(shù)的進(jìn)制轉(zhuǎn)換系統(tǒng)
- 【課程設(shè)計(jì)】c語言課程設(shè)計(jì)
- 微機(jī)原理課程設(shè)計(jì)----進(jìn)制轉(zhuǎn)換程序設(shè)計(jì)
- c語言課程設(shè)計(jì)
- c語言課程設(shè)計(jì)
- c語言課程設(shè)計(jì)
- c語言課程設(shè)計(jì)--c語言投票程序
評(píng)論
0/150
提交評(píng)論