您的位置:首页 > 其它

UVa401:Palindromes

2018-02-06 21:28 253 查看

题目:4种情况, 判断是否为回文, 是否为镜面对称。









#include <stdio.h>
#include <string.h>

int p(char str[])	//是否为回文
{
int i;
for(i=0; i<strlen(str)/2; i++)
{
if(str[i]!=str[strlen(str)-i-1])
{
return 0;
break;
}
}
return 1;
}

char ch[]="AEHIJLMOSTUVWXYZ12358";
char re[]="A3HILJMO2TUVWXY51SEZ8";

int m(char str[])	//是否为镜面
{
int table_len = strlen(ch);
int i,j,len = strlen(str);
if(len == 1)
{
for(j=0; j<table_len; j++)
{
if(ch[j] == str[0])
break;
}
if(j == 21 || re[j] != str[0])  //判断是否有相同的或是镜面所对应过去的是否也相等
return 0;
}

else if(len > 1)
{
for(i=0; i<len/2; i++)
{
for(j=0; j<table_len; j++)
{
if(ch[j] == str[i])
break;
}
if(j == 21 || re[j] != str[len-i-1])  //判断是否有相同的或是镜面所对应过去的是否也相等
return 0;
}
}
return 1;
}

int main()
{
char str[101], i;
while(1)
{
if(gets(str)==NULL) break;
printf("%s -- is ",str);
if(p(str)==1 && m(str)==1) printf("a mirrored palindrome.\n\n");
else if(p(str)==1 && m(str)==0) printf("a regular palindrome.\n\n");
else if(p(str)==0 && m(str)==1) printf("a mirrored string.\n\n");
else if(p(str)==0 && m(str)==0) printf("not a palindrome.\n\n");
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: