1、已知声明并初始化二维数组 int a[ ][ ]={ {1,2},{3,4},{5,6}} ,则 a[1][1] 的值为()
正确答案: C
1
2
4
5
分析:
二维数组: 0 1
0 {1,2}
1 {3,4}
2 {5,6} 所以a[1][1]=4;
注意:数组下标是从零开始的!
2、数组常用的两种基本操作是( )
正确答案: C 你的答案: C (正确)
建立与删除删除与查找查找与修改插入与索引
分析:
数据最常用的操作就是查找和修改元素
3、从逻辑结构上看,n维向量的每个元素均属于1个n维向量()
正确答案: A 你的答案: A (正确)
对
错
分析:
自然是对的,像2为数组的每个元素属于2个向量Z(x,y),通俗的说,在Z中增加一维,也就是在每个元素增加一类属性,也就是增加一个向量,此时Z中每个元素已经对应三种属性(向量).
同理,n维数组的每个元素均属于n个向量.
4、有一个二维数组A[10][5],每个数据元素占1个字节,且A[0][0]的存储地址是1000,则A[i][j]的地址是多少 ?
正确答案:C
1000+10i+j1000+i+j1000+5i+j1000+10i+5j
分析:
因为是5列10行的数组,而且分配内存地址是连续的,如果按行存储的,则每增加1行地址就会增加5,然后加上所在的列就是当前的地址,所以就是1000+5i+j
5、广义表(((a,b,c),d,e,f))的长度是4()
正确答案: B 你的答案: B (正确)
对
错
分析:
广义表即我们通常所说的列表(lists)。它放松了对表元素的原子性限制,允许他们有自身结构。
广义表的长度:最大括号中的逗号数+1,即去掉一层括号剩下的是几部分。
广义表的深度:展开后含括号的层数,即去掉几层括号可以到最后一部分。
比如: 例如E((a,(a,b),((a,b),c)))的长度和深度分别为1和4
6、将一个A[1..100,1..100]的三对角矩阵,按行优先存入一维数组B[1..298]中,A中元素A6665 (即该元素下标i=66,j=65),在B数组中的位置K为()供选择的答案:
正确答案: B 你的答案: B (正确)
198
195
197
分析:
先假设每行都有三个,66行就198个,减去第一行一个剩下197个,然后算最后一行,第65列所处的位置是三个数的第一个,所以还要再减去2。即66*3-(3-(65-1)%3)-1=195
7、下列数组定义及赋值,错误的是
正确答案: B
int intArray[ ];int intArray=new int[3]; intArray[1]=1; intArray[2]=2;int a[ ]={1, 2, 3, 4, 5};int a[ ] [ ]=new int[2] [ ]; a[0]=new int[3]; a[1]=new int[3];
分析:
A选项只能算是一个数组的声明,而非定义,也不是赋值
B选项三条语句都是赋值
C选项是定义
D选项是定义,然后两条语句是赋值
8、下列关于线性表中的链表描述正确的是?
正确答案: A B C D
适用于数据项数量不能预知的情况。逻辑相邻的2元素的存储空间可以是不连续的。链表节点一般有数据元素和指针域两部分组成。存储空间需要动态分配。
分析:
线性表有顺序表和链式表
线性表中的链表
A,D数据项可以是未知的链式表可以动态分配空间
B,C因为链式表可以动态分配空间因此内存空间不一定是连续的,链表的节点必须有指针域来表示内存地址,数据域用来保存数据
9、线性结构的是()
正确答案: A B C
串链式存储栈顺序存储栈顺序存储二叉树
分析:
线性是线性,顺序是顺序,线性是逻辑结构,顺序是存储结构,两者不是一个概念,线性是指一个元素后继只有唯一的一个元素或节点,非线性是一个元素后面可以有多个后继或前继节点,顺序是指存储结构连续,例如数组是顺序的,链表不是顺序的,但他们都是线性的。当然顺序也可以是非线性的,例如顺序结构存储非线性结构的二叉树!!!
10、以下能对二维数组 a 进行正确初始化的语句是( )
正确答案: B D 你的答案: B C D (错误)
int a[2][]={ {1,0,1},{5,2,3}};int a[][3]={ {1,2,3},{4,5,6}};int a[2][4]={1,2,3},{4,5},{6}};int a[][3]={ {1,0,1},{},{1,1}};
分析:
定义二维数组时,不能省略第二维的大小,这是由编译器原理限制的。事实上,编译器是这样处理数组的:
设有数组int a[m][n],如果要访问a[i][j]的值,编译器的寻址方式为:
- &a[i][j]=&a[0][0]+i*sizeof(int)*n+j*sizeof(int); //注意n为第二维的维数,