
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)
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 微软正式发布.NET 10 Preview 1:开启下一代开发框架新篇章
· 没有源码,如何修改代码逻辑?
· PowerShell开发游戏 · 打蜜蜂
· 在鹅厂做java开发是什么体验
· WPF到Web的无缝过渡:英雄联盟客户端的OpenSilver迁移实战