设为首页 加入收藏

TOP

C++开发工程师面试题库 50~100道(三)
2014-11-23 19:10:58 来源: 作者: 【 】 浏览:61
Tags:开发 工程师 试题库 100
st!=NULL && fast->next!=NULL)
{
low=low->next;
fast=fast->next->next;
if(low==fast) return true;
}
return false;
}



74.不使用库函数,编写函数int strcmp(char *source, char *dest)相等返回0,不等返回-1



int StrCmp(char *source, char *dest)


{


assert(source !=NULL) ;


assert(dest!=NULL) ;


while(*source= =*dest&&*source&&*dest)


{


source++;


dest++;


}


return (*source!=*dest) -1:0;


}






75.写一个函数,实现将一个字符串中的’\t’替换成四个’*’, ’\t’个数不定。如char *p=”ht\thdsf\t\ttt\tfds dfsw\t ew\t”,替换后p=”ht****hdsf********tt****fds dfsw**** ew****”。


char *Replace(char *Sorce)


{


char *pTemp=Sorce;


int iCount=0;


int iSizeOfSorce=0;



while(*pTemp!=’\0′)


{


if(‘\t’==*pTemp)


iCount++;


pTemp++;


}


iSizeOfSorce=pTemp-Sorce;



char *pNewStr=new char[iSizeOfSorce+3*iCount*sizeof(char)+1];


char *pTempNewStr=pNewStr;



pTemp=Sorce;


while(*pTemp!=’\0′)


{


if(‘\t’==*pTemp)


{


for(int iLoop=0; iLoop<4; iLoop++)


{


*pTempNewStr=’*';


pTempNewStr++;


}


pTemp++;


}


else


{


*pTempNewStr=*pTemp;


pTemp++;


pTempNewStr++;


}


}


*pTempNewStr=’\0′;



return pNewStr;


}







76.写一函数实现将一个字符串中的数字字符全部去掉。


void RemoveNum(char strSrc[])


{


char *p=strSrc;


char *q;


while(*p!=’\0′)


{


if(*p>=’0′&&*p<=’9′)


{


q=p;


while(*q!=’\0′)


{


*q=*(q+1);


q++;


}


}


else


{


p++;


}


}


}








77、链表节点结构如下:


struct STUDENT


{


long num;


float score;


STUDENT *pNext;


};


编写实现将两棵有序(按学号从小到大)的链表合并的函数,要求合并后的链表有序(按学号从小到大)


STUDENT *EmergeList(STUDENT *pHead1,STUDENT *pHead2)


{


//取小者为表头


STUDENT * pHead;


STUDENT *p1;


STUDENT *p2;


STUDENT *pCur;


STUDENT *pTemp;



if (pHead1->num<= pHead2->num)


{


pHead = pHead1;


p2 = pHead2;


p1=pHead1->pNext;


}


else


{


pHead = pHead2;


p1 = pHead1;


p2=pHead2->pNext;


}


pCur=pHead;


while(p1!=NULL&&p2!=NULL)


{


if(p2->numnum)


{


pCur->pNext=p2;


p2=p2->pNext;


pCur=pCur->pNext;


}


else if(p2->num>p1->num)


{


pCur->pNext=p1;


p1=p1->pNext;


pCur=pCur->pNext;


}


else if(p2->num==p1->num)


{


pCur->pNext=p1;


p1=p1->pNext;


pCur=pCur->pNext;


pTemp= p2;


p2=p2->pNext;


delete pTemp;


pTemp = NULL;


}


}


if(NULL==p1)


{


pCur->pNext=p2;


}


else if(NULL==p2)


{


pCur->pNext=p1;


}


return pHead;


}



78、封装CMyString类,要求声明和实现分开,声明见MyString.h,该类的声明可以添加内容,完成STLTest文件夹下main文件的要求。



参见STLTest Answer文件夹



79.请你分别画出OSI的七层网络结构图和TCP/IP的五层结构图。


80.请你详细地解释一下IP协议的定义,在哪个层上面?主要有什么作用?TCP与UDP呢?


81.请问交换机和路由器各自的实现原理是什么?分别在哪个层次上面实现的?


82.请问C++的类和C里面的struct有什么区别?


83.全局变量和局部变量有什么区别?是怎么实现的?操作系统和编译器是怎么知道的?



84. 非C++内建型别 A 和 B,在哪几种情况下B能隐式转化为A?[C++中等


a. class B : public A { ……} // B公有继承自A,可以是间接继承的


b. class B { operator A( ); } // B实现了隐式转化为A的转化


c. class A { A( const B& ); } // A实现了non-explicit的参数为B(可以有其他带默认值的参数)构造函数


d. A& operator= ( const A& ); // 赋值操作,虽不是正宗的隐式类型转换,但也可以勉强算一个



85. 以下代码中的两个sizeof用法有问题吗?[C易]


void UpperCase( char str[] ) // 将 str 中的小写字母转换成大写字母


{


for( size_t i=0; i

if( ‘a’<=str[i] && str[i]<=’z’ )


str[i] -= (‘a’-'A’ );


}


char str[] = “aBcDe”;


cout << “str字符长度为: ” << sizeof(str)/sizeof(str[0]) << endl;


UpperCase( str );


cout << str << endl;


86. 以下代码有什么问题?[C难]



void char2Hex( char c ) // 将字符以16进制表示


{


char ch = c/0×10 + ’0′; if( ch > ’9′ ) ch += (‘A’-’9′-1);


char cl = c%0×10 + ’0′; if( cl > ’9′ ) cl += (‘A’-’9′-1);


cout << ch << cl << ‘ ‘;


}


char str[] = “I love 中国”;


for( size_t i=0; i

char2Hex( str[i] );


cout << endl;



87. 以下代码有什么问题?[C++易]


struct Test


{


Test( int ) {}


Test() {}


void fun() {}


};


void main( void )


{


Test a(1);


a.fun();


Test b();


b.fun();


}




88. 以下代码有什么问题?

首页 上一页 1 2 3 4 下一页 尾页 3/4/4
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
分享到: 
上一篇2013百度校园招聘笔试 下一篇oracle面试sql

评论

帐  号: 密码: (新用户注册)
验 证 码:
表  情:
内  容: