C++判断回文程序修改,要求:滤去所有非字母字符(包括空格)后,不考虑字母的大小写,从左向右和从右

C++判断回文程序修改,要求:滤去所有非字母字符(包括空格)后,不考虑字母的大小写,从左向右和从右向左读都相同的词或者短语!

#include<iostream>

using namespace std;
#define SIZE 100

int main()
{
//Test_Deviation();
//Test_V();
char carray[SIZE] = { 0 };
int i, len, is_palindrome = 1;
cout << "Please input a string.\n";
cin.get(carray, SIZE - 1);
len = strlen(carray);
// 去掉非字母字符
char carray2[SIZE] = { 0 };
int j = 0;
for (i = 0; i < len; i++)
{
if ((carray[i] >= 'a' && carray[i] <= 'z') ||
(carray[i] >= 'A' && carray[i] <= 'Z'))
carray2[j++] = carray[i];
}
// 判断回文
for (i = 0; i < j; i++)
{
if ((carray2[i] != carray2[j - 1 - i]) && 
(carray2[i] + 32 != carray2[j -1 - i]) && 
(carray2[i] != carray2[j - 1 - i] + 32))
{
is_palindrome = 0;
break;
}
}

if (is_palindrome != 0)cout << "The string is a palindrome.\n";
else cout << "The string isn't a palindrome.\n";

return 0;
}




朋友,请【采纳答案】,您的采纳是我答题的动力,如果没有明白,请追问。谢谢。

温馨提示:内容为网友见解,仅供参考
无其他回答

C++滤去所有的非十六进制字符后,组成一个新字符串(十六进制形式),然后...
i表示字符串长度 for(i=0;str[i]!=0;i++)写成for(k=0;k

...输入一个以回车结束的字符串(少于80 个字符),滤去所有的非...
一、算法分析:1、输入字符串。2、逐一判断是否合法,如果不合法,则删除。删除方法可以使用后续字符覆盖当前字符。3、可以从前向后遍历,每一个不合法字符都被后续合法字符覆盖,这样一次循环即可完成所有操作。二、参考代码:include <stdio.h>int main(){ char s[100]; char *p, *q; ge...

...串(少于80个字符),滤去所有的非十六进制字符后,组成一个新的字符...
} 程序调试通过,但是输入的数据不要太大哦,例如输入AAAAAA,这样系统内部的int类型装不下,需要自定义大数据类型来表示。

c#如何动态传入枚举?
试试泛型喽,FileUnit转成T试试

如何证明,在n个元素组成的集合中取n+1个不同的三元子集,求证必有两个...
(str3)) \/\/按字典顺序比较两个字符串,不考虑大小写 println(str1.compareToIgnoreCase(str3)) \/\/从0开始返回指定位置的字符 println(str1.charAt(6)) \/\/追加 println(str2.concat(" Language")) \/\/是否以指定的后缀结束 println(str1.endsWith("la")) \/\/使用默认字符集将String编码为 byte 序列 ...

相似回答