不管前面有没有if else 什么的,只要两处代码都是if(b==0)那就足以肯定做的是一样的判断,你不过是嵌套了判断而已,结果还是做同样的判断,
真搞笑啊,还说我没理解,我确实无法理解做同样的判断有何意义,
“else已经说明现在的状态和上一个if状态相反了”既然已经相反了,那b肯定就不等于0了,你再跟一句if(b==0)绝对不会为真的
aup0: if(a==0)
{
if(b==0)//和下面的条件是一样的
{
if(b==0)
{
goto aup0;
}
else
goto subbdisplay0;
}
else
if(b==0)//和上面的条件是一样的
/////////////////////////////////////////////////////////////
goto adddisplay0;
}
else
if(b==0)//和下面的条件是一样的
{
if(b==0)
{
goto adow0;
}
else
goto adddisplay0;
}
else
if(b==0)//和上面的条件是一样的
{
goto subbdisplay0;
}
else
goto adow0;
视频播放器是一种解码器。
解码器是对已编码的数字视频进行还原解码操作的程序(视频播放器)或设备。比如系统安装了real编码器那就能将其他格式文件转换成rm或rmvb格式,如果安装了real解码器那就能播放rm或rmvb格式文件。
这已经不是简单C语言能够编写出来的,它的核心是解码编码的算法。
1,如果你只是想用某些功能,不要自己编了。找一个吧。
2,非要自己编的话,要站在巨人的肩膀上。很多种编码都有开源的解码器了。可以利用他们。或者利用开源的软件,在人家基础上开发。
3,如果你认为你有希望改进压缩解压算法,得到更好的效果,更省地方,更有效的解压算法。那首先要做的是了解各种编码的压缩解压算法。创造一种更好的算法。
下面的Unix下函数可以会帮到你
相关函数 putenv,setenv,unsetenv
表头文件 #include<stdlibh>
定义函数 char getenv(const char name);
函数说明 getenv()用来取得参数name环境变量的内容。参数name为环境变量的名称,如果该变量存在则会返回指向该内容的指针。环境变量的格式为name=value。
返回值 执行成功则返回指向该内容的指针,找不到符合的环境变量名称则返回NULL。
范例 #include<stdlibh>
mian()
{
char p;
if((p = getenv(“USER”)))
printf(“USER=%s\n”,p);
}
执行 USER = root
putenv(改变或增加环境变量)
相关函数 getenv,setenv,unsetenv
表头文件 #include4<stdlibh>
定义函数 int putenv(const char string);
函数说明 putenv()用来改变或增加环境变量的内容。参数string的格式为name=value,如果该环境变量原先存在,则变量内容会依参数string改变,否则此参数内容会成为新的环境变量。
返回值 执行成功则返回0,有错误发生则返回-1。
错误代码 ENOMEM 内存不足,无法配置新的环境变量空间。
范例 #include<stdlibh>
main()
{
char p;
if((p = getenv(“USER”)))
printf(“USER =%s\n”,p);
putenv(“USER=test”);
printf(“USER+5s\n”,getenv(“USER”));
}
执行 USER=root
USER=root
setenv(改变或增加环境变量)
相关函数 getenv,putenv,unsetenv
表头文件 #include<stdlibh>
定义函数 int setenv(const char name,const char value,int overwrite);
函数说明 setenv()用来改变或增加环境变量的内容。参数name为环境变量名称字符串。
参数 value则为变量内容,参数overwrite用来决定是否要改变已存在的环境变量。如果overwrite不为0,而该环境变量原已有内容,则原内容会被改为参数value所指的变量内容。如果overwrite为0,且该环境变量已有内容,则参数value会被忽略。
返回值 执行成功则返回0,有错误发生时返回-1。
错误代码 ENOMEM 内存不足,无法配置新的环境变量空间
范例 #include<stdlibh>
main()
{
char p;
if((p=getenv(“USER”)))
printf(“USER =%s\n”,p);
setenv(“USER”,”test”,1);
printf(“USER=%s\n”,getenv(“USEr”));
unsetenv(“USER”);
printf(“USER=%s\n”,getenv(“USER”));
}
执行 USER = root
USER = test
USER = (null)
//哈夫曼编码
#include<stdioh>
#include<stdlibh>
#include<stringh>
#include<conioh>
#define TOTAL_LEAF 8 //叶子数目根据需要设定
#define TOTAL_NODE 2TOTAL_LEAF-1 // Huffman 树中结点总数
typedef struct
{
int weight;
int lchild;
int rchild;
int parent;
}htnode;
typedef htnode huffmantree[TOTAL_NODE+1];// huffmantree是结构数组类型,其0号单元不用,存储哈夫曼树
typedef struct
{
char ch;
char code[TOTAL_LEAF+1];
}codenode;
typedef codenode huffmancode[TOTAL_LEAF+1];
void inithuffmantree(huffmantree ht) //初始化哈夫曼树函数inithuffmantree()
{
int i;
for(i=0;i<=TOTAL_NODE;i++)
{
ht[i]weight=0;
ht[i]lchild=ht[i]rchild=ht[i]parent=0;
}
}
void inputweight(huffmantree ht) //输入权值函数
{
int i;
for(i=1;i<=TOTAL_LEAF;i++)
{
printf("请输入第%d个权值: ",i);
scanf("%d",&ht[i]weight);
}
}
void selectmin(huffmantree ht, int i, int p1, int p2)
{
int j,min1,min2; // min1,min2分别是最小权值和次小权值
min1=min2=32767;
p1=p2=0;
for(j=1;j<=i;j++)
{
if(ht[j]parent==0) // j 为根结点
if(ht[j]weight<min1||min1==32767)
{
if(min1!=32767)
{
min2=min1;
p2=p1;
}
min1=ht[j]weight;
p1=j;
}
else if(ht[j]weight<min2||min2==32767)
{
min2=ht[j]weight;
p2=j;
}
}
}
void createhuffmantree(huffmantree ht) //构造huffman树,ht[m]为其根结点
{
int i,p1,p2;
inithuffmantree(ht);
inputweight(ht); //输入叶子权值至ht [1n]的weight域
for(i=TOTAL_LEAF+1;i<=TOTAL_NODE;i++) //共进行n-1次合并,新结点依次存于ht[i]中
{
selectmin(ht,i-1,&p1,&p2); //在ht [1 i-1]中选择两个权值最小的根结点,其序号分别为p1和p2
ht[p1]parent=ht[p2]parent=i;
ht[i]lchild=p1;
ht[i]rchild=p2;
ht[i]weight=ht[p1]weight+ht[p2]weight;
}
}
void huffmancodes(huffmantree ht,huffmancode hcd) //根据huffman树ht求huffman编码
{
int c,p,i; // c和p分别指示 ht中孩子和双亲的位置
char cd[TOTAL_LEAF+1];
int start; //指示编码在cd 中的起始位置
cd[TOTAL_LEAF]='\0';
getchar();
printf("请输入字符");
for(i=1;i<=TOTAL_LEAF;i++) //依次求叶子ht [i]的编码
{
hcd[i]ch=getchar(); // 读入叶子ht [i]对应的字符
start=TOTAL_LEAF;
c=i; //从叶子ht [i]开始上溯
while((p=ht[c]parent)!=0) // 直至上溯到ht [ c]是树根为止
{
cd[--start]=(ht[p]lchild==c)'0':'1'; //若ht [ c]是ht[p]的左孩子,则生成代码0,否则生成代码1
c=p;
}
strcpy(hcd[i]code,&cd[start]); //复制编码位串
}
printf("\n");
for(i=1;i<=TOTAL_LEAF;i++)
printf("第%d个字符%c的编码为%s\n",i,hcd[i]ch,hcd[i]code);
}
void main()
{
huffmantree t;
huffmancode h;
printf("\n请输入%d个权值\n",TOTAL_LEAF);
createhuffmantree(t);
huffmancodes(t,h);
}
欢迎分享,转载请注明来源:表白网
评论列表(0条)