<常量数组> UVA 401

来源:互联网 发布:linux 获取ntp时间 编辑:程序博客网 时间:2024/06/14 09:52

UVA 401:

 输入一个字符串,判断它是否是回文串以及镜像串。输入字符串保证不含数字0.所谓回文串,就是反转以后和原串相同,如abba和madam. 所谓镜像串,就是左右镜像后与原串相同,如2S和3AIAE.注意,并不是每个字符在镜像后都能够得到一个合法字符。

代码:

#include <cstdio>#include <cstring>#include <ctype.h>using namespace std;const char * rev = "A   3  HIL JM O   2TUVMXY51SE 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) != EOF)    {        int len = strlen(s);        int p=1, m=1;        for(int i=0; i<(len+1)/2; i++)        {            char c = r(s[i]);            //putchar(c);            if(s[i] != s[len-1-i])                p = 0;//不是回文串            if(c != s[len-1-i])            {                m = 0;//不是镜像串            }        }        //printf("p=%d, m=%d\n", p, m);        printf("%s -- is %s.\n\n", s, msg[m*2+p]);    }    return 0;}


0 0