回文词判断

 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)

posted @ 2022-07-23 10:20  拾一贰叁  阅读(29)  评论(0编辑  收藏  举报