#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
#include<string.h>
char code[8][(1 << 8)-1];
char readchar()
//读取编码文本的字符(数字),并且处理换行问题
{
char c ;
while ((c = getchar()) == '\n' || c == '\r');
return c;
}
int trans(int len)
//读取len个字符转化成十进制位 其中已经包含了读取字符这个操作
{
int result=0;
for (int i = len;i; i--)
{
result = 2 * result + readchar() - '0';
//readchar的返回值是字符 要转化一下;
}
return result;
}
int readcode()
{
memset(code, 0, sizeof(code));
//读取编码头
for (int i = 1;; i++)
{
for (int j = 0;j<((1<<i)-1); j++)
{
char c = getchar();
if (c == EOF)
{
return 0;
}
//文件已无文件可以读取 异常结束
else if (c == '\n' || c == '\r')
{
return 1;
}
//正常输入结束
code[i][j] = c;
// printf("%c", code[i][j]);
//位数i从1开始,数值大小j从0开始
}
}
return 1;
}
int main(void)
{
int len=0;
int value=0;
while (readcode())
//输入的编码头没有结束或者不是换行符号就多次运行程序
{
for(;;)
{
len = trans(3);
if (len == 0)
{
break;
}
for (;;)
{
value = trans(len);
if (value >= ((1 << len) - 1)) break;
else
{
// printf("这里进行了\n");
char c = code[len][value];
printf("%c", c);
}
}
}
printf("\n");
}
return 0;
}
UVA213
最新推荐文章于 2022-11-19 15:39:37 发布