本题主要是汉字字符的判断问题:表示汉字字符的前一个字节一定小于零,第二个字节可能大于零。
关键思路:用一个结构体模拟,从头开始扫描字符数组,将每个字符依次存在结构体中。
#include <stdio.h>
#include <string.h>
typedef struct node
{
int flag;//flag=0表示是汉字字符
int i,j;//表示代表字符的位置
}node;
int main()
{
char str[2088];
node f[2088];
int n,len,flen;
int i;
scanf("%d",&n);
getchar();//注意容纳回车
while(n>0)
{
gets(str);
len=strlen(str);
flen=0;
for(i=0;i<len;)
if(str[i]>0)
{
f[flen].flag=1;
f[flen].i=i;f[flen].j=0;
++i;
flen++;
}
else
{
f[flen].flag=0;
f[flen].i=i;f[flen].j=i+1;
i+=2;
flen++;
}
for(i=flen-1;i>=0;--i)
if(f[i].flag)
printf("%c",str[f[i].i]);
else
printf("%c%c",str[f[i].i],str[f[i].j]);
printf("\n");
n--;
}
return 0;
}