3第一天开通博客从此有了记流水账的平台,再也不用担心学的东西记不住了~~~
第一篇 回文串:要求:输入一个字符串判读是否是回文串及镜像串。输入串保证不含数字0.回文串就是反串以后与原串相同如abba。镜像串就是左右镜像之后与原串相同如3AIAE和2S。
c程序(c++源文件):
#include <cstdio>
#include <cmath>
#include <cstring>
#include <cctype>
using namespace std;
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];//返回数字的镜像,rev中数字前面有26个大写英文字母的镜像
}
int main()
{
char s[30];
while ( scanf("%s",s)==1){
int len =strlen(s);
int p=1,m=1;
for( int i = 0;i<(len+1)/2;i++){
if(s[i]!=s[len-i-1] ) p=0;//不是回文串
if(r(s[i])!=s[len-i-1]) m=0;//不是镜像串
}
printf("%s--is %s.\n\n",s,msg[m*2+p]);
}
return 0;
}