1、链表反转
我的前一篇面试题有相关的,就不写了
2、实现函数查找数组中第二大的数字(关键点——把前两个最大的数都保存起来)
//找出第二大的数
int search_sec(int *arr, int len)
{
int ret[2] = { 0,0 };
for (int i = 0; i < len; ++i)
{
if (arr[i] > ret[0])
{
ret[1] = ret[0];
ret[0] = arr[i];
}
else if (arr[i] > ret[1])
{
ret[1] = arr[i];
}
}
return ret[1];
}
3、实现函数,将整数的前16位按照每四个位为一个整数进行求和(考点,移位运算)
//位运算
int test(int a)
{
int temp;
int count = 0;
for (int i = 0; i < 4; ++i)
{
temp = a >> i * 4;
count += temp & 0x000F;
}
return count;
}
4、求输出
union
{
int a;
char b[2];
}aa;
aa.a = 0;
aa.b[0] = 10;
aa.b[1] = 1;
printf("%d",aa.a);
输出结果为 266
解析:联合aa在内存中占用四个字节依次为 10 , 1, 0 , 0
以int类型解释出来就是 0,0,1,10
其中1是256, 输出结果就是 256+10