1. <tt id="5hhch"><source id="5hhch"></source></tt>
    1. <xmp id="5hhch"></xmp>

  2. <xmp id="5hhch"><rt id="5hhch"></rt></xmp>

    <rp id="5hhch"></rp>
        <dfn id="5hhch"></dfn>

      1. c面試題庫

        時間:2023-04-01 07:15:37 面試問題 我要投稿
        • 相關推薦

        c面試題庫

        1、實現 strcmp
        int StrCmp(const char *str1, const char *str2)
        做是做對了,沒有抄搞,比較亂
        int StrCmp(const char *str1, const char *str2)
        {
        assert(str1 && srt2);
        while (*str1 && *str2 && *str1 == *str2) {
        str1++, str2++;
        }
        if (*str1 && *str2)
        return (*str1-*str2);
        elseif (*str1 && *str2==0)
        return 1;
        elseif (*str1 = = 0 && *str2)
        return -1;
        else
        return 0;
        }
        int StrCmp(const char *str1, const char *str2)
        {
        //省略判斷空指針(自己保證)
        while(*str1 && *str1++ = = *str2++);
        return *str1-*str2;
        }
        2、實現子串定位
        int FindSubStr(const char *MainStr, const char *SubStr)
        做是做對了,沒有抄搞,比較亂
        int MyStrstr(const char* MainStr, const char* SubStr)
        {
        const char *p;
        const char *q;
        const char * u = MainStr;
        //assert((MainStr!=NULL)&&( SubStr!=NULL));//用斷言對輸入進行判斷
        while(*MainStr) //內部進行遞增
        {
        p = MainStr;
        q = SubStr;
        while(*q && *p && *p++ == *q++);
        if(!*q )
        {
        return MainStr - u +1 ;//MainStr 指向當前起始位,u 指向
        }
        MainStr ++;
        }
        return -1;
        }
        3、已知一個單向鏈表的頭,請寫出刪除其某一個結點的算法,要求,先找到此結點,然后刪除。
        slnodetype *Delete(slnodetype *Head,int key){}中 if(Head->number==key)
        {
        Head=Pointer->next;
        free(Pointer);
        break;
        }
        Back = Pointer;
        Pointer=Pointer->next;
        if(Pointer->number==key)
        {
        Back->next=Pointer->next;
        free(Pointer);
        break;
        }
        void delete(Node* p)
        {
        if(Head = Node)
        while(p)
        }
        4、有1,2,....一直到n的無序數組,求排序算法,并且要求時間復雜度為O(n),空間復雜度O(1),使用交換,而且一次只能交換兩個數.(華為)
        #include<iostream.h>
        int main()
        {
        int a[] = {10,6,9,5,2,8,4,7,1,3};
        int len = sizeof(a) / sizeof(int);
        int temp;
        for(int i = 0; i < len; )
        {
        temp = a[a[i] - 1];
        a[a[i] - 1] = a[i];
        a[i] = temp;
        if ( a[i] == i + 1)
        i++;
        }
        for (int j = 0; j < len; j++)
        cout<<a[j]<<",";
        return 0;
        }
        5、寫出程序把一個鏈表中的接點順序倒排
        typedef struct linknode
        {
        int data;
        struct linknode *next;
        }node;
        //將一個鏈表逆置
        node *reverse(node *head)
        {
        node *p,*q,*r;
        p=head;
        q=p->next;
        while(q!=NULL)
        {
        r=q->next;


        q->next=p;
        p=q;
        q=r;
        }
        head->next=NULL;
        head=p;
        return head;
        }
        6、寫出程序刪除鏈表中的所有接點
        void del_all(node *head)
        {
        node *p;
        while(head!=NULL)
        {
        p=head->next;
        free(head);
        head=p;
        }
        cout<<"釋放空間成功!"<<endl;
        }
        7、兩個字符串,s,t;把 t 字符串插入到 s 字符串中,s 字符串有足夠的空間存放 t 字符串
        void insert(char *s, char *t, int i)
        {
        char *q = t;
        char *p =s;
        if(q == NULL)return;
        while(*p!='\0')
        {
        p++;
        }
        while(*q!=0)
        {
        *p=*q;
        p++;
        q++;
        }
        *p = '\0';
        }
        8、寫一個函數,功能:完成內存之間的拷貝
        memcpy source code:
        void* memcpy( void *dst, const void *src, unsigned int len )
        {
        register char *d;
        register char *s;
         if (len == 0)
         return dst;
         if (is_overlap(dst, src, len, len))
        complain3("memcpy", dst, src, len);
         if ( dst > src ) {
         d = (char *)dst + len - 1;
         s = (char *)src + len - 1;
        while ( len >= 4 ) {
        *d-- = *s--;
         *d-- = *s--;
         *d-- = *s--;
        *d-- = *s--;
        len -= 4;
         }
        while ( len-- ) {
        *d-- = *s--;
         }
         } else if ( dst < src ) {
         d = (char *)dst;
         s = (char *)src;
         while ( len >= 4 ) {
         *d++ = *s++;
         *d++ = *s++;
         *d++ = *s++;
         *d++ = *s++;
         len -= 4;
         }
         while ( len-- ) {
         *d++ = *s++;
         }
         }
         return dst;
         }
        9、公司考試這種題目主要考你編寫的代碼是否考慮到各種情況,是否安全(不會溢出)
        各種情況包括:
        1、參數是指針,檢查指針是否有效
        2、檢查復制的源目標和目的地是否為同一個,若為同一個,則直接跳出
        3、讀寫權限檢查
        4、安全檢查,是否會溢出
        memcpy 拷貝一塊內存,內存的大小你告訴它
        strcpy 是字符串拷貝,遇到'\0'結束
        /* memcpy ─── 拷貝不重疊的內存塊 */
        void memcpy(void* pvTo, void* pvFrom, size_t size)
        {
        void* pbTo = (byte*)pvTo;
        void* pbFrom = (byte*)pvFrom;
        ASSERT(pvTo != NULL && pvFrom != NULL); //檢查輸入指針的有效性
        ASSERT(pbTo>=pbFrom+size || pbFrom>=pbTo+size);//檢查兩個指針指向的內存是否重疊
        while(size-->0)
        *pbTo++ == *pbFrom++;
        return(pvTo);
        }

        【c面試題庫】相關文章:

        面試的通用題庫08-09

        C1科目四題庫201605-31

        面試題庫11-11

        IG-WB-C&C 電話面試11-20

        計算機二級c語言題庫及答案03-28

        英語面試常問題庫匯總10-26

        公選面試題庫11-06

        計算機二級C語言題庫2016最新03-29

        畢業面試銀行常見問題庫12-11

        護士面試筆試題庫11-07

        国产高潮无套免费视频_久久九九兔免费精品6_99精品热6080YY久久_国产91久久久久久无码

        1. <tt id="5hhch"><source id="5hhch"></source></tt>
          1. <xmp id="5hhch"></xmp>

        2. <xmp id="5hhch"><rt id="5hhch"></rt></xmp>

          <rp id="5hhch"></rp>
              <dfn id="5hhch"></dfn>