牛客网数组专项练习(五)

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+j
1000+i+j
1000+5i+j
1000+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为第二维的维数,
    原文作者:weixin_44077638
    原文地址: https://blog.csdn.net/weixin_44077638/article/details/104590839
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞