版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、<p><b> 《數(shù)據(jù)結構》</b></p><p><b> 課程設計報告</b></p><p> 設計題目 哈 夫 曼 (Huffman) 編/譯 碼 器 </p><p> 學院名稱 信 息 工 程 學 院 </p>&
2、lt;p> 專 業(yè) 班 級 </p><p> 姓 名 </p><p> 學 號 ______</p><p
3、> 題目:哈夫曼(Huffman)編/譯碼器</p><p><b> 一、問題描述</b></p><p> 利用哈夫曼編碼進行通信可以大大提高信道利用率,縮短信息傳輸時間,降低傳輸成本。但是,這要求在發(fā)送端通過一個編碼系統(tǒng)對待傳數(shù)據(jù)預先編碼,在接收端將傳來的數(shù)據(jù)進行譯碼(復原)。對于雙工信道(即可以雙向傳輸信息的信道),每端都需要一個完整的編/譯碼系統(tǒng)
4、。試為這樣的信息收發(fā)站寫一個哈夫曼碼的編/譯碼系統(tǒng)。</p><p><b> 二、設計目標</b></p><p> 幫助學生熟練掌握樹的應用和基本操作,重點掌握二叉樹的存儲,這里以哈夫曼樹為設計目標進一步提高學生的設計能力及對樹的理解。</p><p><b> 三、任務要求</b></p><
5、;p> 一個完整的系統(tǒng)應具有以下功能:</p><p> 1) I:初始化(Initialization)。從終端讀入字符集大小n,以及n個字符和n個權值,建立哈夫曼樹,并將它存于文件hfmTree中。</p><p> 2) E:編碼(Encoding)。利用以建好的哈夫曼樹(如不在內存,則從文件hfmTree中讀入),對文件ToBeTran中的正文進行編碼,然后將結果存入文
6、件CodeFile中。 </p><p> 3) D:譯碼(Decoding)。利用已建好的哈夫曼樹將文件CodeFile中的代碼進行譯碼,結果存入文件TextFile中。 </p><p> 4) P:印代碼文件(Print)。將文件CodeFile以緊湊格式顯示在終端上,每行50個代碼。同時將此字符形式的編碼文件寫入文件CodePrin中。 </p><p>
7、; 5) T:印哈夫曼樹(Tree Printing)。將已在內存中的哈夫曼樹以直觀的方式(樹或凹入表形式)顯示在終端上,同時將此字符形式的哈夫曼樹寫入文件TreePrint中。</p><p><b> 四、需求分析</b></p><p> 利用哈夫曼樹(Huffman)編/譯碼</p><p> ?。ㄒ唬⒊跏蓟蚵鼧?lt;/p
8、><p> ?。ǘ⒔⒐蚵鼧?lt;/p><p> ?。ㄈ?、對哈夫曼樹進行編碼</p><p> ?。ㄋ模?、輸出對應字符的編碼</p><p><b> ?。ㄎ澹?、譯碼過程</b></p><p><b> 五、概要設計</b></p><p>
9、哈夫曼樹的存儲結構描述</p><p> typedef struct</p><p><b> {</b></p><p> unsigned int weight;</p><p> unsigned int parent, lchild, rchild;</p><p> }HTN
10、ode, *HuffmanTree; </p><p><b> 哈弗曼樹的算法</b></p><p> void CreateHT(HTNode ht[],int n) //調用輸入的數(shù)組ht[],和節(jié)點數(shù)n</p><p><b> {</b></p><p&g
11、t; int i,k,lnode,rnode;</p><p> int min1,min2;</p><p> for (i=0;i<2*n-1;i++) </p><p> ht[i].parent=ht[i].lchild=ht[i].rchild=-1; //所有結點的相關域置初值-1</p><p>
12、 for (i=n;i<2*n-1;i++) //構造哈夫曼樹</p><p><b> {</b></p><p> min1=min2=32767; //int的范圍是-32768—32767</p><p> lnode=rnode=-1;
13、 //lnode和rnode記錄最小權值的兩個結點位置</p><p> for (k=0;k<=i-1;k++)</p><p><b> {</b></p><p> if (ht[k].parent==-1) //只在尚未構造二叉樹的結點中查找</p><p>
14、<b> {</b></p><p> if (ht[k].weight<min1) //若權值小于最小的左節(jié)點的權值</p><p><b> {</b></p><p> min2=min1;rnode=lnode;</p><p> min1=ht[k].w
15、eight;lnode=k;</p><p><b> }</b></p><p> else if (ht[k].weight<min2)</p><p><b> {</b></p><p> min2=ht[k].weight;rnode=k;</p><p&
16、gt;<b> }</b></p><p><b> }</b></p><p><b> }</b></p><p> ht[lnode].parent=i;ht[rnode].parent=i; //兩個最小節(jié)點的父節(jié)點是i</p><p&
17、gt; ht[i].weight=ht[lnode].weight+ht[rnode].weight; //兩個最小節(jié)點的父節(jié)點權值為兩個最小節(jié)點權值之和</p><p> ht[i].lchild=lnode;ht[i].rchild=rnode; //父節(jié)點的左節(jié)點和右節(jié)點</p><p><b> }</b>&l
18、t;/p><p><b> }</b></p><p><b> 哈弗曼編碼</b></p><p> void CreateHCode(HTNode ht[],HCode hcd[],int n)</p><p><b> {</b></p><p&g
19、t; int i,f,c;</p><p><b> HCode hc;</b></p><p> for (i=0;i<n;i++) //根據(jù)哈夫曼樹求哈夫曼編碼</p><p><b> {</b></p><p> hc.s
20、tart=n;c=i;</p><p> f=ht[i].parent;</p><p> while (f!=-1) //循序直到樹根結點結束循環(huán)</p><p><b> {</b></p><p> if (ht[f].lchild==c)
21、 //處理左孩子結點</p><p> hc.cd[hc.start--]='0';</p><p> else //處理右孩子結點</p><p> hc.cd[hc.start--]='1';</p>&l
22、t;p> c=f;f=ht[f].parent;</p><p><b> }</b></p><p> hc.start++; //start指向哈夫曼編碼hc.cd[]中最開始字符</p><p> hcd[i]=hc;</p><p><
23、;b> }</b></p><p><b> }</b></p><p> void DispHCode(HTNode ht[],HCode hcd[],int n) //輸出哈夫曼編碼的列表</p><p><b> {</b></p><p><b>
24、 int i,k;</b></p><p> printf(" 輸出哈夫曼編碼:\n"); </p><p> for (i=0;i<n;i++) //輸出data中的所有數(shù)據(jù),即A-Z</p><p><b> {</b></p&
25、gt;<p> printf(" %c:\t",ht[i].data); </p><p> for (k=hcd[i].start;k<=n;k++) //輸出所有data中數(shù)據(jù)的編碼</p><p><b> {</b></p>
26、<p> printf("%c",hcd[i].cd[k]); </p><p><b> }</b></p><p> printf("\n");</p><p><b> }</b></p><p>
27、;<b> }</b></p><p> void editHCode(HTNode ht[],HCode hcd[],int n) //編碼函數(shù)</p><p><b> {</b></p><p> char string[MAXSIZE]; </p&g
28、t;<p> int i,j,k;</p><p> scanf("%s",string); //把要進行編碼的字符串存入string數(shù)組中</p><p> printf("\n輸出編碼結果:\n");</p><p> for (i=0;string[i]!
29、='#';i++) //#為終止標志</p><p><b> {</b></p><p> for (j=0;j<n;j++)</p><p><b> {</b></p><p> if(string[i]==ht[j].data)
30、 //循環(huán)查找與輸入字符相同的編號,相同的就輸出這個字符的編碼</p><p><b> {</b></p><p> for (k=hcd[j].start;k<=n;k++)</p><p><b> {</b></p><p> printf("%
31、c",hcd[j].cd[k]);</p><p><b> }</b></p><p> break; //輸出完成后跳出當前for循環(huán)</p><p><b> }</b></p><p><b> }</b>&l
32、t;/p><p><b> }</b></p><p><b> }</b></p><p><b> 哈弗曼譯碼</b></p><p> void deHCode(HTNode ht[],HCode hcd[],int n) //譯碼函數(shù)</p>
33、<p><b> {</b></p><p> char code[MAXSIZE];</p><p> int i,j,l,k,m,x;</p><p> scanf("%s",code); //把要進行譯碼的字符串存入code數(shù)組中</p>
34、<p> while(code[0]!='#')</p><p> for (i=0;i<n;i++)</p><p><b> {</b></p><p> m=0; //m為想同編碼個數(shù)的計數(shù)器</p><p>
35、for (k=hcd[i].start,j=0;k<=n;k++,j++) //j為記錄所存儲這個字符的編碼個數(shù)</p><p><b> {</b></p><p> if(code[j]==hcd[i].cd[k]) //當有相同編碼時m值加1</p><p><b> m++;</
36、b></p><p><b> }</b></p><p> if(m==j) //當輸入的字符串與所存儲的編碼字符串個數(shù)相等時則輸出這個的data數(shù)據(jù)</p><p><b> {</b></p><p> printf(&
37、quot;%c",ht[i].data);</p><p> for(x=0;code[x-1]!='#';x++) //把已經使用過的code數(shù)組里的字符串刪除</p><p><b> {</b></p><p> code[x]=code[x+j];</p><p&g
38、t;<b> }</b></p><p><b> }</b></p><p><b> }</b></p><p><b> }</b></p><p><b> 主函數(shù)</b></p><p>
39、 void main()</p><p><b> {</b></p><p> int n=26,i;</p><p> char orz,back,flag=1;</p><p> char str[]={'A','B','C','D','
40、;E','F','G','H','I','J','K','L','M','N','O','P','Q','R','S','T','U','V','W
41、39;,'X','Y','Z'}; //初始化</p><p> int fnum[]={186,64,13,22,32,103,21,15,47,57,1,2,32,20,57,63,15,1,48,51,80,23,8,18,1,16}; //初始化</p><p> HTNode ht[M];
42、 //建立結構體</p><p> HCode hcd[N]; //建立結構體</p><p> for (i=0;i<n;i++) //把初始化的數(shù)據(jù)存入ht結構體中</p><p><b> {</b></p><p> ht[i].data=str[
43、i];</p><p> ht[i].weight=fnum[i];</p><p><b> }</b></p><p> while (flag) //菜單函數(shù),當flag為0時跳出循環(huán)</p><p><b> 顯示部分源程序:</b></p>
44、;<p><b> {</b></p><p> printf("\n");</p><p> printf(" ********************************");</p><p> printf("\n ** 1-------
45、--------顯示編碼 **");</p><p> printf("\n ** 2---------------進行編碼 **");</p><p> printf("\n ** 3---------------進行譯碼 **");</p><p> printf("\
46、n ** 4---------------退出 **\n");</p><p> printf(" * **********************************");</p><p> printf("\n");</p><p> printf("
47、 請輸入選擇的編號:");</p><p> scanf("%c",&orz);</p><p> switch(orz)</p><p><b> {</b></p><p><b> case 'a':</b></p>
48、;<p><b> case 'A':</b></p><p> system("cls"); //清屏函數(shù)</p><p> CreateHT(ht,n);</p><p> CreateHCode(ht,hcd,n);</p>
49、;<p> DispHCode(ht,hcd,n);</p><p> printf("\n按任意鍵返回...");</p><p><b> getch();</b></p><p> system("cls");</p><p><b> br
50、eak;</b></p><p><b> case 'b':</b></p><p><b> case 'B':</b></p><p> system("cls");</p><p> printf("請輸入要進
51、行編碼的字符串(以#結束):\n");</p><p> editHCode(ht,hcd,n);</p><p> printf("\n按任意鍵返回...");</p><p><b> getch();</b></p><p> system("cls");&
52、lt;/p><p><b> break;</b></p><p><b> case 'c':</b></p><p><b> case 'C':</b></p><p> system("cls");</p&g
53、t;<p> DispHCode(ht,hcd,n);</p><p> printf("請輸入編碼(以#結束):\n");</p><p> deHCode(ht,hcd,n);</p><p> printf("\n按任意鍵返回...");</p><p><b>
54、 getch();</b></p><p> system("cls");</p><p><b> break;</b></p><p><b> case 'd':</b></p><p><b> case 'D'
55、;:</b></p><p><b> flag=0;</b></p><p><b> break;</b></p><p><b> default:</b></p><p> system("cls");</p>&l
56、t;p><b> }}}</b></p><p><b> 六、詳細設計</b></p><p> 由上表畫出哈夫曼樹:</p><p> 由哈夫曼樹得出各字符的編碼:</p><p><b> 關系調用:</b></p><p><
57、;b> 該程序的流程圖:</b></p><p><b> 七、測試分析</b></p><p><b> 白盒:</b></p><p><b> 查看代碼完整性</b></p><p> 白盒測試也稱結構測試或邏輯驅動測試,它是按照程序內部的結構
58、測試程序,通過測試來檢測產品內部動作是否按照設計規(guī)格說明書的規(guī)定正常進行,檢驗程序中的每條通路是否都能按預定要求正確工作。 這一方法是把測試對象看作一個打開的盒子,測試人員依據(jù)程序內部邏輯結構相關信息,設計或選擇測試用例,對程序所有邏輯路徑進行測試,通過在不同點檢查程序的狀態(tài),確定實際的狀態(tài)是否與預期的狀態(tài)一致。</p><p><b> 黑盒:</b></p><p&
59、gt; 測試是否可以正確的創(chuàng)建,刪除,插入,打印,查找等操作</p><p> 黑盒測試也稱功能測試,它是通過測試來檢測每個功能是否都能正常使用。在測試中,把程序看作一個不能打開的黑盒子,在完全不考慮程序內部結構和內部特性的情況下,在程序接口進行測試,它只檢查程序功能是否按照需求規(guī)格說明書的規(guī)定正常使用,程序是否能適當?shù)亟邮蛰斎霐?shù)據(jù)而產生正確的輸出信息。黑盒測試著眼于程序外部結構,不考慮內部邏輯結構,主要針對
60、軟件界面和軟件功能進行測試。</p><p><b> 八、使用說明</b></p><p> 1) 輸入n個字符的權值</p><p> 2) 輸入對應的字符</p><p> 3) 得出各字符的編碼</p><p><b> 九、測試數(shù)據(jù)</b></p&g
61、t;<p> 用下表給出的字符集和頻度的實際統(tǒng)計數(shù)據(jù)建立哈夫曼樹,并實現(xiàn)以下報文的編碼和譯碼:“THIS PROGRAM IS MY FAVORITE”。</p><p> 字符 空格 A B C D E F G H I J K L M </p><p> 頻度 186 64 13 22 32 103 21 15 47 57 1 5 32 20 </p>
62、<p> 字符 N O P Q R S T U V W X Y Z </p><p> 頻度 57 63 15 1 48 51 80 23 8 18 1 16 1</p><p> 注:學生在測試數(shù)據(jù)時,需要寫出測試用例和截圖</p><p><b> 十、該程序的源代碼</b></p><p>
63、 #include <stdio.h></p><p> #include <stdlib.h> //要用system函數(shù)要調用的頭文件</p><p> #include<conio.h> //用getch()要調用的頭文件</p><p> #include <string.
64、h></p><p> #define N 50 //義用N表示50葉節(jié)點數(shù)</p><p> #define M 2*N-1 //用M表示節(jié)點總數(shù) 當葉節(jié)點數(shù)位n時總節(jié)點數(shù)為2n-1</p><p> #define MAXSIZE 100</p><p> type
65、def struct</p><p><b> {</b></p><p> char data; //結點值</p><p> int weight; //權值</p><p> int parent; //雙親結
66、點</p><p> int lchild; //左孩子結點</p><p> int rchild; //右孩子結點</p><p> }HTNode; </p><p> typedef struct</p><
67、;p><b> {</b></p><p> char cd[N]; //存放哈夫曼碼</p><p> int start; //從start開始讀cd中的哈夫曼碼</p><p><b> }HCode;</b></p>&l
68、t;p> void CreateHT(HTNode ht[],int n) //調用輸入的數(shù)組ht[],和節(jié)點數(shù)n</p><p><b> {</b></p><p> int i,k,lnode,rnode;</p><p> int min1,min2;</p><p>
69、 for (i=0;i<2*n-1;i++) </p><p> ht[i].parent=ht[i].lchild=ht[i].rchild=-1; //所有結點的相關域置初值-1</p><p> for (i=n;i<2*n-1;i++) //構造哈夫曼樹</p><p><b>
70、; {</b></p><p> min1=min2=32767; //int的范圍是-32768—32767</p><p> lnode=rnode=-1; //lnode和rnode記錄最小權值的兩個結點位置</p><p> for (k=0;k<=i-1;k++)&l
71、t;/p><p><b> {</b></p><p> if (ht[k].parent==-1) //只在尚未構造二叉樹的結點中查找</p><p><b> {</b></p><p> if (ht[k].weight<min1) /
72、/若權值小于最小的左節(jié)點的權值</p><p><b> {</b></p><p> min2=min1;rnode=lnode;</p><p> min1=ht[k].weight;lnode=k;</p><p><b> }</b></p><p> el
73、se if (ht[k].weight<min2)</p><p><b> {</b></p><p> min2=ht[k].weight;rnode=k;</p><p><b> }</b></p><p><b> }</b></p>&l
74、t;p><b> }</b></p><p> ht[lnode].parent=i;ht[rnode].parent=i; //兩個最小節(jié)點的父節(jié)點是i</p><p> ht[i].weight=ht[lnode].weight+ht[rnode].weight; //兩個最小節(jié)點的父節(jié)點權值為兩個最小節(jié)點權值
75、之和</p><p> ht[i].lchild=lnode;ht[i].rchild=rnode; //父節(jié)點的左節(jié)點和右節(jié)點</p><p><b> }</b></p><p><b> }</b></p><p> void CreateHCode(H
76、TNode ht[],HCode hcd[],int n)</p><p><b> {</b></p><p> int i,f,c;</p><p><b> HCode hc;</b></p><p> for (i=0;i<n;i++)
77、 //根據(jù)哈夫曼樹求哈夫曼編碼</p><p><b> {</b></p><p> hc.start=n;c=i;</p><p> f=ht[i].parent;</p><p> while (f!=-1) //循序直到樹根結點結束循環(huán)
78、</p><p><b> {</b></p><p> if (ht[f].lchild==c) //處理左孩子結點</p><p> hc.cd[hc.start--]='0';</p><p> else
79、 //處理右孩子結點</p><p> hc.cd[hc.start--]='1';</p><p> c=f;f=ht[f].parent;</p><p><b> }</b></p><p> hc.start++;
80、 //start指向哈夫曼編碼hc.cd[]中最開始字符</p><p> hcd[i]=hc;</p><p><b> }</b></p><p><b> }</b></p><p> void DispHCode(HTNode ht[],HCode hcd[],int n
81、) //輸出哈夫曼編碼的列表</p><p><b> {</b></p><p><b> int i,k;</b></p><p> printf(" 輸出哈夫曼編碼:\n"); </p><p> for (i=0;i<n;i++)
82、 //輸出data中的所有數(shù)據(jù),即A-Z</p><p><b> {</b></p><p> printf(" %c:\t",ht[i].data); </p><p> for (k=hcd[i].start;k<=n;k++)
83、 //輸出所有data中數(shù)據(jù)的編碼</p><p><b> {</b></p><p> printf("%c",hcd[i].cd[k]); </p><p><b> }</b></p><p&
84、gt; printf("\n");</p><p><b> }</b></p><p><b> }</b></p><p> void editHCode(HTNode ht[],HCode hcd[],int n) //編碼函數(shù)</p><p><b&g
85、t; {</b></p><p> char string[MAXSIZE]; </p><p> int i,j,k;</p><p> scanf("%s",string); //把要進行編碼的字符串存入string數(shù)組中</p
86、><p> printf("\n輸出編碼結果:\n");</p><p> for (i=0;string[i]!='#';i++) //#為終止標志</p><p><b> {</b></p><p> for (j=0;j<n;j++)
87、</p><p><b> {</b></p><p> if(string[i]==ht[j].data) //循環(huán)查找與輸入字符相同的編號,相同的就輸出這個字符的編碼</p><p><b> {</b></p><p> for (k=hcd[j].start;k
88、<=n;k++)</p><p><b> {</b></p><p> printf("%c",hcd[j].cd[k]);</p><p><b> }</b></p><p> break; //輸出完成后跳出當前fo
89、r循環(huán)</p><p><b> }</b></p><p><b> }</b></p><p><b> }</b></p><p><b> }</b></p><p> void deHCode(HTNode ht
90、[],HCode hcd[],int n) //譯碼函數(shù)</p><p><b> {</b></p><p> char code[MAXSIZE];</p><p> int i,j,l,k,m,x;</p><p> scanf("%s",code);
91、 //把要進行譯碼的字符串存入code數(shù)組中</p><p> while(code[0]!='#')</p><p> for (i=0;i<n;i++)</p><p><b> {</b></p><p> m=0;
92、 //m為想同編碼個數(shù)的計數(shù)器</p><p> for (k=hcd[i].start,j=0;k<=n;k++,j++) //j為記錄所存儲這個字符的編碼個數(shù)</p><p><b> {</b></p><p> if(code[j]==hcd[i].cd[k]) //當有相同編碼時m
93、值加1</p><p><b> m++;</b></p><p><b> }</b></p><p> if(m==j) //當輸入的字符串與所存儲的編碼字符串個數(shù)相等時則輸出這個的data數(shù)據(jù)</p><p><b>
94、 {</b></p><p> printf("%c",ht[i].data);</p><p> for(x=0;code[x-1]!='#';x++) //把已經使用過的code數(shù)組里的字符串刪除</p><p><b> {</b></p><
95、p> code[x]=code[x+j];</p><p><b> }</b></p><p><b> }</b></p><p><b> }</b></p><p><b> }</b></p><p>
96、void main()</p><p><b> {</b></p><p> int n=26,i;</p><p> char orz,back,flag=1;</p><p> char str[]={'A','B','C','D','
97、E','F','G','H','I','J','K','L','M','N','O','P','Q','R','S','T','U','V','W
98、9;,'X','Y','Z'}; //初始化</p><p> int fnum[]={186,64,13,22,32,103,21,15,47,57,1,2,32,20,57,63,15,1,48,51,80,23,8,18,1,16}; //初始化</p><p> HTNode ht[M];
99、 //建立結構體</p><p> HCode hcd[N]; //建立結構體</p><p> for (i=0;i<n;i++) //把初始化的數(shù)據(jù)存入ht結構體中</p><p><b> {</b></p><p> ht[i].data=str[i
100、];</p><p> ht[i].weight=fnum[i];</p><p><b> }</b></p><p> while (flag) //菜單函數(shù),當flag為0時跳出循環(huán)</p><p><b> {</b></p><p
101、> printf("\n");</p><p> printf(" **************************************");</p><p> printf("\n ** A---------------顯示編碼 **");</p><p>
102、printf("\n ** B---------------進行編碼 **");</p><p> printf("\n ** C---------------進行譯碼 **");</p><p> printf("\n ** D---------------退出 **\n");&l
103、t;/p><p> printf(" ****************************************");</p><p> printf("\n");</p><p> printf(" 請輸入選擇的編號:");</p><p>
104、scanf("%c",&orz);</p><p> switch(orz)</p><p><b> {</b></p><p><b> case 'a':</b></p><p><b> case 'A':<
105、/b></p><p> system("cls"); //清屏函數(shù)</p><p> CreateHT(ht,n);</p><p> CreateHCode(ht,hcd,n);</p><p> DispHCode(ht,hcd,n);</p>
106、<p> printf("\n按任意鍵返回...");</p><p><b> getch();</b></p><p> system("cls");</p><p><b> break;</b></p><p><b>
107、 case 'b':</b></p><p><b> case 'B':</b></p><p> system("cls");</p><p> printf("請輸入要進行編碼的字符串(以#結束):\n");</p><p>
108、; editHCode(ht,hcd,n);</p><p> printf("\n按任意鍵返回...");</p><p><b> getch();</b></p><p> system("cls");</p><p><b> break;</b&
109、gt;</p><p><b> case 'c':</b></p><p><b> case 'C':</b></p><p> system("cls");</p><p> DispHCode(ht,hcd,n);</p>
110、;<p> printf("請輸入編碼(以#結束):\n");</p><p> deHCode(ht,hcd,n);</p><p> printf("\n按任意鍵返回...");</p><p><b> getch();</b></p><p> sy
111、stem("cls");</p><p><b> break;</b></p><p><b> case 'd':</b></p><p><b> case 'D':</b></p><p><b>
112、flag=0;</b></p><p><b> break;</b></p><p><b> default:</b></p><p> system("cls");</p><p><b> }</b></p><
113、;p><b> }</b></p><p><b> }</b></p><p><b> ?。?lt;/b></p><p><b> 該程序的截圖:</b></p><p><b> 初始化界面截圖如下</b></p
114、><p> 選A時的顯示結果截圖如下</p><p> 選擇B時的顯示結果截圖如下</p><p> 選C時的顯示結果截圖如下</p><p> 十一、使用說明(給出軟件如何使用,使用時的注意事項)</p><p> VC++6.0編程環(huán)境使用</p><p> 1、 VC++
115、6.0程序啟動 </p><p> 2、新建工程Project</p><p> 3、 設定工程Project名稱、保存位置 </p><p> 4、 設定工程Project的類型 </p><p> 5、 工程Project的描述信息生成</p><p&
116、gt; 6、 空工程Project建立完畢</p><p> 7) 向工程Project中添加(新建)源代碼文件的類型、名稱、保存位置 </p><p> 8、設定源代碼文件的類型、名稱</p><p> 9、 源代碼文件被添加到工程中 </p><p> 10、在源代碼文件中添加程
117、序代碼</p><p> 11、程序代碼編譯完成后編譯、鏈接過程</p><p><b> 注意事項: </b></p><p> (1) 一個工程project中可以有多個源文件(.cpp)、多個頭文件(.h);</p><p> 但這些源代碼文件中只能出現(xiàn)一個main函數(shù),作為整個程序運&
118、lt;/p><p><b> 行的入口; </b></p><p> ?。?)必須關閉前一次程序運行結果窗口,才能進行下一次程序運行; </p><p> ?。?)書寫標識符時,忽略了大小寫字母的區(qū)別。 </p><p> ?。? ) 忘記加分號 </p>
119、<p><b> (5) 多加分號</b></p><p><b> 十二、課程設計總結</b></p><p> 本次課程設計的題目是:哈夫曼(Huffman)編/譯碼器。通過這次課程設計,我了解到自己在編寫程序方面還有很多不足,在實踐過程中老師給了我很大的幫助。在這次課程設計中,雖然不會成功的編寫一個完整的程序,但是在看程序的
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 眾賞文庫僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 哈夫曼(huffman)編譯碼器課程設計
- 哈夫曼課程設計報告--哈夫曼編譯碼器
- 哈夫曼編譯碼器課程設計報告
- 哈夫曼編碼譯碼器課程設計
- (哈夫曼編碼譯碼器)(課程設計報告)
- 哈夫曼編碼譯碼器課程設計--- 哈夫曼樹的建立與實現(xiàn)
- 赫夫曼編譯碼器數(shù)據(jù)結構課程設計
- 數(shù)據(jù)結構課程設計-哈夫曼編碼譯碼器
- java哈夫曼編碼譯碼器
- 課程設計-赫夫曼編譯碼器數(shù)據(jù)結構設計
- 赫夫曼編譯碼器的實現(xiàn)數(shù)據(jù)結構課程設計報告
- 數(shù)據(jù)結構哈夫曼編碼譯碼器課程設計報告(有源程序)
- 課程設計--哈夫曼編碼與譯碼
- 課程設計---pcm編譯碼器設計
- 哈夫曼編碼與譯碼課程設計報告
- 應用數(shù)據(jù)結構課程設計--huffman編/譯碼器
- 哈夫曼編碼譯碼的實現(xiàn)課程設計
- 數(shù)據(jù)結構課程設計報告——哈夫曼編譯器
- 數(shù)據(jù)結構課程設計--哈夫曼編編譯器
- 哈夫曼編碼譯碼數(shù)據(jù)結構課程設計
評論
0/150
提交評論