当前位置:首页 » 编程软件 » 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就会啊~~

热点内容
linux查看selinux状态 发布:2025-07-20 13:36:35 浏览:914
福利资源解压密码 发布:2025-07-20 13:34:10 浏览:269
我的世界怎么在手机搞服务器 发布:2025-07-20 13:26:07 浏览:905
android系统键盘 发布:2025-07-20 13:19:38 浏览:500
程序化交易算法 发布:2025-07-20 13:09:58 浏览:973
已关闭服务器是什么意思 发布:2025-07-20 13:06:49 浏览:709
三星s5密码多少钱 发布:2025-07-20 12:55:14 浏览:961
密码忘记了怎么找回 发布:2025-07-20 12:46:18 浏览:534
华为的密码锁为什么开不了 发布:2025-07-20 12:45:35 浏览:133
app登录密码在哪里 发布:2025-07-20 12:22:31 浏览:693