计算机选择题05

int fun(char(* ss)[N], int *n)

 {
     int i, k = 0, len = N;
     for (i = 0; i < ___M___; i++) // 这里是要遍历数组,数组的长度为M,
     {
         len = strlen(ss[i]);
         if (i == 0)
             *n = len;
         if (len _<___ * n); // 这里是取最小的长度,
         {
             *n = len;
             k = i;
         }
     }
     return ( _____ ); // 函数返回最小长度字符串的下标,这里为k
 }

特殊值代入法,A[1][1]存在B[1]的位置,即i=1,j=1,在数组B中下表为1,显然答案为A

 

二维数组和一维数组的区别在于,二维数组可以理解为一维的一维。在一维中,*表示取数值,在二维中*表示取第几行的地址,**表示取值。

 数组可以也动态实现,int n; cin>>n,int *p=new int[n]; 指针传递也是传地址

稀疏矩阵在采用压缩存储后将会失去随机存储的功能。因为在这种矩阵中,非零元素的分布是没有规律的,为了压缩存储,就将每一个非零元素的值和它所在的行、列号做为一个结点存放在一起,这样的结点组成的线性表中叫三元组表,它已不是简单的向量,所以无法用下标直接存取矩阵中的元素。

数组可以直接通过下标得到存储的值 因此支持随机,访问链表是链式存储结构时无法支持随机访问,要访问一个指定位置的元素必须从头开始做指针移动。哈希表支持直接通过关键码得到值 其实数组就是一种哈希表 下标就是关键码 通过下标直接得到值 因此哈希表肯定需要做范围检查也有办法做范围检查的

在快速排序中,需要使用递归来分别处理左右子段,递归深度可以理解为系统栈保存的深度,先处理短的分段再处理长的分段,可以减少时间复杂度;

如果按长的递归优先的话,那么短的递归会一直保存在栈中,直到长的处理完。短的优先的话,长的递归调用没有进行,他是作为一个整体保存在栈中的,所以递归栈中的保留的递归数据少一些。

数组名当被直接使用时,是一个指向数组首地址的指针。如果数组是***数组,那么数组名是指向第一行数组的首地址,而不是第一行第一列单个元素的地址,所以*(a+i)与a[i]是一个意思,当直接用a[i]时代表的是该一维数组的首地址,所以*(a[i]+j)是与a[i][j]等效,所以AB选项正确 

定义二维数组时,不能省略第二维的大小,这是由编译器原理限制的。事实上,编译器是这样处理数组的:
      设有数组int a[m][n],如果要访问a[i][j]的值,编译器的寻址方式为:
     &a[i][j]=&a[0][0]+i*sizeof(int)*n+j*sizeof(int); //注意n为第二维的维数,

本题需要将数组a=[1,2,3]变成[1,2,3,4],需要改变原数组a。

Array对象常用方法中:

不改变原数组:

1、 concat()

  • 连接两个或多个数组
  • 不改变原数组
  • 返回被连接数组的一个副本

2、join()

  • 把数组中所有元素放入一个字符串
  • 不改变原数组
  • 返回字符串

3、 slice()

  • 从已有的数组中返回选定的元素
  • 不改变原数组
  • 返回一个新数组

4、 toString()

  • 把数组转为字符串
  • 不改变原数组
  • 返回数组的字符串形式

改变原数组:

5、 pop()

  • 删除数组最后一个元素,如果数组为空,则不改变数组,返回undefined
  • 改变原数组
  • 返回被删除的元素


6、 push()

  • 向数组末尾添加一个或多个元素
  • 改变原数组
  • 返回新数组的长度

7、 reverse()

  • 颠倒数组中元素的顺序
  • 改变原数组
  • 返回该数组

8、 shift()

  • 把数组的第一个元素删除,若空数组,不进行任何操作,返回undefined
  • 改变原数组
  • 返回第一个元素的值

9、 sort()

  • 对数组元素进行排序(ascii)
  • 改变原数组
  • 返回该数组

10、 splice()

  • 从数组中添加/删除项目
  • 改变原数组
  • 返回被删除的元素

11、 unshift()

  • 向数组的开头添加一个或多个元素
  • 改变原数组
  • 返回新数组的长度

A选项,a.reverse()后返回值即数组a变成[3,2,1],再使用unshift()方法在数组开头添加一个4,a数组就变成了[4,3,2,1]。注,unshift()返回新数组的长度,此处为4。正确。

B选项,push()方法返回新数组的长度,是一个number类型,不是数组,所以不能再用“.”操作符继续执行reverse()方法。错误。

C选项,正确。

D选项,splice()语法:arrayObject.splice(index,howmany,item1,.....,itemX)。
参数:
index:必需。整数,规定添加/删除项目的位置,使用负数可从数组结尾处规定位置。
howmany:必需。要删除的项目数量。如果设置为 0,则不会删除项目。
item1, ..., itemX:可选。向数组添加的新项目。
返回值:
Array:包含被删除项目的新数组,如果有的话。

由于a.splice(3,1,4)中的index为3,超过了数组a的下标,所以3后面的1也不会起作用。a.splice(3,1,4)会将4插入到数组a末尾。但splice()返回值是被删除项目的新数组,由于a.splice(3,1,4)并没有删除元素,所以返回的新数组为空,对空数组reverse()还是空。(如果D选项改成a.splice(3,1,4);a.reverse()就正确了。)错误。

串长度是指串中所有字符的个数

比如字符串“aba”长度为3

该题考察的是数据结构中的基本概念。

字符串:是有零个或多个字符组成的有序序列,是计算机处理的最基本的非数值数据。

              S='a1a2a3...an'  (n ≥0)

  • 字符串的值中每个字符ai(0 ≤i ≤n)可以是字母、数字或其他字符组成的序列,组成线性表的每个元素就是一个单字符,所以是一种特殊的线性表,A正确
  • 串是特殊的线性表,故其存储结构与线性表的存储结构类似,只不过组成串的结点是单个字符而已。连续存储包括静态定长存储和动态堆分配存储串值也可用单链表存储,简称为链串。所以实际应用中为了提高空间利用率,可使每个结点存放多个字符(这是顺序串和链串的综合 (折衷) ),称为块链结构
  • 空串有自己的串长度和内容,即:“长度为0,内容为空”。C错误。
  • 空串是长度为0,内容为空;空白串是包含一个或多个空白字符‘ ’(空格键)的字符串。所以不是同一含义。D正确。

字符常量是用单引号括起来的一个字符。A选项中,使用双引号标示字符串常量,所以是错误的;C选项中,'abc'是字符串,字符常量只能是单个字符,不能使字符串;D选项中,以反斜杠"\"开头的是转义字符。因此B选项正确。

​​​​​​​

线性结构是一个有序数据元素的集合。

 

数据结构中线性结构指的是数据元素之间存在着“一对一”的线性关系的数据结构。

常用的线性结构有:线性表,栈,队列,双队列,数组,串。

 

相对应于线性结构,

非线性结构的逻辑特征是一个结点元素可能对应多个直接前驱和多个后继。

如树,表,***数组等

这个操作就是在S2中寻找匹配S1的串

将字符串赋值给字符数组: ********************************************** 1.定义时直接用字符串赋值。 char a[10]="hello";但是不能先定义再赋值,即以下非法:char a[10];a[10]="hello"; ********************************************** 2.利用strcpy。 char a[10]; strcpy(a,"hello"); ********************************************** 3.利用指针。 char *p; p="hello";这里字符串返回首字母地址赋值给指针p。另外以下非法:char a[10]; a="hello"; a已经指向在堆栈中分配的10个字符空间,不能再指向数据区中的"hello"常量。可以理解为a是一个地址常量,不可变,p是一个地址变量。 ********************************************** 4.数组中的字符逐个赋值。

strcpy(s1,s2)这个函数是把s2字符串拷贝到s1这个字符串,同时也把s2的 '\0' 拷过去,所以覆盖了s1的所有字符(在空间足够的情况下,当然遇到s1的空间不足以存放s2,另考虑),所以strcpy执行完后是“1234” strlen("1234")  就是4了

首先原题目是错误的。

题干 if(strlen(*(p+i))>strlen(*(p+i)))后一个应该是(p+j)

考察的是指针数组的遍历.

  • A选项的数组名为指针,无法遍历数组元素。
  • C、D是指针,元素的地址。

串又称为字符串,是一种特殊的线性表,其特殊性体现在数据元素是一个字符,也就是说串是一种内容受限的线性表。(栈和队列是操作受限的线性表)

80和9,你们没看到有空格吗?首尾各一个空格

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值