您的位置:首页 > 职场人生

几个面试题目

2009-06-11 10:46 295 查看
1.写一个函数,完成内存之间的拷贝。

void* mymemcpy( void *dest, const void *src, size_t count )

{

    char* pdest = static_cast<char*>( dest );

    const char* psrc = static_cast<const char*>( src );

    if( pdest>psrc && pdest<psrc+cout )

    {

        for( size_t i=count-1; i!=-1; --I )

                pdest[i] = psrc[i];

    }

    else

    {

        for( size_t i=0; i<count; ++I )

            pdest[i] = psrc[i];

    }

    return dest;

}

 

 

2.写一个函数找出一个整数数组中,第二大的数

const int MINNUMBER = -32767 ;

int find_sec_max( int data[] , int count)

{

   int maxnumber = data[0] ;

   int sec_max = MINNUMBER ;

   for ( int i = 1 ; i < count ; i++)

   {

      if ( data[i] > maxnumber )

      {

         sec_max = maxnumber ;

         maxnumber = data[i] ;

      }

      else

      {

         if ( data[i] > sec_max )

            sec_max = data[i] ;

      }

   }

   return sec_max ;

}

 

3.用递归算法判断数组a
是否为一个递增数组。

递归的方法,记录当前最大的,并且判断当前的是否比这个还大,大则继续,否则返回false结束:

bool fun( int a[], int n )

{

      if( n= =1 )

         return true;

      if( n= =2 )

         return  a[n-1] >= a[n-2];

      return fun( a,n-1) && ( a[n-1] >= a[n-2] );

}

4.判断字符串是否为回文

bool IsSymmetry(const char* p)

 {

       assert(p!=NULL);

       const char* q=p; 

       int len=0;

       while(*q++!='/0')

       {

             len++;

       } 

       bool bSign=true;

       q=p+len-1;

       if (0<len)

       {

             for (int i=0;i<len/2;i++)

             {

                   if(*p++!=*q--){ bSign=false;break;};

             }

       }

       if(bSign==true)

       {

             printf("Yes!/n");

       }

       else

       {

             printf("No!/n");

       }

       return bSign;

 }
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  面试 fun 算法 null