#include<stdio.h>
#include<string.h>
#include<ctype.h>
const char* rev = "A 3 HIL JM O 2TUVWXY51SE Z 8 ";
const char* msg[] = { "not a palindrome","a regular palindrome","a mirrored string","a mirrored palindrome" };
char r(char ch) {
if (isalpha(ch))
{
return rev[ch - 'A'];
}
else
{
return rev[ch - '0' + 25];
}
}
int main()
{
char s[30];
while (scanf_s("%s",s,30)==1)
{
int len = strlen(s);//(該處報錯,請問要怎么確保傳入的字串最后一位是\0
int p = 1, m = 1;
for ( int i = 0; i < (len+1)/2; i++)
{
if (s[i] != s[len - 1 - i])//如果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, msg[m*2+p]);
}
return 0;
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/133912.html
標籤:C語言
上一篇:這里的這三個警告是怎么回事
下一篇:這樣寫有什么問題嗎?主管說不行!
