据说是HuaWei 面试试题,不知道真假了。
#include
<
stdio.h
>
int check( int m)
{
int n = m ,i,d = 0 ;
while (n)
{
d = d * 10 + n % 10 ;
n /= 10 ;
}
return (d == m);
}
int checkstr( char * str)
{
int len, i;
if ( ! str || ! (len = strlen(str))) return 0 ;
for (i = (len - 1 ) / 2 ; i >= 0 ; i -- )
if (str[i] != str[len - 1 - i] ) break ;
return i < 0 ;
}
int main()
{
int a[ 5 ] = { 12 , 121 , 3443 , 5665 , 2312 };
int i;
char szbuf[ 128 ];
for (i = 0 ; i < 5 ;i ++ )
{
printf( " %d == %s " ,a[i], check(a[i]) ? " ok " : " no " );
}
printf( " % " );
while (fgets(szbuf, 128 ,stdin) > 0 )
{
szbuf[strlen(szbuf) - 1 ] = 0 ;
if (strcmp(szbuf, " exit " ) == 0 ) break ;
printf( " %s == %s " ,szbuf, checkstr(szbuf) ? " Yes " : " No " );
printf( " % " );
}
return 0 ;
}
int check( int m)
{
int n = m ,i,d = 0 ;
while (n)
{
d = d * 10 + n % 10 ;
n /= 10 ;
}
return (d == m);
}
int checkstr( char * str)
{
int len, i;
if ( ! str || ! (len = strlen(str))) return 0 ;
for (i = (len - 1 ) / 2 ; i >= 0 ; i -- )
if (str[i] != str[len - 1 - i] ) break ;
return i < 0 ;
}
int main()
{
int a[ 5 ] = { 12 , 121 , 3443 , 5665 , 2312 };
int i;
char szbuf[ 128 ];
for (i = 0 ; i < 5 ;i ++ )
{
printf( " %d == %s " ,a[i], check(a[i]) ? " ok " : " no " );
}
printf( " % " );
while (fgets(szbuf, 128 ,stdin) > 0 )
{
szbuf[strlen(szbuf) - 1 ] = 0 ;
if (strcmp(szbuf, " exit " ) == 0 ) break ;
printf( " %s == %s " ,szbuf, checkstr(szbuf) ? " Yes " : " No " );
printf( " % " );
}
return 0 ;
}