<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++面試題

            時間:2020-11-08 09:08:17 面試問題 我要投稿

            C++面試題

            1、給定字符串 A 和 B,輸出 A 和 B 中的最大公共子串。
            比如 A="aocdfe" B="pmcdfa" 則輸出"cdf"
            */
            //Author: azhen
            #include<stdio.h>
            #include<stdlib.h>
            #include<string.h>
            char *commanstring(char shortstring[], char longstring[])
            {
            int i, j;
            char *substring=malloc(256);
            if(strstr(longstring, shortstring)!=NULL) //如果„„,那么返回 shortstring
            return shortstring;
            for(i=strlen(shortstring)-1;i>0; i--) //否則,開始循環計算
            {
            for(j=0; j<=strlen(shortstring)-i; j++){
            memcpy(substring, &shortstring[j], i);
            substring[i]='\0';
            if(strstr(longstring, substring)!=NULL)
            return substring;
            }
            }
            return NULL;
            }
            main()
            {
            char *str1=malloc(256);
            char *str2=malloc(256);
            char *comman=NULL;
            gets(str1);
            gets(str2);
            if(strlen(str1)>strlen(str2)) //將短的字符串放前面
            comman=commanstring(str2, str1);
            else
            comman=commanstring(str1, str2);
            printf("the longest comman string is: %s\n", comman);
            }
            2、寫一個函數比較兩個字符串 str1 和 str2 的.大小,若相等返回 0,若 str1 大于str2 返回 1,若 str1 小于 str2 返回-1
            int strcmp ( const char * src,const char * dst)
            {
            int ret = 0 ;
            while( ! (ret = *(unsigned char *)src - *(unsigned char *)dst) && *dst)
            {
            ++src;
            ++dst;
            }
            if ( ret < 0 )
            ret = -1 ;
            else if ( ret > 0 )
            ret = 1 ;
            return( ret );
            }
            3、求 1000!的未尾有幾個 0(用素數相乘的方法來做,如 72=2*2*2*3*3);
            求出 1->1000 里,能被 5 整除的數的個數 n1,能被 25 整除的數的個數 n2,能被 125 整除的數的個數 n3,
            能被 625 整除的數的個數 n4.
            1000!末尾的零的個數=n1+n2+n3+n4;
            #include<stdio.h>
            #define NUM 1000
            int find5(int num){
            int ret=0;
            while(num%5==0){
            num/=5;
            ret++;
            }
            return ret;
            }
            int main(){
            int result=0;
            int i;
            for(i=5;i<=NUM;i+=5)
            {
            result+=find5(i);
            }
            printf(" the total zero number is %d\n",result);
            return 0;
            }
            4、有雙向循環鏈表結點定義為:
            struct node
            { int data;
            struct node *front,*next;
            };
            有兩個雙向循環鏈表 A,B,知道其頭指針為:pHeadA,pHeadB,請寫一函數將兩鏈表中 data值相同的結點刪除
            BOOL DeteleNode(Node *pHeader, DataType Value)
            {
            if (pHeader == NULL) return;
            BOOL bRet = FALSE;
            Node *pNode = pHead;
            while (pNode != NULL)
            {
            if (pNode->data == Value)
            {
            if (pNode->front == NULL)
            {
            pHeader = pNode->next;
            pHeader->front = NULL;
            }
            else
            {
            if (pNode->next != NULL)
            {
            pNode->next->front = pNode->front;
            }
            pNode->front->next = pNode->next;
            }
            Node *pNextNode = pNode->next;
            delete pNode;
            pNode = pNextNode;
            bRet = TRUE;
            //不要 break 或 return, 刪除所有
            }
            else
            {
            pNode = pNode->next;
            }
            }
            return bRet;
            }
            void DE(Node *pHeadA, Node *pHeadB)
            {
            if (pHeadA == NULL || pHeadB == NULL)
            {
            return;
            }
            Node *pNode = pHeadA;
            while (pNode != NULL)
            {
            if (DeteleNode(pHeadB, pNode->data))
            {
            if (pNode->front == NULL)
            {
            pHeadA = pNode->next;
            pHeadA->front = NULL;
            }
            else
            {
            pNode->front->next = pNode->next;
            if (pNode->next != NULL)
            {
            pNode->next->front = pNode->front;
            }
            }
            Node *pNextNode = pNode->next;
            delete pNode;
            pNode = pNextNode;
            }
            else
            {
            pNode = pNode->next;
            }
            }
            }

            【C++面試題】相關文章:

            C/C++面試題目11-21

            精選C++面試題及答案10-03

            C,C++的幾個面試題小集11-24

            一個C/C++編程面試題11-22

            嵌入式C/C++面試題201611-12

            2016年c++經典面試題及答案10-03

            華為C++筆試題11-23

            聯想C++筆試題11-23

            C++筆試實例分析11-22

            Sony C++筆試題11-22

            <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>
                      黄色视频在线观看