當前位置:首頁 » 編程軟體 » c可編解碼

c可編解碼

發布時間: 2022-12-28 17:18:18

① 赫夫曼編/解碼 c語言程序

HC
=
(HuffmanCode)malloc((n+1)*sizeof(char
*));
p
=
m;
cdlen
=
0;
for(i=1;i<=m;++i)
HT[i].weight
=
0;//遍歷哈夫曼樹時用作結點狀態標志
while(p){
if(HT[p].weight
==
0){
//向左
HT[p].weight
=1;
if(HT[p].lchild!=0){
p=HT[p]lchild;
cd[cdlen++]="0";
}
else
if(HT[p].rchild
==
0){
//登記葉子結點的字元的編碼
HC[p]
=
(char
*)malloc((cdlen+1)*sizeof(char));
cd[cdlen]
=
"\0";
strcpy(HC[p].cd);
//復制編碼(串)
}
}
else
if
(HT[p].weight
==
1){
//向右
HT[p].weight
=2;
if(HT[p].rchild
!=0){
p
=
HT[p].rchild;
cd[cdlen++]
=
"1";
}
}else{
//HT[p].weight
==
2,退回
HT[p].weight
=
0;
p=
HT[p].parent;
--cdlen;
//退到父結點,編碼長
度減1
}//else
}//While

② 請用C語言編寫一個解碼函數

稍等。。。
如果是abc.這個解碼是123還是123?

③ c語言 簡單解碼

ch1=(char) (ch1+3);
ch2=(char) (ch2+3);
強制類型轉換要括起來。
這個其實不用類型轉換的。 int 和 char 可以混合使用。
按你那樣寫就成了 一個 char()函數了。

④ 請用C語言編寫一個解碼函數,把一個英語句子譯成數字代碼。解碼規則是

#include<stdio.h>
intmain()
{
charc;
while((c=getchar())!=' ')
{
if(c=='')
printf("*");
else
{
if(c>=97&&c<=122)
printf("%d",c-=96);
else
{
if(c>=65&&c<=90)
printf("%d",c-=38);
else
printf("%c",c);
}
}
}
return0;
}

⑤ C語言編程題:數字解碼

number=symbol-'0';

⑥ 如何用C語言解碼,要求用原來字母前面的第四個字母代替原來的字母

#include <stdio.h>
void main()
{
char c; while ((c=getchar())!='\n')
{
if ((c>='a'&&c<='z')||(c>='A'&& c<='Z')) //c為小寫字母a-z或者大寫字母A-Z
{
c=c+4; //把c變成其後面的第4個字母
if(c>'Z'&&c<='Z'+4||c>'z') //若c為小寫字母時若大於z即-26,若c為大寫時大於Z並且c同時小於等於Z+4
{
c=c-26;
}
}
printf("%c",c);
} printf("\n");
}

⑦ C語言 編寫一個解碼程序,把一個英語句子譯成數字代碼。

#include <stdio.h>

int main ()
{
char c;

while ((c = getchar()) != '\n')
{
if(c==' ')
{
printf("*");
continue;
}
c-=64;
if (c!=-32)
printf ("%d ",c);
}

printf (".");

return 0;
}
試試看符不符合你的要求

⑧ 2:1卷積碼 c語言編譯

charinput[10]={0,0,1,1,1,0,1,1,1,1};
charoutput[5]={0};

intr1=0,r2=0;
inti;

for(i=0;i<5;i++)
{
output[i]=(input[2*i]+r1+r2)&1;
r2=r1;
r1=output[i];
}

for(i=0;i<5;i++)
printf("%d",output[i]);
printf(" ");

⑨ c語言版 哈弗曼編碼和解碼

哈弗曼編碼涵義是將一竄數字或者字母按哈弗曼數的形式編碼,並使得這竄字元中的每個數字或者字母都能被唯一的「0,1」序列來編碼,而且沒有相同的前綴,這是一種非等長的編碼方式。如果你覺得這樣解釋很難聽懂的話就舉個例子:如果用計算機發信息,只能用0和1,但是每個字母的使用頻度又不一樣,比如a ,i,o,e等這些字母使用的就多些,而z,v這樣的字母使用的就少一些,如果所有字母都用等長的0,1序列來編碼的話會造成浪費,那麼我們就把常用的字母用少點的0,1,進行編碼(比如用兩個或三個),不常用的再用多點0,1編碼,但是還不能造成油相同前綴的情況,這會使計算機無法識別,比如E用010,z用01001,計算機就只能識別出前面三個是E,而後面就拋棄或者識別出別的字母。哈弗曼編碼就是出於這樣的條件下產生的。也許這樣的形容還是很抽象,那麼再具體點。加入a,b,c,d,e使用的頻度分別是10,7,5,5,3那麼就可以構造哈弗曼數:從樹頂到樹根,假如左邊是0,右邊是1,那麼就能得到他們的哈弗曼編碼(就是從上到下,到達他們字母經過的路徑),分別是:a:00;b:11;c:10;d:011;e:010;你可以發現他們全部沒有相同的前綴。具體的編碼方式我可以大致的跟你說下,因為我還在上班所以無法使用自己的電腦進行編譯,怕寫的有錯誤,你拿到一個待編碼的數據肯定有標識符(即上面的a,b,c),還有所帶的權值(即3,5,5等)你需要用哈弗曼演算法構造出哈弗曼編碼,即每次取最小的兩個數當作葉子,來生成樹根(樹根的值等於他們的和),整數據就少了一個,直到最後兩個數相加的值作為最終的樹根。然後從上往下,左邊為0右邊為1,到達每個樹葉(即是標識符的位置),那麼路徑的編碼就是他的哈弗曼編碼。以上是演算法,建議你可以用一個結構體(帶標識符,權值,哈弗曼編碼(編碼暫時為空)),用一個vector(C++裡面的數據類型)裝載他們並按照權值大小進行排序,然後通過哈弗曼演算法(另用一個函數來計算)創建一個哈弗曼數,並計算出它的哈弗曼編碼並寫到結構體中,這樣就把字元進行了哈弗曼壓縮。這就是整個過程

⑩ C語言解碼程序

因為你 你輸入的 china 是存在一個緩沖池中, 你調用getchar()他是不斷的從緩沖池中去讀取數據, 第一次 讀取c 然後執行 第二次 讀取h 然後執行 以此類推 , 所以china就會啊~~

熱點內容
原神電腦配置怎麼玩不卡 發布:2025-07-20 18:07:06 瀏覽:955
反編譯獲取原代碼 發布:2025-07-20 17:49:43 瀏覽:492
plc編譯怎麼找 發布:2025-07-20 17:48:56 瀏覽:162
無效的宏名稱將編譯啞宏 發布:2025-07-20 17:48:16 瀏覽:155
250萬解壓 發布:2025-07-20 17:44:52 瀏覽:620
騰訊視頻上傳廣告 發布:2025-07-20 17:35:55 瀏覽:406
掘地求升免費腳本 發布:2025-07-20 17:32:06 瀏覽:962
linux設置python環境變數 發布:2025-07-20 17:22:49 瀏覽:242
柱底層加密區 發布:2025-07-20 17:16:20 瀏覽:913
安卓ids是什麼文件 發布:2025-07-20 17:16:14 瀏覽:668