判断字符串是否是回文

c

#include<stdio.h>
int main()
{
    int i , j , n = 0 ;
    int judge ;
    char let[100] , ir[n] ;
    gets( let ) ;
    for ( i = 0; i < 100; i++)
        {
            if ( let[i] == '\0') break ;
            n += 1 ;
        }
    for ( i = n - 1 , j = 0 ; i >= 0 , j < n ; i--,j++ )
        ir[j] = let[i] ;
    for ( i = 0; i < n ; i++ )
        {
            if( ir[i] == let[i] )
                judge = 1 ;
            else
                judge = 0 ;
        }
    if( judge == 1 )
        printf("该字符串是回文") ;
    else
        printf("该字符串不是回文") ;
    return 0;
}

输入sadfsd23wfasd
在其它编译器上都没问题,只有在头歌平台上测试不正确

修改处见注释,供参考:

#include <stdio.h>
int main()
{
    int i , j , n = 0 ;
    int judge ;
    char let[100] , ir[100] ; //ir[n]
    gets( let ) ;
    for ( i = 0; let[i] != '\0'; i++);   //for ( i = 0; i < 100; i++)
        //{
            //if ( let[i] == '\0') break ;
            //n += 1 ;
        //}

    for ( n = i, i = n - 1 , j = 0 ; i >= 0; i--,j++ ) //for ( i = n - 1 , j = 0 ; i >= 0 , j < n ; i--,j++ )
        ir[j] = let[i] ;
    for ( i = 0, judge = 1; i < n ; i++ )  //for ( i = 0; i < n ; i++ )
        {
            if( ir[i] == let[i] )
                continue;                 //judge = 1 ;
            else {
                judge = 0 ;
                break;
            }
        }
    if( judge == 1 )
        printf("该字符串是回文") ;
    else
        printf("该字符串不是回文") ;
    return 0;
}


c
 
#include<stdio.h>
int main()
{
    int i , j , n = 0 ;
    int judge ;
    char let[100] , ir[n] ;
    gets( let ) ;
    for ( i = 0; i < 100; i++)
        {
            if ( let[i] == '\0') break ;
            n += 1 ;
        }
    for ( i = n - 1 , j = 0 ; i >= 0 , j < n ; i--,j++ )
        ir[j] = let[i] ;
    for ( i = 0; i < n ; i++ )
        {
            if( ir[i] == let[i] )
                judge = 1 ;
            else
                judge = 0 ;
        }
    if( judge == 1 )
        printf("该字符串是回文") ;
    else
        printf("该字符串不是回文") ;
    return judge;
}