C/C++回文字符串 

2013-01-13 10:32:41 · 作者: · 浏览: 474

  1./*回文:回文就是正读反读都一样的字符串,

  2. 例如:"radar","12321" 和 "abcba"等

  3. 请用递归函数palindrome(),在数组中的字符串为回文时返回true,否则返回false.

  4. 函数忽略字符串中的空格和标点符号。 */

  5.

  6.#include <stdio.h>

  7.#include <conio.h>

  8.

  9.

  10./*参数: str字符串  m一半数  n总个数*/

  11.int palindrome(char str[], int m, int n)

  12.{

  13.     if(str[m]==str[n-m] && m==0)

  14.       return 1;

  15.     else if(str[m]==str[n-m])

  16.       palindrome(str, m-1, n);

  17.     else

  18.      return 0;

  19.

  20.}

  21.

  22.int main()

  23.{

  24. char str[20];

  25. char c;

  26. int n=0;

  27. int flag =0;

  28.

  29. while((c=getchar()) !='/n')

  30. {

  31.    str[n] = c;

  32.    n++;

  33. }

  34.

  35. if(n%2==0)

  36.   flag = palindrome(str, n/2, n-1);

  37. else

  38.   flag = palindrome(str,n/2-1, n-1);

  39.

  40. if(flag==0)

  41.  printf("不是回文");

  42. else

  43.  printf("是回文");

  44.

  45. getch();

  46. return 0;

  47.}

  48.