C语言求助
回文串是指一个字符串从左读到右与从右读到左是一样的,现由键盘输入一行字符(最多不超过80个字符,以回车结束),判断能否通过去掉0个或1个字符,使得字符串成为回文串,如果可以输出Y,否则输出N
程序代码:#include <stdio.h>
#include <string.h>
#include <ctype.h>
int get_answer(char ch1, char ch2);
int main(void)
{
char text[81];
int i = 0;
int j = 0;
int isno = 0;
printf("检查是否为回文:\n");
fgets(text,81,stdin);
/*去标点和空格*/
for(i=0;i<(int)strlen(text);i++)
if(isalnum(text[i]))
text[j++] = text[i];
text[j] = '\0';
for(i=0;i<j/2;i++) /*如果j为奇数照样可行,因为为奇数时中间的那个数如果比较会个自己比较,一样相等,因此不用比较*/
isno += get_answer(tolower(text[i]),tolower(text[j-1-i]));
if(isno != 1)
printf("\n这%s是一个回文\n\n",(isno <= 1)?"":"不");
else
printf("\n在改一个值后可为回文\n\n");
return 0;
}
int get_answer(char ch1,char ch2)
{
if(ch1 == ch2)
return 0;
else
return 1;
}
