main()
{
int i;
char **p;
int msg[16]={0x40, 0x41, -1, 0x00, 0x01, -1, 0x12, -1, 0x20, 0x27, 0x41, 0x35, -1, 0x51, 0x12, 0x04};
char* strar[]={"bejing", "shanghai", "guangzhou", "guangdong", "Tokyo", "American"};
char* (*pstrar)[6];
pstrar = &strar;
p = strar;
for(i=0; i<16; i++)
{
if(msg[i] == -1)
{
putchar(' ');
continue;
}
else if(msg[i]&0xF0 == 0x40)
{
putchar(p[msg[i]>>4][msg[i]&0x0F]);
continue;
}
else if(msg[i]&0xF0 == 0x30)
{
putchar(*(strar[msg[i]>>4]+(msg[i]&0x0F)));
continue;
}
else
{
putchar(*((*pstrar)[msg[i]>>4]+(msg[i]&0x0F)));
}
}
}
这道题到底如何解
哪里不清楚呢?首先是数组值的判断,符合要求就显示pstrar数组的值。
0x开头的数字是16进制的数字。
程序运行结果如上,万望采纳。
您好,我是有问必答小助手,您的问题已经有小伙伴解答了,您看下是否解决,可以追评进行沟通哦~
如果有您比较满意的答案 / 帮您提供解决思路的答案,可以点击【采纳】按钮,给回答的小伙伴一些鼓励哦~~
ps:问答VIP仅需29元,即可享受5次/月 有问必答服务,了解详情>>>https://vip.csdn.net/askvip?utm_source=1146287632