![](https://img2022.cnblogs.com/blog/2840850/202207/2840850-20220723100333642-23368277.png)
1 #include<cstdio> 2 #include<cstring> 3 #include<ctype.h> 4 const char *rev="A 3 HIL JM O 2TUVWXY51SE Z 8 "; 5 const char *msg[]={"not a palindrome","a palindrome","a mirrored string","a mirrored palindrome"}; 6 7 char r(char ch){ 8 if(isalpha(ch))return rev[ch-'A']; 9 else return rev[ch-'0'+25]; 10 }//isalpha()判断一个字符是否为英文字符 11 12 int main(){ 13 char s[30]; 14 while(scanf_s("%s",&s)==1){ 15 int len=strlen(s); 16 int p=1,m=1; 17 for(int i=0;i<(len+1)/2;i++){ 18 if(s[i]!=s[len-1-i])p=0;//不是回文串 19 if(r(s[i])!=s[len-1-i])m=0;//不是镜像串 20 } 21 printf_s("%s is %s",s,msg[p+2*m]); 22 } 23 return 0; 24 }
头文件ctype.h包含关于字符判断和处理的函数,
isalpha()//判断一个字符是否为英文字符 isalnum() //判断一个字符是否为数字或英文字母,当传入参数为A~Z、a~z、0~9,则函数返回非零值,否则返回零。 (返回非零值的状况:传入字符A~Z、a~z、0~9或数65~90、97~122、48~57。) isdigit()// 判断一个字符是否为阿拉伯数字 isxdigit()//测试传入参数是否为十六进制数字字符 isupper()//测试传入参数是否为大写英文字母 islower()//测试传入参数是否为小写英文字母 isascii()//测试传入参数是否为有效的ASCII字符 isspace()//测试传入参数是否为空字符 ispunct()//测试传入参数是否为标点符号
使用scanf()输入数组,另一种输入方法参照算法竞赛 例3-3回文词(Palindromes,UVa401) - 灰信网(软件开发博客聚合) (freesion.com)