uva 401

来源:互联网 发布:武汉大学网络教学平台 编辑:程序博客网 时间:2024/06/05 08:26

题目大意:

输入一个字符串,让你判断他是不是回文串和镜像串,由它是不是镜像串和回文串决定不同的输出;

基本思路:

设置一个常量数组,然后判断就好了,简单注意一下那个回文串用for循环 那个判断条件的位置就好了;

代码如下:

#include<bits/stdc++.h>


using namespace std;


//char xx[]="ABCDEFGHIJKLMNOPQRSTUVWXYZ123456789";
char yy[]="A   3  HIL JM O   2TUVWXY51SE Z  8 ";




int main()
{
    char s[1000+10];
    while(scanf("%s",s)!=EOF)
    {
        int flag1=1,flag2=1;
        int l=strlen(s);
        int z=(l+1)/2;//这个地方要注意一下;
        for(int i=0;i<z;i++)//这个地方是小于,从0开始嘛;
        {
            if(s[i]!=s[l-i-1]) flag1=0;
            if(s[i]>='1'&&s[i]<='9')
            {
                if(yy[s[i]-'1'+26]!=s[l-i-1]) flag2=0;
            }
            else
            {
                if(yy[s[i]-'A']!=s[l-i-1]) flag2=0;
            }


        }
        if(flag1&&flag2)
            printf("%s -- is a mirrored palindrome.\n\n",s);
        else if(flag1&&!flag2)
            printf("%s -- is a regular palindrome.\n\n",s);
        else if(!flag1&&flag2)
            printf("%s -- is a mirrored string.\n\n",s);
        else if(!flag1&&!flag2)
            printf("%s -- is not a palindrome.\n\n",s);
    }
    return 0;
}

原创粉丝点击