2023年全國(guó)碩士研究生考試考研英語一試題真題(含答案詳解+作文范文)_第1頁(yè)
已閱讀1頁(yè),還剩28頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(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ì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論