1

文字列が回文であるかどうかをテストするプログラムを作成しようとしましたが、回文ではないため、常に出力が得られます。コードの何が問題になっていますか?

#include <stdio.h>
#include <string.h>

int is_palindrome(int start, int end, char *str)
{
    if (str[start] != str[end])
        return 0;
    else if (start == end)
        return 1;
    else
        return is_palindrome(++start, --end, str);

    return 0;

}
int main()
{
    char str[20];
    int length,start=0,end=length-1;
    int result;
    printf("Enter the String.\n");
    fgets( str, sizeof( str ), stdin );
    length = strlen(str);

    if(is_palindrome(start,end,str))
        printf("It's a palindrome!\n");
    else
        printf("It's not a palindrome! \n");
    return 0;
}
4

4 に答える 4

3

と がすれ違う++startとどうなりますか?--end

else if (start == end)

する必要があります>=

于 2013-04-17T14:29:38.460 に答える
0

このis_palindrome()関数では、チェックする必要があります。そうしないと、回文単語の偶数文字に対して機能しません。

if(start>end)
    return 1;
于 2016-06-04T10:17:39.053 に答える