腾讯笔试题

1.定义一个宏,比较两个数a、b的大小,不能使用大于、小于、if语句

#define MAX(a,b) (abs((a)-(b))==((a)-(b))?(a):(b))

2.10 个数放入模 10hash 链表,最大长度是多少答案是10
按题目说的,hash值的计算方法是模10,那么可能的取值是0,1,2,3,4,5,6,7,8,9 最理想的情况是每个数对应一个hash值,这样的长度就为1,最坏的情况是10个数只对应一个hash值,
则长度为10,如:10,20,30,40,50,60,70,80,90,100这十个数就只对应了hash值0。

3.fun((exp1,exp2),(exp3,exp4,exp5))有几个实参5个,这里没有什么疑问的!
从形式上看很看是两个的,因为有二个为一组做为一个对象,有三个为一组做为一个对象,共有两个.所以应该说是两个,而从我的感觉当中这样是不对的,因为在JS中不存在(exp1,exp2)
这样的定义方法,他不是{1,2}而是(1,2),而且()的做用除了VB中的索引外,在JS中只是改变了运算符的优先顺序,而这里改变的显然是,运算符的优选顺序,而,运算本身的优选顺序是自左向右,
所以这里除了改变顺序达到一个特殊目的,但如果不考虑这个特殊目的,那么,加了括号跟不加是没有区别的.所以这里的参数是五个而不是两个!
当然你完全可以做一个验证:定义一个有五个形参的函数,然后加括号传值,看一下是否成功!

4.

希尔 冒泡 快速 插入 哪个平均速度最快

快速排序平均情况较快,平均复杂度也最低O(n),但对于有序度较高的不如并归排序和希尔排序,冒泡和插入是一个复杂度的O(n^2),效率还是比较低是

快速排序(Quicksort)是对冒泡排序的一种改进。由C. A. R. Hoare在1962年提出。它的基本思想是:通过一趟排序将要排序的数据分割成独立的两部分,其中一部分的所有数据都比另外一部分的所有数据都要小,然后再按此方法对这两部分数据分别进行快速排序,整个排序过程可以递归进行,以此达到整个数据变成有序序列

希尔排序法先取一个正整数d1<n,把所有序号相隔d1的数组元素放一组,组内进行直接插入排序;然后取d2<d1,重复上述分组和排序操作;直至di=1,即所有记录放进一个组中排序为止

1 a[3][4]哪个不能表示 a[1][1]: *(&a[0][0]+5) *(*(a+1)+1) *(&a[1]+1) *(&a[0][
0]+4)
答案: *(&a[1]+1)
a是数组的首地址,a[1]就表示a[1][0]地址了,不用再取地址了。

2 fun((exp1,exp2),(exp3,exp4,exp5))有几个实参?
答案:两个。
形式参数:在声明和定义函数时,写在函数名后的括号中的参数。
实参是调用参数中的变量,行参是被调用函数中的变量。

3. 希尔 冒泡 快速 插入 哪个平均速度最快?
答案:快速排序
快速排序、归并排序和基数排序在不同情况下都是最快最有用的。

4. enum的声明方式
答案:enum 枚举类型名 {
枚举常量1,
枚举常量2,

枚举常量n
};
For example:
enum weekday { sunday, monday, tuesday, wednesday, thursday, friday, saturda
y};
enum weekday week_day;//week_day 就是一个枚举类型变量

原文地址:https://www.cnblogs.com/mood3604/p/3315120.html