c++面试题以及答案
前段时间找工作的时候看的。整理了下,选了比较典型的,附答案(仅供参考)。都是大题,那些填空什么的,我想大家应该都可以搞定的,看这个只是复习一下,找点感觉而已。应付一般的面试也足够了,高手就不用看了。
1、写一个函数,完成内存之间的拷贝?
2、实现双向链表删除一个节点P,在节点P后插入一个节点,写出这两个函数
3、费波那其数列,1,1,2,3,5……,也可以用其他方法
4、编写类String的构造函数、析构函数和赋值函数
5、循环
6、单向链表类的实现
7、二叉树实现
自己补充:排序算法,指针
答案:
//写一个函数,完成内存之间的拷贝
void *mymemcpy(void *dest, const void *src, size_t count)
{
char* pdest = static_cast<char*>(dest);
const char* psrc = static_cast<const char*>(src);
if (pdest>psrc && pdest<psrc+cout) // 能考虑到这种情况就行了
{
for (size_t i=count-1; i!=-1; --i)
pdest[i] = psrc[i];
}
else
{
for (size_t i=0; i<count; ++i)
pdest[i]= psrc[i];
}
return dest;
}
int main(void)
{
char str[] = "0123456789";
mymemcpy( str+1,str+0,9);
cout << str << endl;
system ("Pause");
return 0;
}
/********************************************************/
//实现双向链表删除一个节点P,在节点P后插入一个节点,写出这两个函数
//答案
//双向链表删除一个节点P
template<class type> void list<type>::delnode(int p)
{
int k = 1;
listnode<type> *ptr,*t;
ptr = first;
while (ptr->next!=NULL && k!=p)
{
ptr = ptr->next;
k++;
}
t = ptr->next;
cout << "你已经将数据项" << t->data << "删除" << endl;
ptr->next = ptr->next->next;
length--;
delete t;
}
//在节点P后插入一个节点:
template<class type> bool list<type>::insert(type t,int p)
{
listnode<type> *ptr;
ptr = first;
int k = 1;
while (ptr != NULL && k<p)
{
ptr = ptr->next;
k++;
}
if (ptr == NULL && k != p)
return false;
else
{
listnode<type> *tp;
tp = new listnode<type>;
tp->data = t;
tp->next = ptr->next;
ptr->next = tp;
length++;
return true;
}
}
/********************************************************/
//费波那其数列,1,1,2,3,5……,也可以用其他方法
//答案
#include <>
#include <cstdlib>
int Pheponatch(int);
int Pheponatch2(int);
int main()
{
printf("The 10th is %d", Pheponatch2(20));
system("pause");
return 0;
}
//递归算法
IntPheponatch(intN)
{
if (N ==1 || N==2)
{
C 面试题集 来自淘豆网m.daumloan.com转载请标明出处.