33,008
社区成员
发帖
与我相关
我的任务
分享
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define swap(a,b) {(a)=(a)^(b); (b)=(a)^(b); (a)=(a)^(b);}
char str[1000], rev[1000], mir[1000];
char mirror[]={"1SE Z 8 A 3 HIL JM O 2TUVWXY5"};
void Strrev(char s[]){ /*回文函数*/
int i, len;
len = strlen(s);
for(i = 0; i<(len/2); ++i)
swap(s[i],s[len-i-1]);
}
int main(){
int len;
int i, flag1, flag2;
while(scanf("%s", str)!=EOF){
strcpy(rev, str);
Strrev(rev); /*回文字串*/
len = strlen(str);
for(i = 0; i<len; i++){ /*镜像字串*/
mir[i] = mirror[str[i]-'1'];
}
mir[i] = '\0';
Strrev(mir);
flag1 = strcmp(str, rev);
flag2 = strcmp(str, mir);
printf("%s -- ", str);
if(flag1!=0&&flag2!=0){
printf("is not a palindrome.");
}
else if(flag1==0&&flag2!=0){
printf("is a regular palindrome.");
}
else if(flag1!=0&&flag2==0){
printf("is a mirrored string.");
}
else if(flag1==0&&flag2==0){
printf("is a mirrored palindrome.");
}
printf("\n\n");
}
}