一,填空题
1. 两个人一个速度为a,一个速度为b,相向而行,在距离为s的时候,A放出鸽子,速度为c,鸽子飞到B后,会返回A,遇到A后再返回B。在这期间鸽子飞行的路程
2. (he)的平方 = she。 h,e,s 各代表什么
3. 运算 93 & -8
4. 将无序数组构建成最大堆,最差的时候,复杂度是
5. int *p = &n;
*p 的值是
A. p 的值 B. p的地址 C. n的值 D. n的地址
6. 一个完全二叉树有770节点,那么叶子个数为
7. 有一个数组a[1...100, 1...65] 有100行 65列。
按行优先,如果数组基地址是 10000,每个元素2各存储单元,问a[56, 22]的地址是
8. 写出一下程序结果
二, 编程题1. 数组乘积
输入: 一个长度为n的整数数组input
输出: 一个长度为n的数组result,满足result = input数组中,除了input 之外的所有数的乘积,不用考虑溢出
例如 input
{2, 3, 4, 5}
output:
{60, 40, 30, 24}
2, 异形数
长度为n的数组里面,除了3个数字,其他都出现2次,写出程序找出任意一个数。
例如
1 3 7 9 5 5 9 4 3 6 1 7
输出
4/5/6
3. 朋友圈
假如已知有n个人和m对好友关系,如果两个人是直接或者间接有好友关系,则认为他们属于同一个朋友圈。写程序判断里面有多少朋友圈。
例如
n = 5, m = 3 r = {(1,2), (2, 3), (4, 5)} 1 2 3 是一个朋友圈, 4 5 是一个朋友圈。
所以输出是2.
来源:http://blog.csdn.net/hopeztm/article/details/8062562
华丽的答案分割线
————————————————————————————————————————————
答案整理:
1.这题目叙述有点绕,其实表达的意思是a,b相遇时, 鸽子飞了多远。所以是c*s/(a+b)
2.这题不难,就算是枚举也能做出来的。
这里给出一段代码计算: 最后的结果是:
25*25=625,76*76=5776,而76显然不符合要求。
所以答案是25
3.这题考察的是C语言里面的 与运算。还有计算机的原码、补码知识(忘记了可以参考以下的资料,如果看完了还表示不会的,建议你面壁去,
)。具体参考:
c++中 &和&&的区别是什么?
http://www.itmian4.com/forum.php?mod=viewthread&tid=2115
原码、反码、补码和移码其实很简单
http://www.itmian4.com/forum.php?mod=viewthread&tid=2113&fromuid=1
93=01011101,-8=11111000(补码)
根据与运算规则可知93&-8=01011000=88
4.这题考查的是最大堆以及堆排序的问题,建议参考
最大堆/最小堆
http://www.itmian4.com/forum.php?mod=viewthread&tid=2116&fromuid=1
图解堆排序Heap Sort算法
http://www.itmian4.com/forum.php?mod=viewthread&tid=2117&fromuid=1
堆排序的时间,主要由建立初始堆和反复重建堆这两部分的时间开销构成,它们均是通过调用Heapify实现的。
堆排序的最坏时间复杂度为O(nlogn)。堆序的平均性能较接近于最坏性能。
由于建初始堆所需的比较次数较多,所以堆排序不适宜于记录数较少的文件。
堆排序是就地排序,辅助空间为O(1),
它是不稳定的排序方法。
5.很基础的题目,指针P指向n的地址,所以*P就是n的值,选C。
6.
7.地址为:10000+(55*65+21)*2=17912
8.
B is constructing
D is constructing
BD
二编程题:
1.数组乘积
2.异形数 3.朋友圈:
最后两题答案来自:http://blog.csdn.net/hackbuteer1/article/details/8484974
转载注明:IT面试http://www.itmian4.com/
1. 两个人一个速度为a,一个速度为b,相向而行,在距离为s的时候,A放出鸽子,速度为c,鸽子飞到B后,会返回A,遇到A后再返回B。在这期间鸽子飞行的路程
2. (he)的平方 = she。 h,e,s 各代表什么
3. 运算 93 & -8
4. 将无序数组构建成最大堆,最差的时候,复杂度是
5. int *p = &n;
*p 的值是
A. p 的值 B. p的地址 C. n的值 D. n的地址
6. 一个完全二叉树有770节点,那么叶子个数为
7. 有一个数组a[1...100, 1...65] 有100行 65列。
按行优先,如果数组基地址是 10000,每个元素2各存储单元,问a[56, 22]的地址是
8. 写出一下程序结果
二, 编程题1. 数组乘积
输入: 一个长度为n的整数数组input
输出: 一个长度为n的数组result,满足result = input数组中,除了input 之外的所有数的乘积,不用考虑溢出
例如 input
{2, 3, 4, 5}
output:
{60, 40, 30, 24}
2, 异形数
长度为n的数组里面,除了3个数字,其他都出现2次,写出程序找出任意一个数。
例如
1 3 7 9 5 5 9 4 3 6 1 7
输出
4/5/6
3. 朋友圈
假如已知有n个人和m对好友关系,如果两个人是直接或者间接有好友关系,则认为他们属于同一个朋友圈。写程序判断里面有多少朋友圈。
例如
n = 5, m = 3 r = {(1,2), (2, 3), (4, 5)} 1 2 3 是一个朋友圈, 4 5 是一个朋友圈。
所以输出是2.
来源:http://blog.csdn.net/hopeztm/article/details/8062562
华丽的答案分割线
————————————————————————————————————————————
答案整理:
1.这题目叙述有点绕,其实表达的意思是a,b相遇时, 鸽子飞了多远。所以是c*s/(a+b)
2.这题不难,就算是枚举也能做出来的。
这里给出一段代码计算: 最后的结果是:
25*25=625,76*76=5776,而76显然不符合要求。
所以答案是25
3.这题考察的是C语言里面的 与运算。还有计算机的原码、补码知识(忘记了可以参考以下的资料,如果看完了还表示不会的,建议你面壁去,
![](https://i-blog.csdnimg.cn/blog_migrate/b332e34526c73194aa4f075ad941b4ef.gif)
c++中 &和&&的区别是什么?
http://www.itmian4.com/forum.php?mod=viewthread&tid=2115
原码、反码、补码和移码其实很简单
http://www.itmian4.com/forum.php?mod=viewthread&tid=2113&fromuid=1
93=01011101,-8=11111000(补码)
根据与运算规则可知93&-8=01011000=88
4.这题考查的是最大堆以及堆排序的问题,建议参考
最大堆/最小堆
http://www.itmian4.com/forum.php?mod=viewthread&tid=2116&fromuid=1
图解堆排序Heap Sort算法
http://www.itmian4.com/forum.php?mod=viewthread&tid=2117&fromuid=1
堆排序的时间,主要由建立初始堆和反复重建堆这两部分的时间开销构成,它们均是通过调用Heapify实现的。
堆排序的最坏时间复杂度为O(nlogn)。堆序的平均性能较接近于最坏性能。
由于建初始堆所需的比较次数较多,所以堆排序不适宜于记录数较少的文件。
堆排序是就地排序,辅助空间为O(1),
它是不稳定的排序方法。
5.很基础的题目,指针P指向n的地址,所以*P就是n的值,选C。
6.
完全二叉树总结点数为N,若N为奇数,则叶子结点数为(N+1)/2; 若N为偶数,则叶子结点数为N/2。
完全二叉树:最后一层不一定满,但缺失的一定是右侧的
满二叉树 : 最后一层一定是满的
7.地址为:10000+(55*65+21)*2=17912
8.
B is constructing
D is constructing
BD
二编程题:
1.数组乘积
2.异形数 3.朋友圈:
最后两题答案来自:http://blog.csdn.net/hackbuteer1/article/details/8484974
转载注明:IT面试http://www.itmian4.com/