12枚硬幣程序報(bào)告_第1頁
12枚硬幣程序報(bào)告_第2頁
12枚硬幣程序報(bào)告_第3頁
免費(fèi)預(yù)覽已結(jié)束,剩余6頁可下載查看

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡介

1、程序閱讀報(bào)告報(bào)告人:李勇、李杰、邱中原 唯一可譯碼的程序如下:#include<stdio.h>#include<string.h>char b3030; / 該數(shù)組用來存放后綴,是一個全局變量 int Q; / 用來標(biāo)示 b 數(shù)組中后綴的個數(shù),也是一個全局變量 void HouZhui(char c,char d,int L1,int L2) / 子程序 int i,j,temp=0; / 定義并初始化變量char m30; / 定義一個 m 數(shù)組來存放新增加的后綴 for(i=0;i<L1;i+) /L1 是較短的碼字長度 if(ci=di) continue

2、; / 兩個不同的碼字相比較, 如果當(dāng)前字符相等就繼 續(xù)比下去,直到不滿足循環(huán)條件else break;/ 不等便跳出循環(huán)if(i=L1) / 當(dāng) i 等于較短的碼長 L1 時,說明前 L1 個元素都相等 for(j=0;j<L2-L1;j+)/ 該 for 循環(huán)將后綴暫存于 m 數(shù)組中mj=dL1+j;mj='0' / 字符串結(jié)束標(biāo)志,該句不可省略for(i=0;i<Q;i+) / 數(shù)組 m 和數(shù)組 b i 相等時,說明該后綴已經(jīng)在 b 數(shù)組中 了,不用再重復(fù)復(fù)制,此時將 temp 由初始化的 0 置成 1,并且要結(jié)束該循環(huán)if(strcmp(bi,m)=0) t

3、emp=1;break;if(temp!=1) /當(dāng)temp不為1時,說明新增后綴不在b數(shù)組中,要復(fù)制過去, 并將后綴個數(shù)加一個strcpy(bQ,m);Q+;void main()int i,j,k,k1,k2,n,h;/ 定義變量char a3030;/定義一個二維數(shù)組,存放碼字int L30;/ 與碼字對應(yīng),存放其長度int temp=1;/ 定義變量,并初始化為 1printf(" 請輸入碼字個數(shù): "); scanf("%d",&n);/ 輸入碼字個數(shù)printf(" 請分別輸入碼字 :n");for(i=0;i&l

4、t;n;i+)/該for循環(huán)完成碼字輸入,并記錄各個碼字長度 scanf("%s",a+i);L i =strlen(a i );for(i=0;i<n-1;i+) for(j=0;j<n;j+) if(i!=j&&L i =Lj&&strcmp(a i ,a j )=0) h=1; / 當(dāng)兩個碼字完全相同時,使h為1if(i!=j && L i <L j )/ 碼字、碼長不同時,調(diào)用子程序HouZhui(a i ,a j ,L i ,L j );if(Q>0)/ 條件滿足時,說明有后綴產(chǎn)生for(i=

5、0;i<Q;i+)/ 該 for 循環(huán)將在后綴數(shù)組和碼字?jǐn)?shù)組中產(chǎn)生新后綴,要根據(jù)碼長比較情況分成兩類k1=strlen(b i ); / 將后綴的長度記錄下來for(j=0;j<n;j+)if(k1<L j ) / 第一類HouZhui(b i ,a j ,k1,L j );for(k=0;k<n;k+)for(j=0;j<Q;j+)k2=strlen(b j ); / 將第一類情況比較后的后綴長度記錄下來 if(k2>L k ) / 第二類HouZhui(a k ,b j ,L k ,k2);printf(" 尾隨后綴集合為 :");

6、/ 以下三句輸出后綴 for(i=0;i<Q;i+) printf("%s ",b i );for(i=0;i<n&&temp!=0;i+) / 該 for 循環(huán)將遍歷 a、b 數(shù)組,探求是否有 相等元素,若有相等元素,置temp為0并跳出循環(huán);否則繼續(xù)比較 for(j=0;j<Q;j+)if(strcmp(a i ,b j )=0) temp=0;break;else continue;printf("n");if(h!=1)/h 不等于 1 表明碼字中沒有相同的if(temp=0) /temp 等于 0說明碼字和后綴

7、有相同元素 printf(" 該碼不是唯一可譯碼 !n");else /temp 不等于 0說明碼字和后綴沒有相同元素printf(" 該碼是唯一可譯碼 !n");else II此處else對應(yīng)h等于1,說明碼字中有相同的printf("n該碼組不是唯一可譯碼!n");printf("n");else if(h!=1)/此處else對應(yīng)于Q等于0,即沒有后綴產(chǎn)生,而h不等于1表明碼字中沒有相同的printf("該碼組是唯一可譯碼r);else /此處else對應(yīng)h等于1,說明碼字中有相同的printf("n該碼組不是唯一可譯碼!n");printf("n");幾種情況的運(yùn)行結(jié)果如下: 碼字有相同的請輸入碼宇個數(shù):5 請分別輸入碼字:11011110101尾隨后綴集合為該碼組不是唯一可譯碼! 碼字沒有相同的非唯一可譯碼謂輸入碼宇個數(shù):7請分別輸入碼字:aGadabbbaddebbbcde尾隨后綴集臺為:d bb eb cde de b ad bode 該碼不是唯一可譯碼! 碼字沒有相同的唯一可譯碼請輸入碼宇個數(shù):6 請分別輸入碼字:01011011101111011111該碼組是唯一

溫馨提示

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

評論

0/150

提交評論