欢迎来到天天文库
浏览记录
ID:38422522
大小:49.50 KB
页数:4页
时间:2019-06-12
《费诺编码的C语言实现实验论文》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、#include//头文件#include#include#defineBmax10//最长码长度#defineSmax20//数组最大长度/************定义"位"的结构**********/structBit{charb[Bmax];//定义码长度数组的数据类型字符型组成成员intlast;};/***********定义符号的结构**********/typedefstructsymbol//共用体结构{charc;//定义信源符号c为字符型floatprobability;//定义符号概率prob
2、ality为浮点型structBitbit;//嵌套的结构体}sbl;sbls[Smax];//S数组最大容量符号/********输入符号的符号概率********/voidinput(intn){inti;//定义变量i类型整型intc;//定义变量c类型还是整型的好,字符型的也可以printf("请输入符号及符号概率");//打印出提示语"请输入符号及符号概率"c=getchar();for(i=0;i3、obability);//用scanf函数输入符号概率c=getchar();}}/***********用冒泡法排序**********/voidsort(intn){floatt;//定义变量t为浮点型chara;//定义变量a为字符型inti,j;//定义循环变量i,j为整型for(i=1;i4、分别交换其符号和概率{t=s[j].probability;a=s[j].c;s[j].probability=s[j+1].probability;s[j].c=s[j+1].c;s[j+1].probability=t;s[j+1].c=a;}//因此,此函数实现了各符号和其所对应的概率,按照概率的大小,从大到小排序}/************分组函数************/voidgroup(intn)//定义函数,无返回值{inti,pmid,plow,phigh;//定义变量为整型pmid=phigh=n;//给两个变量赋值为nplow=0;//给变量赋值5、为0for(i=0;i6、=dmin,则跳出整个for循环,要尽量使两组的差为0,才最接近1:1break;7、}mid=i;//给中间数位赋值icode(low,mid,high);group1(low,mid,mid);//将一组分为了两组,中间为零界midgroup1(mid,high,high);}/****对各组赋予一个二进制码元“0”和“1”***/voidcode(intlow,intmid,inthigh)//编码{inti;//定义循环变量i为整型for(i=low;i
3、obability);//用scanf函数输入符号概率c=getchar();}}/***********用冒泡法排序**********/voidsort(intn){floatt;//定义变量t为浮点型chara;//定义变量a为字符型inti,j;//定义循环变量i,j为整型for(i=1;i4、分别交换其符号和概率{t=s[j].probability;a=s[j].c;s[j].probability=s[j+1].probability;s[j].c=s[j+1].c;s[j+1].probability=t;s[j+1].c=a;}//因此,此函数实现了各符号和其所对应的概率,按照概率的大小,从大到小排序}/************分组函数************/voidgroup(intn)//定义函数,无返回值{inti,pmid,plow,phigh;//定义变量为整型pmid=phigh=n;//给两个变量赋值为nplow=0;//给变量赋值5、为0for(i=0;i6、=dmin,则跳出整个for循环,要尽量使两组的差为0,才最接近1:1break;7、}mid=i;//给中间数位赋值icode(low,mid,high);group1(low,mid,mid);//将一组分为了两组,中间为零界midgroup1(mid,high,high);}/****对各组赋予一个二进制码元“0”和“1”***/voidcode(intlow,intmid,inthigh)//编码{inti;//定义循环变量i为整型for(i=low;i
4、分别交换其符号和概率{t=s[j].probability;a=s[j].c;s[j].probability=s[j+1].probability;s[j].c=s[j+1].c;s[j+1].probability=t;s[j+1].c=a;}//因此,此函数实现了各符号和其所对应的概率,按照概率的大小,从大到小排序}/************分组函数************/voidgroup(intn)//定义函数,无返回值{inti,pmid,plow,phigh;//定义变量为整型pmid=phigh=n;//给两个变量赋值为nplow=0;//给变量赋值
5、为0for(i=0;i6、=dmin,则跳出整个for循环,要尽量使两组的差为0,才最接近1:1break;7、}mid=i;//给中间数位赋值icode(low,mid,high);group1(low,mid,mid);//将一组分为了两组,中间为零界midgroup1(mid,high,high);}/****对各组赋予一个二进制码元“0”和“1”***/voidcode(intlow,intmid,inthigh)//编码{inti;//定义循环变量i为整型for(i=low;i
6、=dmin,则跳出整个for循环,要尽量使两组的差为0,才最接近1:1break;
7、}mid=i;//给中间数位赋值icode(low,mid,high);group1(low,mid,mid);//将一组分为了两组,中间为零界midgroup1(mid,high,high);}/****对各组赋予一个二进制码元“0”和“1”***/voidcode(intlow,intmid,inthigh)//编码{inti;//定义循环变量i为整型for(i=low;i
此文档下载收益归作者所有