北京中科睿信笔试题

列出若干C语言关键字

答案

break、case、char、const、continue、default、do、double、else、enum、extern 、float、for、goto、if、int、long、register、return、short、signed、sizeof、static、struct、switch、typedef、union、unsigned、void、volatile、while


列出C语言常见数据类型、所占长度及表示范围

答案
数据类型所占长度表示范围
char1-128~127或0~255
int4-2147483648~2147483647
float41.2E-38~3.4E+38
double82.3E-308~1.7E+308


链表和数组有什么区别

答案
  1. 存储结构不同:数组是连续存储,链表是非连续存储。

  2. 插入、删除操作不同:数组插入、删除操作比较麻烦,需要移动数组中大部分元素;而链表插入、删除操作只需要改变指针指向即可,比较简单。

  3. 查找操作不同:数组通过下标可以直接定位,时间复杂度是O(1);而链表没有下标,只能通过遍历定位,时间复杂度是O(n)。


&&&|||有什么区别

答案

& 是逻辑运算符,表示与,只有两个操作数都为真,结果才为真。

&& 是短路与,当第一个操作数为假时,就不会检查第二个操作数,结果一定为假。

| 是逻辑运算符,表示或,只要有一个操作数为真,结果就为真。

|| 是短路或,当第一个操作数为真时,就不会检查第二个操作数,结果一定为真。


写一个“标准”宏MIN

答案

#define MIN(x,y) ((x)<(y)?(x):(y))


&&&|||有什么区别

答案

& 是逻辑运算符,表示与,只有两个操作数都为真,结果才为真。

&& 是短路与,当第一个操作数为假时,就不会检查第二个操作数,结果一定为假。

| 是逻辑运算符,表示或,只要有一个操作数为真,结果就为真。

|| 是短路或,当第一个操作数为真时,就不会检查第二个操作数,结果一定为真。


C++的引用和C语言的指针有什么区别

答案


编码实现某一变量某位清0或置1

答案


编码实现字符 ‘5’ 转换为数字 5

答案
1
2
3
4
5
6
7
int main()
{
char ch='5';
int num=ch-'0';
printf("%d",num);
return 0;
}


对数组int ARRAY[10]={0,6,3,2,7,5,4,9,1,8};进行排序,使用伪代码描述思路。

答案
1
2
3
4
5
6
7
8
9
10
11
//冒泡排序

for i = 0 to 9
for j = 0 to 8
if ARRAY[j] > ARRAY[j+1]
temp = ARRAY[j]
ARRAY[j] = ARRAY[j+1]
ARRAY[j+1] = temp
end if
end for
end for


谈谈你对面向对象的认识

答案

面向对象是一种编程思想,通过把现实世界中的事物抽象成对象,并将对象中的属性和行为抽出来,以模块的形式实现程序的开发。面向对象的编程思想将程序的抽象和实现分离,把程序的复杂性降低,提高了程序的可靠性。它的优点是开发效率高,可维护性好,可扩充性强,可以减少开发时间和成本,以及减少维护和修改时可能带来的风险。