2024年3月29日发(作者:我爱吃番茄)
程序员面试经典试题
1、现有1000个苹果,10个盒子,问各个盒子内应该分别放入多
少个苹果,才能使得用户要买任意1至1000之间的一个苹果数,都可
以给他(卖的时候是整个盒子卖,不能拆盒子的包装)。
2、请仔细阅读下面的资料:
1)材料一:CArray
template< class TYPE, class ARG_TYPE > class CArray : public
CObject
Parameters:
TYPE
Template parameter specifying the type of objects stored in
the array. TYPE is a parameter that is returned by CArray.
ARG_TYPE
Template parameter specifying the argument type ud to
access objects stored in the array.
Often a reference to TYPE. ARG_TYPE is a parameter that is
pasd to CArray.
Remarks:
The CArray class supports arrays that are are similar to C
arrays, but can dynamically shrink and grow as necessary.
Array indexes always start at position 0. You can decide
whether to fix
the upper bound or allow the array to expand when you add
elements past the current bound. Memory is allocated
contiguously to the upper bound, even if some elements are null.
int CArray::Add (ARG_TYPE newElement);
Return Value:
The index of the added element.
Parameters:
ARG_TYPE
Template parameter specifying the type of arguments
referencing elements in this array.
newElement
The element to be added to this array.
TYPE& CArray::operator [] (int nIndex);
Parameters:
TYPE
Template parameter specifying the type of elements in this
array.
nIndex
Index of the element to be accesd.
Remarks:
Returns the array reference of element at the specified index.
2)材料二:CList
templateclass CList : public CObject Parameters:
TYPE
Type of object stored in the list.
ARG_TYPE
Type ud to reference objects stored in the list. Can be a
reference. Remarks:
The CList class supports ordered lists of nonunique objects
accessible quentially or by value.
CList lists behave like doubly-linked lists.
void CList::AddTail(ARG_TYPE newElement);
Parameters:
ARG_TYPE
Template parameter specifying the type of the list element
(can be a reference).
newElement
The element to be added to this list.
Remarks:
Adds a new element or list of elements to the tail of this list.
The list can be empty before the operation.
3)材料三: realloc
realloc
Reallocate memory blocks.
void *realloc(void *memblock, size_t size);
Return Value:
The return value points to a storage space that is guaranteed
to be suitably aligned for storage of any type of object. To get a
pointer to a type other than void, u a type cast on the return
value.
Remarks:
The size argument gives the new size of the block, in bytes.
The contents of the block are unchanged up to the shorter of the
new and old sizes, although the new block can be in a different
location. Becau the new block can be in a new memory location,
the pointer returned by realloc is not guaranteed to be the
pointer pasd through the memblock argument.
4)请指出下面这段代码可能会出现的问题
CList g_ValueList;
CArray g_ValuePool;
void AddNewValue (const V ARIANT& newValue)
{
g_l(&g_ValuePool[g_(newVal
ue)]);
}
3、有一无符号整型数组,大小为10, 初始的数值随机,但在[0,
99]之间。请用C语言写一个过滤程序,令数组内的数据互不相等。
说明:
1.若数组内有相等的数据,可令某一数值加1或减1作出偏移,直
至不等为止。
2.数组内的数据只能在[0, 99]之间。
3.保持数组内的数据位置不变,即对应下标不变。
4、按要求编写以下函数。
功能:将给定缓冲区中的#字符移到字符串尾部
函数名称:ChangeToTail
入口参数:pSZ指向缓冲区的指针, nSize缓冲区长度
出口:pSZ所指缓冲区中的#字符被移到缓冲区尾部
返回值:在出口缓冲区中第一个#的位置,若缓冲区中无#字符则返
回-1 说明:如传入#W#W#W#WW#,10 则传出时应转换为
WWWWW#####并且返回值为5
int ChangeToTail(BYTE* pSZ, UINT nSize)
{
// Todo:请在此加入您的代码
}
5、在金山,有一个非常经典有趣的游戏,称为杀人游戏。此游戏
角色有:好人(m人)、坏人(n人)、村长(1人)、裁判(1人)。
角色采用一定方式(如:抓阄)分配。村长、裁判两个角色是公开的,
而好人、坏人两个角色则只要裁判和本人心知肚明。其玩法如下:
游戏开始了,裁判说:“天黑了”,这是所有其他角色都低头闭
上眼睛(不准作弊!)。然后裁判说:“坏人开始活动”,此时坏人
抬起头,并相互商议,杀死一个好人。然后裁判说:“天亮了”,此
时所有人抬头,被杀死的那个好人宣布出局。剩下的人在村长的主持
下,开始判断杀人凶手。每个人可以根据各人的表情反应,判断并提
议杀死自己心目中的坏人。不过最终的裁决权属于村长,综合大家的
意见杀死一人。此时裁判宣布此人出局。游戏进入下一轮,由天黑到
天亮,再有2人出局,如此反复,直到最后好人先被全部杀死,则游
戏结束,“邪恶”的一方战胜了“正义”的一方;而另一个结局则是
本文发布于:2024-03-29 06:16:05,感谢您对本站的认可!
本文链接:https://www.wtabcd.cn/zhishi/a/1711664166301197.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文word下载地址:程序员面试经典试题.doc
本文 PDF 下载地址:程序员面试经典试题.pdf
留言与评论(共有 0 条评论) |