这道题较为简单,关键在于表示MIRROR的映射关系,用到了strchr函数
#include <stdio.h>
#include <string.h>
const char c[40] = "ABCDEFGHIJKLMNOPQRSTUVWXYZ123456789";
const char r[40] = "A 3 HIL JM O 2TUVWXY51SE Z 8 ";
int isP(char *d)
{
int i;
int l = strlen(d);
for(i = 0; i <= l/2; ++i)
{
if(d[i] != d[l-1-i]) return 0;
}
return 1;
}
int isM(char *d)
{
int i;
int temp;
int l = strlen(d);
for(i = 0; i <= l/2; ++i)
{
temp = strchr(c, d[i]) - c;
if(d[l-1-i] != r[temp]) return 0;
}
return 1;
}
int main()
{
char x[25];
int pc, pm;
while((scanf("%s", x)) != EOF){
getchar();
pc = isP(x);
pm = isM(x);
if(pc == 0 && pm == 0) printf("%s -- is not a palindrome.\n", x);
else if(pc == 0 && pm == 1) printf("%s -- is a mirrored string.\n", x);
else if(pc == 1 && pm == 0) printf("%s -- is a regular palindrome.\n",x);
else if(pc == 1 && pm == 1) printf("%s -- is a mirrored palindrome.\n",x);
printf("\n");
}
return 0;
}