|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
.给定一个前缀码如下:
1 01 001
a b c
输入一个长度不少于16的01字符串,输出该字符串的译码。
例:
输入:001011101001011001
输出:cbaabcbac
using namespace std;
int main ()
{
char source_code[300];
int i,n=0,x=0,temp;
char a[100];
cout<<"please input the source code"<<endl;
gets(source_code);
for (i=0;source_code[i]!='\0';i++)
cout<<source_code[i]<<" ";
cout<<endl;
for (i=0;source_code[i]!='\0';i++)
{
if (source_code[i]==0)
n++;
if (source_code[i]==1)
{
if (n==0)
{a[x]='a';
n=0;
x++;}
if (n==1)
{a[x]='b';
n=0;
x++;}
if (n==2)
{a[x]='c';
n=0;
x++;}
}
}
temp=x;
for (x=0;x<temp;x++)
cout<<a[x]<<" ";
return 0;
}
执行成功了,但是得不到正确的结果,不知道哪里出错了,求大神帮我看看
- #include <iostream>
- using namespace std;
- int main()
- {
- char str[300];
- printf("请输入要翻译的编码:\r\n");
- scanf("%s",&str);
- printf("翻译后的字符串为:\r\n");
- for (int i=0;i<strlen(str);i++)
- {
- if(str[i]=='0' && str[i+1]=='1')
- {
- printf("b");//如果当前字符是0并且下一个字符是1就被翻译成b
- i++;
- }
- else if (str[i]=='0' && str[i+1]=='0' && str[i+2]=='1')
- {
- printf("c");
- i+=2;
- }
- else if (str[i]=='1')
- {
- printf("a");
- }
- }
- printf("\n");
- system("pause");
- return 0;
- }
复制代码
|
|