所谓回文,就是字符串的第一个元素等于最后一个元素,第二个元素等于倒数第二个元素,依次类推 法一 #include<iostream> using namespace std; bool Find ( char *ch, int n ) { if( n<=1 ) return true; else if( *ch == ch[n-1] ) Find( ch+1, n-2 ); //头尾同时收缩,所以减2 else return false; } void main() { char ch[20]; cin >> ch; cout << ( Find(ch, strlen(ch)) ? "YES" : "NO" ) << endl; } 法二 int fun(char* a) { char*str,*ptr ; str=ptr=a ; if(!(*ptr)) return-1 ; /*当字符串为空时返回-1*/ while(*ptr) ptr++; ptr--; while(ptr-str>=0) if(*ptr--!=*str++) return 0 ; /*不是回文数返回0*/ return 1 ; /*否则返回1*/ } 法三 问题的关键就是比较对称的两个元素,故可以 for(i = 0; i < (len /2); i++) if (s[i] != s[len-i-1])