c語言面試題

  1. 不用局部變量和全局變量實現strlen;
int My_Strlen( char *str )
{
   if( *str == '\0' )
    {
        return 1;
    }
   else
    {
       return My_Strlen( ++str ) + 1;
    }
}

下面是標準實現:

標準實現

size_t strlen_a(const char * str) {
    size_t length = 0 ;
    while (*str++ )
        ++ length;
    return  length;
} 

改進版

size_t strlen_b(const char * str) {
     const char *cp =  str;
     while (*cp++ )
          ;
     return (cp - str - 1 );
 } 

        2.有2數據,寫一個交換數據的宏;

下面的實現整數的情況是沒有問題的,但是浮點的情況不行,浮點不支持^,編譯不通過。

#define swap(a,b) a = a ^ b, b = a ^ b, a = a ^ b

我覺得簡單的最好用,下面的實現可以做到,一開始會認爲有溢出什麼的,其實是沒有問題的,真的很神奇

#define SWAP(a,b) \
 a = a + b;\
 b = a - b;\
 a = a - b;\
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章