<delect id="sj01t"></delect>
  1. <em id="sj01t"><label id="sj01t"></label></em>
  2. <div id="sj01t"></div>
    1. <em id="sj01t"></em>

            <div id="sj01t"></div>

            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

            <delect id="sj01t"></delect>
            1. <em id="sj01t"><label id="sj01t"></label></em>
            2. <div id="sj01t"></div>
              1. <em id="sj01t"></em>

                      <div id="sj01t"></div>
                      黄色视频在线观看