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; }