#include<stdio.h>
#include<string.h>
#include<ctype.h>
const char *rev = "A 3 HIL JM O 2TUVWXY5";//字母镜像后的
const char *ret= "1SE Z 8 ";//数字镜像后的
const char *mag[] = {"not a palindrome","a regular palindrome","a mirrored string","a mirrored palindrome"};
char r(char ch)//判断是不是镜像串
{
if(isalpha(ch))
return rev[ch-'A'];
return ret[ch-'0'];
}
int main()
{
char s[30];
int len , p , m ,i ;
while(scanf("%s",s)==1)
{
len = strlen(s);
p = 1 ,m = 1;
for(i = 0;i<(len+1)/2;i++)
{
if(s[i] != s[len-1-i])
p = 0;//回文串
if(r(s[i]) != s[len-1-i])
m = 0;//镜像
}
printf("%s -- is %s.\n\n",s,mag[m*2+p]);
#include<string.h>
#include<ctype.h>
const char *rev = "A 3 HIL JM O 2TUVWXY5";//字母镜像后的
const char *ret= "1SE Z 8 ";//数字镜像后的
const char *mag[] = {"not a palindrome","a regular palindrome","a mirrored string","a mirrored palindrome"};
char r(char ch)//判断是不是镜像串
{
if(isalpha(ch))
return rev[ch-'A'];
return ret[ch-'0'];
}
int main()
{
char s[30];
int len , p , m ,i ;
while(scanf("%s",s)==1)
{
len = strlen(s);
p = 1 ,m = 1;
for(i = 0;i<(len+1)/2;i++)
{
if(s[i] != s[len-1-i])
p = 0;//回文串
if(r(s[i]) != s[len-1-i])
m = 0;//镜像
}
printf("%s -- is %s.\n\n",s,mag[m*2+p]);
}
return 0;
}
return 0;
}
补:
<ctype.h>
isalpha(char c) 判定是否为字母
idigit (char c) 判定是否为数字
isalnum(char c) 判定是否为字母或数字
islower(char c) 判定的是否为小写字母
isupper(char c)判定是否为大写字母
上述函数如果不是....则返回值为零。 如果是....返回值非零
int tolower(char c)转换为小写字母
int toupper(char c) 转换为大写字母