求大神用c语言帮我做一下这道题,

问题描述:

求大神用c语言帮我做一下这道题,
定义十进制的数字和字母一个对照关系,'A'对应0,'B'对应1...依次类推.26-'A' 27-'B'28-'C' 29-'D' 30-'E' 31-'F'
每个十进制的整数用五位二进制数来表示,比如1用00001表示,2用00010表示,依次类推
现有一个字符串的游戏,规则如下:如果看到的是数字0,则随机的翻译为一个大写的字母,如果看到的是数字1,
则随机的翻译为0~9之间的一个数字.如:00010可翻译为ABC1D或者JUG9N等.
游戏开始的时候,输入一串字符串,该字符串是由数字(0,1)和字符组成的.
请按照以上的推则反向将字符串翻译成1和0组成的二进制数字,并以5位二进制位一组,将这5个二进制转换成十进制,输出十进制数字对应的字母.
例如:
输入:
0N1E2H5Q39AK2TGIC9ERT39B2P423L8B20D
输出:FLEENOW
1个回答 分类:综合 2014-11-30

问题解答:

我来补答
int decode(char *buf)
{
int ret = (buf[0] - '0') << 4 | (buf[1] - '0') << 3 | (buf[2] - '0') << 2 | (buf[3] - '0') << 1 | (buf[4] - '0');
return ret;
}

int main(int argc,char *argv[])
{
printf("请输入字符串\n");
char inputBuf[256] ;

char outputBuf[256] = {0};
scanf("%s",inputBuf);

int i;
for(i=0;i<strlen(inputBuf);i++)
{
if(inputBuf[i] >= 'A' && inputBuf[i] <= 'Z')
{
inputBuf[i] = '0';
}
else if(inputBuf[i] >= '0' && inputBuf[i] <= '9')
{
inputBuf[i] = '1';
}
}

printf("输出:%s\n",inputBuf);

int off = 0;
int num;
for(i=0;off < strlen(inputBuf);i++,off+=5)
{
num = decode(inputBuf+off);
outputBuf[i] = num % 26 + 'A';
}

outputBuf[i] = '\0';

printf("输出:%s\n",outputBuf);
return 0;
}第一个字符是大写字母才会出现这样的结果
 
 
展开全文阅读
剩余:2000
上一页:hfftbjhg