C++技巧:C/C++回文字符串

字號:

/*回文:回文就是正讀反讀都一樣的字符串,
    例如:"radar","able was i ere i saw elba" 和 "a man a plan a canal panama"(如果忽略空格)。
    請編寫遞歸函數(shù)testPalindrome,在數(shù)組中的字符串為回文時返回true,否則返回false。
    函數(shù)忽略字符串中的空格和標點符號。 */
    #include
    /* 字符串 一半數(shù) 總個數(shù)*/
    int charf(char d[],int k, int i)
    {
    if(d[k]==d[i-k]&&k==0)
    return(1);
    else if(d[k]==d[i-k])
    charf(d,k-1,i); /*遞歸調(diào)用*/
    else
    return(0);
    }
    main()
    {
    int i=0,n=0;
    char a,b[20];
    while ((a=getchar())!=’\n’)
    {
    b[i]=a;
    i++;
    }
    if(i%2==0)
    n=charf(b,(i/2),i-1);
    else
    n=charf(b,(i/2-1),i-1);
    if(n==0)
    printf("不是回文");
    else
    printf("是回文");
    getch();
    }