这是一道关于运用常量表对代码进行简化操作的题目,对于题目的理解要求有以下几点:输入一个字符串1、判断其是否为回文串2、判断其是否为镜像串;结果:如果是回文串又是镜像串输出“ -- is a mirrored palindrome.”,如果是只是回文串,则输出“ -- is a regular palindrome. ”,如果只是镜像串,则输出“ -- is a mirrored string.”,如果不是回文串,也不是镜像串,则输出“ -- is not a palindrome.”
其中需要注意字符‘o'和数值'0'一样的;
判断是否回文:
int isp(char a[]){
int len=strlen(a)-1;
for(int i=0;i<len;i++,len--)
if(a[i]!=a[len])
return 0;
return 1;
}
判断是否镜像:
先找出有镜像的字符(A、E、H、I、L、J、M、O、S、T、U、V、W、X、Y、Z)≯(A、3、H、I、J、L、M、O、2、T、U、V、W、X、Y、5)这个数组要实现,如果输入一个字符可以找到它的镜像字符;例如输入E之后转换为3;输入3转换为E;
我们可以把这个数组分成两类,一类为字符型数组,一类为数值型数组;在字符型数组中以减A作为位置,数值型数组以减1作为位置。
char a[]={'A',' ',' ',' ','3',' ',' ','H','I','L',' ','J','M',' ','O',' ',' ',' ','2','T','U','V','W','X','Y','5'};
int b[]={'1','S','E',' ','Z',' ',' ','8',' '};
int ism(char s[]){
int len=strlen(s)-1,temp=0;
char t[100];
for(int i=0;i<len;i++,len--){
if(s[i]>='A'&&s[i]<='Z'){
temp=s[i]-'A';
t[i]=a[temp];
}
else{
temp=s[i]-'1';
t[i]=b[temp];
}
if(s[i]!=s[len])
return 0;
}
return 1;
}
通过判断返回值,来判断字符串的类型;