2019届秋招笔试题(考试时间120分钟)
一、目录
一. 选择题-第一部分(C/C++语法-10分)
二. 选择题–第二部分(数据结构和算法–10分)
三. 选择题–第三部分(Linux/操作系统–13分)
四. 选择题–第四部分(网络协议知识–10分)
五. 选择题–第五部分(智力题–2分)
六. 编程题 (共计 55 分)
1) Fibonacci数列 (10分)
2) 分苹果 (15分)
3) 求连续子数组的最大和 (15分)
4) 回文串 (15分)
一. 选择题-第一部分(C/C++语法-10分)
1、 有一个二维数组A[10][5],每个数据元素占1个字节,且A[0][0]的存储地址是1000,
则A[i][j]的地址是1000+5i+j
解析:
2、
const char str1[] = “abc”; const char str2[] = “abc”;
const char *p1 = “abc”; const char *p2 = “abc”;
str1和str2地址不同,P1和P2指向的地址相同
指针所指的字符串占用同一块空间,数组分配不同的内存空间。
3、 C语言,设有宏定义:
#define A 4+5
#define B A*A
则表达式BB的值为 ( 69);
解析: BB = AAAA = 4+54+54+54+5 = 4+20+20+20+5 = 69
**4.**对于以下递归函数f,调用 f(4),其返回值为(10 )。
int f (int n)
{
if (n)
return f (n -1) + n;
else
return n;
}
解析: f(3)+4 —》 f(2)+4+3—》f(1)+4+3+2—》f(0)+4+3+2+1 = 10
5.语句char str[] = “abcde”;请问表达式sizeof(str)的值是( 6)
解析: sizeof()求字符串长度,包含**\0**
**6.**已知表达式++a中的"++"是作为成员函数重载的运算符,则与a++等效的运算符函数调用形式为(a.operator++(0))
**7.**有这样一个类:
class Eye
{
public:
void Look(void);
};
现在希望定义一个Head类,也想实现Look的功能,应该使用(组合 )的方法,实现代码重用。
**8.**有如下代码:
#include<iostream>
using namespace std;
class MyClass
{
public:
MyClass(int i = 0)//111
{
cout<<i;
}
MyClass(const MyClass &s)//222
{
cout<<2;
}
MyClass &operator=(const MyClass &x)//333
{
cout<<3;
return *this;
}
~MyClass()//444
{
cout<<4;
}
};
int main()
{
MyClass obj1(1);
MyClass obj2(2);
MyClass obj3 = obj1;
return 0;
}
//122444请按任意键继续. . .
解析:如上所示,为了方便描述,将四个成员函数分别标为111,222,333,444, MyClass obj1(1) 和MyClass obj2(2)调用构造函数111,所以输出自带值1,2, ,MyClass obj3 = obj1;属于用一个对象构造另一个对象,故而需要调用拷贝构造函数222,故输出2,三个对象构造完之后,进行对象的销毁,分别调用三次析构函数,故4,4,4,
综上所述,输出 1