24/4/16
1.
数组作为函数参数传递的是数组的首地址
2.
设有一个10阶的对称矩阵A,采用压缩存储方式,以行序为主存储,a11为第一元素,其存储地址为1,每个元素占一个地址空间,则a85的地址为( )。
由于是对称矩阵,因此压缩存储可以认为只要存储下三角矩阵。
(1,1) 1
(2,1) (2,2) 2
(3,1) (3,2) (3,3) 3
(4,1) (4,2) (4,3) (4,4) 4
(5,1) (5,2) (5,3) (5,4) (5,5) 5
(6,1) (6,2) (6,3) (6,4) (6,5) (6,6) 6
(7,1) (7,2) (7,3) (7,4) (7,5) (7,6) (7,7) 7
(8,1) (8,2) (8,3) (8,4) (8,5) 5
1+2+3+4+5+6+7+5=33
3.
以下正确定义一维数组的选项是( )
A. int a[5] = {0, 1, 2, 3, 4, 5}; B. char a[] = {0, 1, 2, 3, 4, 5};
C. char a = {'A', 'B', 'C'}; D. int a[5] = "0123";
【A选择:】数组越界。所以错误。 【B选择:】声明char类型,传入了数值数组,而数值会以char类型的ASCII编码写入。所以正确。【C选择:】 数组声没明显不符合规范,左侧声明名后应加上[]。所以错误。 【D选择】:这种声名只能用字符型char等。所以错误。
4.
循环队列SQ的存储空间是数组d[m],队头、队尾指针分别是front和rear,则执行出队后其头指针front值是()
循环队列:m为数组容量
进队:队尾指针(rear+1)%m 出队:对头指针(front+1)%m
24/5/16 数组
1.数组与列表的区别:
前者长度固定,后者长度不变
2.假设要存储一个数据集,数据维持有序,对其的操作只有插入、删除和顺序遍历,综合存储效率和运行速度,下列哪种数据结构是最适合的是?
链表
数组插入、删除需要移动数组元素,平均移动n/2 哈希表难以实现顺序遍历 队列插入删除效率低下
3.
合法的数组说明语句是( )
A . int a[] = "string"; B . int a[5] = {0.1, 2, 3, 4};
C . char a = "string "; D . char a[] = {0, 1, 2, 3, 4, 5};
D中的是字符,并不是阿拉伯数字
4.声明一个指向含有10个元素的数组的指针,其中每个元素是一个函数指针,该函数的返回值是int,参数是int*,正确的是()
A . (int *p[10])(int*) B . int [10]*p(int *)
C . int (*(*p)[10])(int *) D . int ((int *)[10])*p E . 以上选项都不正确
C. 首先题目说要声明一个数组指针, 一般我们想到的数组指针是 随便来一个 int(*p)[10], 然后又说每个元素是一个函数指针,那么我们随便来一个 函数指针 int (*pf)(int *) . 然后把(*p)[10]作为一个整体替代 pf 即 int(*(*p)[10]))(int *); 分析: 判断一个复杂式子看最高优先级的,*p是一个指针,然后(*p)外面是[],所以是数组指针,(*p)[10])描述完毕,然后再看外面int(*)(int *)很明显,这是一个函数指针,所以这个数组中每个元素是函数指针