您的位置:首页 > 编程语言 > C语言/C++

C++面试题(1)

2019-06-14 21:49 1336 查看

1、链表反转

    我的前一篇面试题有相关的,就不写了

2、实现函数查找数组中第二大的数字(关键点——把前两个最大的数都保存起来)

[code]//找出第二大的数
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位按照每四个位为一个整数进行求和(考点,移位运算)

[code]//位运算
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、求输出

[code]    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

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: