第4章数组练习题
第四章 数组习题集答案
D)puts(s);
34.若有说明double b[7][6];对元素的非法引用是【】。
A)b[3][5]B)b[7][5]C)b[2*3][4]D)b[0][9-6]
35.若已包含标题文件<string.h>,并已有定义char s1[5],s2[]="abcd";int i;现要将字符串”abcd”赋给s1,下述语句中错误的是【】。
4.若定义了数组int k[][4]={{1},{1,2,3},{5,6}};则数组共有【】元素。
A)6B)9C)10D)12
5.要将20,30,40,50存入数组b中,下列正确的程序段是【】。
A)
int i,b[4];
for(i=0; i<4; i++)
b[i]=(i+2)*10;
B)
int b[4];
A)strcpy(s1,"abcd");
B)s1=”abcd”;
C)for(i=0;i<5;i++) s1[i]=s2[i];
D)s[0]=’a’,s[1]=’b’,s[2]=’c’,s[3]=’d’;s[4]=’\0’;
36.运行下面程序段的输出结果是【】。
char s1[6]={'d','o','\0','i','t ','\0'};
A)scanf("%s",&s);
B)gets(s);
C)for(i=0;i<10;i++) scanf("%c",s[i]);
数据结构第4章 数组和广义表
第4章数组和广义表【例4-1】二维数组A的每一个元素是由6个字符组成的串,其行下标i=0,1,…,8,列下标j=1,2,…,10。
若A以行为主序存储元素,A[8][5]的物理地址与当A按列为主序存储时的元素()的物理地址相同。
设每个字符占一个字节。
A.A[8][5] B.A[3][10] C.A[5][8] D.A[0][9]解:二维数A是一个9行10列的矩阵,即A[9][10]。
按行存储时,A[8][5]是第85个元素存储的元素。
而按列存储时,第85个存储的元素是A[3][10]。
即正确答案为B。
【例4-2】若对n阶对称矩阵A以行序为主序方式将其下三角形的元素(包括主对角线上所有元素)依次存放于一维数组B[n(n+1)/2]中,则在B中确定的位置k的关系为()。
A.jii+-2)1(*B.ijj+-2)1(*C.jii++2)1(*D.ijj++2)1(*解:如果a ij按行存储,那么它的前面有i-1行,其有元素个数为:1+2+3+…+(i-1)=i(i-1)/2。
同时它又是所在行的第j列,因此它排列的顺序还得加上j,一维数组B[n(n+1)/2]中的位置k与其下标的关系是:jii+-2)1(*。
因此答案为A。
【例4-3】已知n阶下三角矩阵A,按照压缩存储的思想,可以将其主对角线以下所有元素(包括主对角线上元素)依次存放于一维数组B中。
请写出从第一列开始以列序为主序分配方式时在B中确定元素a ij的存放位置的公式。
解:如果a ij按列存储,那么它的前面有j-1列,共有元素:n+(n-1)+(n-2)+ …+[n-(j-2)]=(j-1)*n-2)1)(2(--jj而它又是所在列的第i行,因此在它前的元素个数还得加上i。
因此它在一维数组B中的存储顺序为:(j-1)*n-2)1)(2(--jj+i【例4-4】已知广义表L=((x,y,z),a,(u,t,w)),从L表中取出的原子项ASCII码最大的运算是()。
数据结构答案第4章
第 4 章广义线性表——多维数组和广义表2005-07-14第 4 章广义线性表——多维数组和广义表课后习题讲解1. 填空⑴数组通常只有两种运算:()和(),这决定了数组通常采用()结构来实现存储。
【解答】存取,修改,顺序存储【分析】数组是一个具有固定格式和数量的数据集合,在数组上一般不能做插入、删除元素的操作。
除了初始化和销毁之外,在数组中通常只有存取和修改两种操作。
⑵二维数组A中行下标从10到20,列下标从5到10,按行优先存储,每个元素占4个存储单元,A[10][5]的存储地址是1000,则元素A[15][10]的存储地址是()。
【解答】1140【分析】数组A中每行共有6个元素,元素A[15][10]的前面共存储了(15-10)×6+5个元素,每个元素占4个存储单元,所以,其存储地址是1000+140=1140。
⑶设有一个10阶的对称矩阵A采用压缩存储,A[0][0]为第一个元素,其存储地址为d,每个元素占1个存储单元,则元素A[8][5]的存储地址为()。
【解答】d+41【分析】元素A[8][5]的前面共存储了(1+2+…+8)+5=41个元素。
⑷稀疏矩阵一般压缩存储方法有两种,分别是()和()。
【解答】三元组顺序表,十字链表⑸广义表((a), (((b),c)),(d))的长度是(),深度是(),表头是(),表尾是()。
【解答】3,4,(a),((((b),c)),(d))⑹已知广义表LS=(a,(b,c,d),e),用Head和Tail函数取出LS中原子b的运算是()。
【解答】Head(Head(Tail(LS)))2. 选择题⑴二维数组A的每个元素是由6个字符组成的串,行下标的范围从0~8,列下标的范围是从0~9,则存放A至少需要()个字节,A的第8列和第5行共占()个字节,若A按行优先方式存储,元素A[8][5]的起始地址与当A按列优先方式存储时的()元素的起始地址一致。
第四、五章串、数组和广义表练习题答案
第四、五章串、数组和广义表练习题答案一.填空题1. 不包含任何字符(长度为0)的串称为空串;由一个或多个空格(仅由空格符)组成的串称为空白串。
2. 设S=“A;/document/Mary.doc”,则strlen(s)= 20 , “/”的字符定位的位置为3。
3. 子串的定位运算称为串的模式匹配;被匹配的主串称为目标串,子串称为模式。
4. 设目标T=”abccdcdccbaa”,模式P=“cdcc”,则第 6 次匹配成功。
5. 若n为主串长,m为子串长,则串的古典(朴素)匹配算法最坏的情况下需要比较字符的总次数为(n-m+1)*m。
6. 假设有二维数组A6×8,每个元素用相邻的6个字节存储,存储器按字节编址。
已知A的起始存储位置(基地址)为1000,则数组A的体积(存储量)为288 B ;末尾元素A57的第一个字节地址为1282 ;若按行存储时,元素A14的第一个字节地址为(8+4)×6+1000=1072 ;若按列存储时,元素A47的第一个字节地址为(6×7+4)×6+1000)=1276 。
(注:数组是从0行0列还是从1行1列计算起呢?由末单元为A57可知,是从0行0列开始!)7. 〖00年计算机系考研题〗设数组a[1…60, 1…70]的基地址为2048,每个元素占2个存储单元,若以列序为主序顺序存储,则元素a[32,58]的存储地址为8950 。
答:不考虑0行0列,利用列优先公式:LOC(a ij)=LOC(a c1,c2)+[(j-c2)*(d1-c1+1)+i-c1)]*L 得:LOC(a32,58)=2048+[(58-1)*(60-1+1)+32-1]]*2=89508. 三元素组表中的每个结点对应于稀疏矩阵的一个非零元素,它包含有三个数据项,分别表示该元素的行下标、列下标和元素值。
9.求下列广义表操作的结果:(1)GetHead【((a,b),(c,d))】=== (a, b) ; //头元素不必加括号(2)GetHead【GetTail【((a,b),(c,d))】】=== (c,d) ;(3)GetHead【GetTail【GetHead【((a,b),(c,d))】】】=== b ;(4)GetTail【GetHead【GetTail【((a,b),(c,d))】】】=== (d);10.C语言规定,字符串常量按_字符数组_____处理,它的值在程序的执行过程中是不能改变的。
C语言程序设计-第4章 练习题
一、单项选择题题目1假定有一个元素类型为int的数组a[10],它所占用的存储空间的字节数为()。
a. 40b. 80c. 10d. 20题目2假定一维数组的定义为“char* a[8];”,则该数组所占用的存储空间的字节数为()。
a. 16b. 8c. 64d. 32题目3假定有一个定义语句为“int a[10]={3,4,2,8,6};”,则元素a[5]的值为()。
a. 0b. 6c. 2d. 8题目4在下面的一维数组定义语句中,有语法错误的是()。
a. int a[];b. int a[5];c. int a[10]={0};d. int a[]={1,2,3};题目5假定二维数组的定义语句为“int a[3][5];”,则该数组所含元素的个数为()。
a. 10b. 12c. 15d. 8题目6假定有一个定义语句为“int a[3][4]={{3,4},{2,8,6}};”,则元素a[1][2]的值为()。
a. 6b. 8c. 4d. 2题目7对于一个长度为n的字符串,保存它至少需要占用的存储字节数为()。
a. n-1b. n+1c. nd. n+2题目8对于一个二维字符数组a[M][N],存储每个字符串的长度至多为()。
a. N-1b. Nc. Md. M-1题目9若需要比较两个字符串的大小,则选用的函数是()。
a. strlenb. strcmpc. strcpyd. strcat二、判断题题目10一维数组元素带有两个下标。
对错题目11对于二维数组元素,数组名后使用两对中括号。
对错题目12在一维数组的定义语句中,给数组赋初值的部分是用一对花括号括起来的数据表。
对错题目13在一维数组的定义语句中,数组名前为元素类型关键字。
对错题目14在二维数组的定义语句中,数组名后带有两对圆括号。
对错题目15假定二维数组的定义语句为“double a[M][N];”,则每个数组元素的列下标取值范围在1~N 之间。
数据结构第四章考试题库(含答案)
第四章串一、选择题1.下面关于串的的叙述中,哪一个是不正确的?()【北方交通大学 2001 一、5(2分)】A.串是字符的有限序列 B.空串是由空格构成的串C.模式匹配是串的一种重要运算 D.串既可以采用顺序存储,也可以采用链式存储2 若串S1=‘ABCDEFG’, S2=‘9898’ ,S3=‘###’,S4=‘’,执行concat(replace(S1,substr(S1,length(S2),length(S3)),S3),substr(S4,i ndex(S2,‘8’),length(S2))) 其结果为()【北方交通大学 1999 一、5 (25/7分)】A.ABC###G0123 B.ABCD###2345 C.ABC###G2345 D.ABC###2345E.ABC###G1234 F.ABCD###1234 G.ABC###012343.设有两个串p和q,其中q是p的子串,求q在p中首次出现的位置的算法称为()A.求子串 B.联接 C.匹配 D.求串长【北京邮电大学 2000 二、4(20/8分)】【西安电子科技大学 1996 一、1 (2分)】4.已知串S=‘aaab’,其Next数组值为()。
【西安电子科技大学 1996 一、7 (2分)】A.0123 B.1123 C.1231 D.12115.串‘ababaaababaa’的next数组为()。
【中山大学 1999 一、7】A.9 B.2 C.6 D.456.字符串‘ababaabab’的nextval 为()A.(0,1,0,1,04,1,0,1) B.(0,1,0,1,0,2,1,0,1)C.(0,1,0,1,0,0,0,1,1) D.(0,1,0,1,0,1,0,1,1 )【北京邮电大学 1999 一、1(2分)】7.模式串t=‘abcaabbcabcaabdab’,该模式串的next数组的值为(),nextval数组的值为()。
第四章 数组作业
第四章数组4.1 选择题1. 以下关于数组的描述正确的是( )。
A. 数组的大小是固定的,但可以有不同的类型的数组元素B. 数组的大小是可变的,但所有数组元素的类型必须相同C. 数组的大小是固定的,所有数组元素的类型必须相同D. 数组的大小是可变的,可以有不同的类型的数组元素2. 以下对一维整型数组a的正确说明是( )。
A.int a(10);B. int n=10,a[n];C.int n;D. #define SIZE 10scanf("%d",&n); int a[SIZE];int a[n];3. 在C语言中,引用数组元素时,其数组下标的数据类型允许是( )。
A. 整型常量B. 整型表达式C. 整型常量或整型表达式D. 任何类型的表达式4. 以下对一维数组m进行正确初始化的是( )。
A. int m[10]=(0,0,0,0) ;B. int m[10]={ };C. int m[ ]={0};D. int m[10]={10*2};5. 若有定义:int bb[ 8];。
则以下表达式中不能代表数组元bb[1]的地址的是( )。
A. &bb[0]+1B. &bb[1]C. &bb[0]++D. bb+16. 假定int类型变量占用两个字节,其有定义:int x[10]={0,2,4};,则数组x在内存中所占字节数是( )。
A. 3B. 6C. 10D. 207. 若有以下说明:int a[12]={1,2,3,4,5,6,7,8,9,10,11,12};char c='a',d,g;则数值为4的表达式是( )A. a[g-c]B. a[4]C. a['d'-'c']D. a['d'-c]8. 以下程序段给数组所有的元素输入数据,请选择正确答案填入( )。
#include<stdio.h>main(){int a[10],i=0;while(i<10) scanf("%d",________ );┇}A. a+(i++)B. &a[i+1]C. a+iD. &a[++i]9. 执行下面的程序段后,变量k中的值为( )。
第4章_数组c++_习题答案解析
习题4一、单项选择题1.若有说明inta[3][4];则a数组元素的非法引用是【】A.a[0][2*1]B.a[1][3]C.a[4-2][0]D.a[0][4]【答案】D【解析】数组下标从0开始,a[0][4]的列下标越界。
2.在C++语言中,引用数组元素时,其数组下标的数据类型允许是【】A.整型常量B.整型表达式C.整型常量或整型表达式D.任何类型的表达式【答案】C3.以下不正确的定义语句是【】A.doublex[5]={2.0,4.0,6.0,8.0,10.0};B.inty[5]={0,1,3,5,7,9};C.charc1[]={′1′,′2′,′3′,′4′,′5′};D.charc2[]={x1′0′x,a′′x,8′′};【答案】B【解析】初始值的个数大于数组的大小,系统会出现编译错误。
4.对以下说明语句的正确理解是【】inta[10]={6,7,8,9,10};A.将5个初值依次赋给a[1]至a[5]B.将5个初值依次赋给a[0]至a[4]C.将5个初值依次赋给a[6]至a[10]D.因为数组长度与初值的个数不相同,所以此语句不正确【答案】B5.若有说明:inta[][4]={0,0};则下面不正确的叙述是【】A.数组a的每个元素都可得到初值0B.二维数组a的第一维大小为1C.当初值的个数能被第二维的常量表达式的值除尽时,所得商数就是第一维的大小D.只有元素a[0][0]和a[0][1]可得到初值,其余元素均得不到确定的初值【答案】D【解析】二维数组初始化时,行大小可以省略,被省略的大小根据初值的个数系统来确定,本题中,有2个初值说明是1行4列,所以第一维为1。
元素a[0][0]和a[0][1]赋初值为0,其余元素初值系统默认为0。
6.以下能对二维数组c进行正确的初始化的语句是【】A.intc[3][]={{3},{3},{4}};B.intc[][3]={{3},{3},{4}};C.intc[3][2]={{3},{3},{4},{5}};D.intc[][3]={{3},{},{3}};【答案】B【解析】二维数组初始化时,行大小可以省略,列大小不可以省略,所以A答案错误。
数组练习题大全
数组练习题大全数组是计算机编程中一种重要的数据结构。
掌握数组的基本操作和应用是每个程序员都需要具备的技能之一。
本文将为您提供一系列数组练习题,帮助您熟练掌握数组的使用。
一、基础操作题1. 请编写一个程序,创建一个长度为5的整型数组,然后将数组中的元素依次赋值为1、2、3、4、5,并输出数组中的所有元素。
2. 请编写一个程序,创建一个长度为10的字符型数组,然后将数组中的元素依次赋值为'A'、'B'、'C'、'D'、'E'、'F'、'G'、'H'、'I'、'J',并输出数组中的所有元素。
3. 请编写一个程序,创建一个长度为7的浮点型数组,然后使用循环从键盘输入数组中的元素值,并计算数组中所有元素的平均值。
二、查找与排序题4. 请编写一个程序,在一个已知整型数组中查找指定的元素。
如果找到该元素,则输出该元素的下标位置;如果未找到,则输出"未找到该元素"。
5. 请编写一个程序,将一个已知整型数组按照从小到大的顺序进行排序,并输出排序后的结果。
三、统计与分析题6. 请编写一个程序,统计一个整型数组中负数的个数,并输出统计结果。
7. 请编写一个程序,计算一个整型数组中所有元素的和,并输出总和。
8. 请编写一个程序,找出一个整型数组中的最大值和最小值,并输出这两个值。
四、应用题9. 请编写一个程序,统计一个整型数组中奇数和偶数的个数,并输出统计结果。
10. 请编写一个程序,从一个已知整型数组中删除指定的元素,并输出删除后的数组。
11. 请编写一个程序,将一个整型数组中的所有元素向左移动一位,并输出移动后的数组。
12. 请编写一个程序,将一个整型数组中的所有元素向右移动一位,并输出移动后的数组。
总结:通过以上一系列的数组练习题,您可以逐步掌握数组的使用技巧。
数组练习题
数组练习题1.下面数组声明语句,_________正确。
A)Dim a[2,4] As Integer B)Dim a(2,4)As IntegerC)Dim a(n,n)As Integer D)Dim a(2 4)As Integer2.假定建立了一个名为Command1的命令按钮数组,则以下说法中错误的是________。
A)数组中每个命令按钮的名称(名称属性)均为Command1B)数组中每个命令按钮的标题(Caption属性)都一样C)数组中所有命令按钮可以使用同一个事件过程D)用名称Command1(下标)可以访问数组中的每个命令按钮3.数组声明语句Dim a(-2 to2,5)中,数组包含元素个数为________。
A)120 B)30 C )60 D)204.下面程序的输出结果是________。
Dim aa = Array(1,2,3,4,5,6,7)For i = Lbound(a)to Ubound(a)a(i)= a(i)* a(i)Next iPrint a(i)A)36 B)程序出错C)49 D)不确定5.下面程序的输出结果是________。
Option Base 1Private Sub Command1_Click()Dim a%(3, 3)For i = 1 To 3For j = 1To 3If j > 1 And i > 1 Thena(i, j)= a(a(i - 1, j - 1), a(i, j - 1))+ 1Elsea(i, j)= i * jEnd IfPrint a(i, j); "";Next jPrintNext iEnd SubA)1 2 3 B)1 2 3 C )1 2 3 D)1 2 32 3 1 1 2 3 2 4 6 2 2 23 2 3 1 2 3 3 6 9 3 3 36.在设定Option Base 0后,经Dim arr(3,4)As Integer 定义的数组arr含有的元素个数为________。
(完整word版)计算机操作系统第三版第4章练习题
一、单项选择题1.要保证一个程序在主存中被改变了存放位置后仍能正确执行,则对主存空间应采用()技术。
A.动态重定位B.静态重定位C.动态分配D.静态分配2.固定分区存储管理把主存储器划分成若干个连续区,每个连续区称一个分区。
经划分后分区的个数是固定的,各个分区的大小()。
A.是一致的B.都不相同C.可以相同,也可以不相同,但根据作业长度固定D.在划分时确定且长度保持不变3.采用固定分区方式管理主存储器的最大缺点是()。
A.不利于存储保护B.主存空间利用率不高C.要有硬件的地址转换机构D.分配算法复杂4.采用可变分区方式管理主存储器时,若采用最优适应分配算法,宜将空闲区按()次序登记在空闲区表中。
A.地址递增B.地址递减C.长度递增D.长度递减5.在可变分区存储管理中,某作业完成后要收回其主存空间,该空间可能要与相邻空闲区合并。
在修改未分配区表时,使空闲区个数不变且空闲区始址不变的情况是()空闲区。
A.无上邻也无下邻B.无上邻但有下邻C.有上邻也有下邻D.有上邻但无下邻6.在可变分区存储管理中,采用“紧凑"技术可以()。
A.汇集主存中的空闲区B.增加主存容量C.缩短访问周期D.加速地址转换7.页式存储管理中的页表是由()建立的。
A.操作员B.系统程序员C.用户D.操作系统8.采用页式存储管理时,重定位的工作是由()完成的。
A.操作系统B.用户C.地址转换机构D.主存空间分配程序9.采用段式存储管理时,一个程序如何分段是在()决定的。
A.分配主存时B.用户编程时C.装人作业时D.程序执行时10.采用段式存储管理时,一个程序可以被分成若干段,每一段的最大长度是由( )限定的。
A.主存空闲区的长度B.硬件的地址结构C.用户编程时D.分配主存空间时11.实现虚拟存储器的目的是()。
A.扩充主存容量B.扩充辅存容量C.实现存储保护D.加快存取速度12.LRU页面调度算法是选择( )的页面先调出.A.最近才使用B.最久未被使用C.驻留时间最长D.驻留时间最短13.若进程执行到某条指令时发生了缺页中断,经操作系统处理后,当该进程再次占用处理器时,应从()指令继续执行。
第4章数组习题(C语言程序设计)
puts(strcpy(a[0],a[2]);的输出结果是__2_3____
第4章 数组
三、写出程序运行结果
第4章 数组
1. main() { int a[]={2,4,6,8,10};
int y=1,j;
y
j
1
0
for(j=0;j<3;j++)
1
y+=a[j+1];
2
y=y+a[1]+a[2]+a[3]
第4章 数组
程序设计基础—C语言
第4章 数组
第4章 数组
一、单项选择题 (第107页)
第4章 数组
1、定义数组时,表示数组长度的不能是 (A )
存储类型 数据类型 数组名[ 数组长度 ]
√A. 整型变量 int x=6 ; int a[x];
B. 符号常量 #define N 5 C. 整型常量 char b[ 5];
}
1 2 34 5678 9 13 15
则字符串s所占的字节数是(
)
字符串s的字节数=长度+1 sizeof(s)= strlen(s)+1
A. 19 C. 15
B. 18
√D. 16
第4章 数组
二、填空题
第4章 数组
1.若定义int a[10]={1,2,3};则a[2]的值__3___;
2.若定义char string[] =“You are a student!”;
s=10*6+’5’-’0’=65
s=10*65+’2’-’0’=652
s=10*652+’1’-’0’=6521
printf(“%d\n”,s); }
数组练习题
一、选择题1.在C语言中,引用数组元素时,其数组下标的数据类型允许是__A______。
A)整型常量B)整型表达式C)整型常量或整型表达式D)任何类型的表达式2.以下对一维整型数组a的正确说明是____B____。
A)int a(10);B)int n=10,a[n];C)int n; D)define SIZE 10scanf(“%d”,&n); int a[SIZE];int a[n];3.若有说明:int a[10];则对a数组元素的正确引用是___D_____。
A)a[10] B)a[3.5] c)a(5) D)a[10-10]4.以下对二维数组a的正确说明是__C______。
A)int a[3][]; B)float a(3,4); C)double a[1][4]; D)float a(3)(4); 5.若有说明:int a[3][4];则对a数组元素的正确引用是___C_____。
A)a[2][4] B)a[1,3] C)a[1+1][0] D)a(2)(1)6.以下不能对二维数组a进行正确初始化的语句是___C_____。
A)int a[2][3]={0}; B)int a[][3]={{1,2),(0});C)int a[2][3]==={{1,2),{3,4),{5,6}}; D)int a[][3]===(1,2,3,4,5,6);7.若有说明:int a[3][4]={0};则下面正确的叙述是___B_____。
A)只有元素a[0][0]可得到初值0B)此说明语句不正确C)数组a中各元素都可得到初值,但其值不一定为0D)数组a中每个元素均可得到初值08.下面程序中有错误的行是___B_____(每行程序前面的数字表示行号)。
1 main( )2 {3 int a[3]={1};4 int i5 scanf("%d",&a);6 for(i=1;i<3;i++) a[0]=a[0]+a[i];7 printf("a[0]=%d\n",a[0]);8 }A)3 B)6 C)7 D)59.下面程序___D_____(每行程序前面的数字表示行号)。
C语言第四章练习题
C语⾔第四章练习题注意,本套题⽬中有些涉汲到函数的调⽤和指针的使⽤,⼤家⾃已先去看下,不懂就问,培养⾃⼰的⾃学能⼒。
⼀,选择题1.若有以下定义int x[10], *pt=x;则对x数组元素的正确引⽤是A) pt+3B) *&x[10]C) *(pt+10)D) *(x+3)2.有以下程序#includemain(){ int i, s=0, t[]={1,2,3,4,5,6,7,8,9};for(i=0;i<9;i+=2) s+=*(t+i);printf("%d\n",s);}程序执⾏后的输出结果是A) 20B) 25C) 45D) 363.#includemain(){ int c[6]={10,20,30,40,50,60}, *p,*s;p = c; s = &c[5];printf("%d\n", s-p );}程序运⾏后的输出结果是A) 5B) 50C) 6D) 60{ int a[3]={0}, i, j, k=2;for( i=0; ifor( j=0; jprintf("%d\n", a[1] );}程序运⾏后的输出结果是A) 0B) 2C) 15..有以下程序#includemain(){ int a[5]={2,4,6,8,10}, *p,**k;p = a; k = &pprintf("%d ", *( p++ ) );printf("%d\n", **k );}程序运⾏后的输出结果是A) 4 6B) 4 4C) 2 2D) 2 46.以下叙述中正确的是A) ⼀条语句只能定义⼀个数组B) 每个数组包含⼀组具有同⼀类型的变量,这些变量在内存中占有连续的存储单元C) 数组说明符的⼀对⽅括号中只能使⽤整型常量,⽽不能使⽤表达式D) 在引⽤数组元素时,下标表达式可以使⽤浮点数7.以下叙述中正确的是A) 数组下标的下限是1B) 数组下标的下限由数组中第⼀个⾮零元素的位置决定C) 数组下标的下限由数组中第⼀个被赋值元素的位置决定D) char c1, c2, *c3, c4[40];是合法的变量定义语句8.以下叙述中正确的是C) 语句 char a[2] = {"A", "B"}; 是合法的,定义了⼀个包含两个字符的数组D) 语句 char a[3]; a = "AB"; 是合法的,因为数组有三个字符空间的容量,可以保存两个字符9.有以下程序#includemain(){ int a[ ]={ 2,4,6,8,10 }, x, *p, y=1;p = &a[1];for( x=0; x<3; x++ ) y += *(p+x);printf( "%d\n",y );}程序的输出结果是A) 13B) 19C) 1110.有以下程序#includemain(){int a[ ] = { 2,4,6,8 }, *p=a, i;for( i=0; i<4; i++ )a[i]=*p++;printf( "%d\n" ,a[2] );}程序的输出结果是A) 2B) 8C) 4D) 611.以下叙述正确的是A) 不能在数组说明符的⼀对⽅括号中使⽤表达式B) char c1, *c2, **c3, c4[2]; 是C语⾔的合法语句C) 数组下标的最⼩值可以是负值D) 若有数组定义 int array[5]; 则语句printf("%d",array[1.23]);是合法的int b[] = {9};char c[3] = {"A", "B"};char d = "12";以下叙述正确的是A) a, b的定义合法,c, d的定义不合法B) a,b,c,d的定义都是合法的C) a,b,c的定义是合法的,d的定义不合法D) 只有a的定义是合法的12.对于函数声明void fun(float array[], int *ptr);下叙述正确的是A) 调⽤函数时,array数组的元素和ptr都是按值传送B) 函数声明有语法错误,参数 array 缺少数组⼤⼩定义C) 调⽤函数时,array数组中将存储从实参中复制来的元素值D) 函数参数 array, ptr 都是指针变量13.要求定义⼀个具有6个元素的int型⼀维数组,以下选项中错误的是A) int a[2*3] = {0};B) int N = 6, a[N];C) #define N 3int a[N+N];D) int a[] = {1,2,3,4,5,6};14.设有定义:int a[10]={0,1,2,3,4,5,6,7,8,9},*p=a,i;,若0≤i≤9,则对a数组元素的引⽤错误的是A) *(&a[i])B) a[10]C) p[i]D) a[p-a]15.有以下程序#includeint fun(int x[],int n){static int sum=0, i;for(i=0;ireturn sum;{int a[]={1,2,3,4,5}, b[]={6,7,8,9}, s=0; s=fun(a,5)+fun(b,4);printf("%d\n",s);}程序执⾏后的输出结果是A) 55B) 50C) 45D) 60⼆,填空题1. #includevoid fun(int *s, int n1, int n2){int i, j, t;i=n1; j=n2;while( i{t=s[i]; s[i]=s[j]; s[j]=t; i++; j--;}}main(){int a[10]={1,2,3,4,5,6,7,8,9,0}, k; fun(a,0,3); fun(a,4,9); fun(a,0,9); for(k=0;k<10;k++)printf("%d", a[k]);printf("\n");}则输出结果是。
数组练习题及答案
数组练习题及答案问题1:数组的基本操作题目:编写一个程序,实现以下功能:1. 初始化一个整型数组,大小为10,所有元素初始化为0。
2. 将数组中的元素依次设置为1到10。
3. 输出数组中的所有元素。
答案:```c#include <stdio.h>int main() {int arr[10] = {0};for (int i = 0; i < 10; i++) {arr[i] = i + 1;}for (int i = 0; i < 10; i++) {printf("%d ", arr[i]);}return 0;}```问题2:数组的反转题目:编写一个函数,实现对整数数组的反转。
答案:```cvoid reverseArray(int arr[], int size) {int start = 0;int end = size - 1;while (start < end) {int temp = arr[start];arr[start] = arr[end];arr[end] = temp;start++;end--;}}```问题3:数组的查找题目:编写一个函数,实现在数组中查找特定元素的索引,如果找到返回该元素的索引,如果未找到返回-1。
答案:```cint findElement(int arr[], int size, int element) {for (int i = 0; i < size; i++) {if (arr[i] == element) {return i;}return -1;}```问题4:数组的排序题目:使用冒泡排序算法对整数数组进行排序。
答案:```cvoid bubbleSort(int arr[], int size) {for (int i = 0; i < size - 1; i++) {for (int j = 0; j < size - i - 1; j++) {if (arr[j] > arr[j + 1]) {int temp = arr[j];arr[j] = arr[j + 1];arr[j + 1] = temp;}}}}```问题5:数组的动态扩展题目:编写一个函数,实现对数组的动态扩展,使其能够存储更多的答案:```cvoid dynamicArrayExpansion(int *arr, int *size, int capacity, int newElement) {if (*size >= capacity) {int newCapacity = capacity * 2;int *newArr = (int *)malloc(newCapacity *sizeof(int));for (int i = 0; i < *size; i++) {newArr[i] = arr[i];}free(arr);arr = newArr;capacity = newCapacity;}arr[(*size)++] = newElement;}```结束语:这些练习题涵盖了数组的基本操作、查找、排序和动态扩展等常见问题,希望能够帮助您更好地理解和掌握数组的使用。
数据结构-C语言-第四章作业
数据结构
练习
数据结构
设有一个二维数组A[m][n]按行优先顺序存储,假设A[0][0] 存放位置在644(10),A[2][2]存放位置在676(10),每个元素 占一个空间,问A[3][3](10)存放在什么位置?脚注(10)表示 用10进制表示。
答:设数组元素A[i][j]存放在起始地址为Loc ( i, j ) 的存储单 元中
Байду номын сангаас
练习
数据结构
设有二维数组A[10,20],其每个元素占两个字节, A[0][0]存储地址为100,若按行优先顺序存储,则 元素A[6,6]的存储地址为 352 ,按列优先顺序存储 ,元素A[6,6]的存储地址为 232 。
答:(6*20+6)*2+100=352 (6*10+6)*2+100=232
练习
数据结构
1、 设有二维数组a[6][8],每个元素占相邻的4个字节,存储 器按字节编址,已知a的起始地址是1000,试计算:
数组a的最后一个元素a[5][7]起始地址; 按行序优先时,元素a[4][6]起始地址; 按列序优先时,元素a[4][6]起始地址。
课本作业
4.5 4.8 4.10
∵ Loc ( 2, 2 ) = Loc ( 0, 0 ) + 2 * n + 2 = 644 + 2 * n + 2 = 676.
∴ n = ( 676 - 2 - 644 ) / 2 = 15
∴ Loc ( 3, 3 ) = Loc ( 0, 0 ) + 3 * 15 + 3 = 644 + 45 + 3 = 692.
《数据结构及其应用》笔记含答案 第四章_串、数组和广义表
第4章串、数组和广义表一、填空题1、零个或多个字符组成的有限序列称为串。
二、判断题1、稀疏矩阵压缩存储后,必会失去随机存取功能。
(√)2、数组是线性结构的一种推广,因此与线性表一样,可以对它进行插入,删除等操作。
(╳)3、若采用三元组存储稀疏矩阵,把每个元素的行下标和列下标互换,就完成了对该矩阵的转置运算。
(╳)4、若一个广义表的表头为空表,则此广义表亦为空表。
(╳)5、所谓取广义表的表尾就是返回广义表中最后一个元素。
(╳)三、单项选择题1、串是一种特殊的线性表,其特殊性体现在(B)。
A.可以顺序存储B.数据元素是一个字符C.可以链式存储D.数据元素可以是多个字符若2、串下面关于串的的叙述中,(B)是不正确的?A.串是字符的有限序列B.空串是由空格构成的串C.模式匹配是串的一种重要运算D.串既可以采用顺序存储,也可以采用链式存储解释:空格常常是串的字符集合中的一个元素,有一个或多个空格组成的串成为空格串,零个字符的串成为空串,其长度为零。
3、串“ababaaababaa”的next数组为(C)。
A.012345678999 B.012121111212 C.011234223456 D.01230123223454、串“ababaabab”的nextval为(A)。
A.010104101B.010102101 C.010100011 D.0101010115、串的长度是指(B)。
A.串中所含不同字母的个数B.串中所含字符的个数C.串中所含不同字符的个数D.串中所含非空格字符的个数解释:串中字符的数目称为串的长度。
6、假设以行序为主序存储二维数组A=array[1..100,1..100],设每个数据元素占2个存储单元,基地址为10,则LOC[5,5]=(B)。
A.808 B.818 C.1010 D.1020解释:以行序为主,则LOC[5,5]=[(5-1)*100+(5-1)]*2+10=818。
第4章串与数组习题解析(答)
第4章串与数组习题解析(答)习题四串与数组一、选择题1、设有两个串p和q,求q和p中首次出现的位置的运算称作。
A、连接B、求子串C、模式匹配D、求串长2、若串S=’good student’,其子串的数目是。
A、12B、79C、78D、133、串是一种特殊的线性表,其特殊性体现在。
A、可以顺序存储B、数据元素是一个字符C、可以链接存储D、数据元素可以是多个字符4、串是任意有限个。
A、符号构成的集合B、符号构成的序列C、字符构成的集合D、字符构成的序列5、已知模式串T=’abcdabcd’,则其next数组值为。
A、00123412B、01111234C、01232412D、112134126、数组SZ[-3..50,0..10]含有元素数目为。
A、88B、99C、80D、907、稀疏矩阵一般的压缩存储方法有两种。
A、二维数组和三维数组B、三元组和散列表C、三元组和十字链表D、散列表和十字链表8、一个nⅹn的对称矩阵,如果以行或列为主序放入内存,则其容量为。
A、nⅹnB、nⅹn/2C、(n+1)ⅹ n/2D、(n+1)ⅹ(n+1)/29、对数组经常进行的两种基本操作是。
A、建立与删除B、索引与修改C、查找与修改D、查找与索引10、二维数组A[10..20,5..10]采用行序为主序方式存储,每个数据元素占4个存储单元,且A[10,5]的存储地址是1000,则A[18,9]的地址是。
A、1208B、1212C、1368D、1364二、填空题1、两个字符串相等的充分必要条件是长度相等且对应位置上字符相同。
2、字符在串中的位置,即是字符在该序列中的序号。
3、串是指含n个字符的有限序列且n>=0 。
4、设有串S1=’I an a student’,S2=’st’,其index(S1,S2)= 8 。
5、含零个字符的串称为空串,用Φ表示;其他串称为非空串。
任何串中所含的字符的个数称为该串的长度。
6、一个串中任意个连续字符组成的子序列称为该串的子串,该串称为它的所有子串的主串。
串与数组的练习题
串与数组的练习题一、填空题 1. 称为空白串。
2. 设S=“A;/document/Mary.doc”,则的字符定位的位置为4. 子串的定位运算称为串的模式匹配;称为模式。
5. 设目标T=”abccdcdccbaa”,模式P=“cdcc”,则第6. 若n为主串长,m为子串长,则串的古典匹配算法最坏的情况下需要比较字符的总次数为。
7. 假设有二维数组A6×8,每个元素用相邻的6个字节存储,存储器按字节编址。
已知A的起始存储位置为1000,则数组A的体积为8B;末尾元素A57的第一个字节地址为;若按行存储时,元素A14的第一个字节地址为×6+1000=107;若按列存储时,元素A47的第一个字节地址为×6+1000)=127 。
8. 设数组a[1?60, 1?70]的基地址为2048,每个元素占2个存储单元,若以列序为主序顺序存储,则元素a[32,58]的存储地址为答:不考虑0行0列,利用列优先公式:LOC=LOC+[*+i-c1)]*L 得:LOC=2048+[*+32-1]]*2=89509. 三元素组表中的每个结点对应于稀疏矩阵的一个非零元素,它包含有三个数据项,分别表示该元素的行下标、列下标和元素值。
10.求下列广义表操作的结果:GetHead===;//头元素不必加括号GetHead】=== ; GetHead】】===b; GetTail】】===;二、单选题1. 串是一种特殊的线性表,其特殊性体现在:A.可以顺序存储B.数据元素是一个字符C.可以链式存储D.数据元素可以是多个字符2. 设有两个串p和q,求q在p中首次出现的位置的运算称作:A.连接B.模式匹配C.求子串D.求串长3. 设串s1=’ABCDEFG’,s2=’PQRST’,函数con返回x和y串的连接串,subs返回串s的从序号i开始的j个字符组成的子串,len返回串s的长度,则con), subs,))的结果串是:A.BCDEF B.BCDEFG C.BCPQRST D.BCDEFEF解:con返回x和y串的连接串,即con=‘ABCDEFGPQRST’; subs返回串s的从序号i开始的j个字符组成的子串,则subs)=subs=’ BCDEF’; subs,)=subs=’ EF’;所以con), subs,))=con之连接,即BCDEFEF4.假设有60行70列的二维数组a[1?60, 1?70]以列序为主序顺序存储,其基地址为10000,每个元素占2个存储单元,那么第32行第58列的元素a[32,58]的存储地址为。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
一填空题1)数组的元素通过索引来访问,数组Array的长度为Array.length 。
2)数组复制时,"="将一个数组的引用传递给另一个数组。
3)没有显式引用变量的数组称为匿名数组。
4)JVM将数组存储在堆(堆或栈)中。
5)数组的二分查找法运用的前提条件是数组已经。
6)矩阵或表格一般用二维数组表示。
7)如果把二维数组看成一维数组,那么数组的元素是一维数组。
8)Java中数组的下标的数据类型是int 。
9)不用下标变量就可以访问数组的方法是foreach循环。
10)数组最小的下标是0 。
11)arraycopy()的最后一个参数指明长度。
12)向方法传递数组参数时,传递的是数组的引用。
13)线性查找法的平均查找长度为。
14)数组初始化包括数组的声明,创建和初始化。
15)数组下标访问超出索引范围时抛出数组索引超出绑定异常16)浮点型数组的默认值是0.0 f 。
17)对象型数组的默认值是null 。
18)对象类型的数组虽然被默认初始化,但是并没有调用构造函数。
19)二维数组的行的长度可以不同。
20)数组创建后其大小不能改变。
二选择题1.下面错误的初始化语句是__D_A. char str[]="hello";B. char str[100]="hello";C. char str[]={'h','e','l','l','o'};D. char str[]={'hello'};2.定义了一维int型数组a[10]后,下面错误的引用是_B__A. a[0]=1;B. a[10]=2;C. a[0]=5*2;D. a[1]=a[2]*a[0];3.下面的二维数组初始化语句中,正确的是_B___A. float b[2][2]={0.1,0.2,0.3,0.4};B. int a[][]={{1,2},{3,4}};C. int a[2][]= {{1,2},{3,4}};D. float a[2][2]={0};4.引用数组元素时,数组下标可以是_D___A. 整型常量B. 整型变量C. 整型表达式D. 以上均可5.定义了int型二维数组a[6][7]后,数组元素a[3][4]前的数组元素个数为__B__A. 24B. 25C. 18D. 176.下列初始化字符数组的语句中,正确的是_C___A. char str[5]="hello";B. char str[]={'h','e','l','l','o','\0'};C. char str[5]={"hi"};D. char str[100]="";7.数组在Java中储存在 C 中A. 栈B. 队列C. 堆D. 链表8.下面程序的运行结果是_B___main() {int a[][]={{1,2,3},{4,5,6}};System.out.printf("%d", a[1][1]);}A. 3B. 4C. 5D. 69.下面程序的运行结果是__C__main() {int x=30;int[] numbers=new int[x];x=60;System.out.println(numbers.length);}A. 60B. 20C. 30D. 5010.下面程序的运行结果是____main() {char s1[20]="ABCDEF".toCharArray();int i=0;while(s1[i++]!='\0')System.out.println(s1[i++]);}A. ABCDEFB. BDFC. ABCDED. BCDE11.下面不是创建数组的正确语句CA.float f[][]=new float[6][6];B.float f[]=new float[6];C.float f[][]=new float[][6];D.float [][]f=new float[6][];12.下面不是数组复制方法的是()CA. 用循环语句逐个复制数组B. 用方法arraycopyC. 用"="进行复制D. 用clone方法13.数组a的第三个元素表示为DA. a(3)B. a[3]C.a(2)D. a[2]14.当访问无效的数组下标时,会发生BA. 中止程序B. 抛出异常C. 系统崩溃D. 直接跳过15.使用arraycopy()方法将数组a复制到b正确的是AA. arraycopy(a,0,b,0,a.length)B. arraycopy(a,0,b,0,b.length)C.. arraycopy(b,0,a,0,a.length)D. arraycopy(a,1,b,1,a.length)16.关于数组默认值,错误的是BA. char--'"u0000'B. Boolean--trueC. float--0.0fD. int-- 017.关于数组作为方法的参数时,向方法传递的是AA. 数组的引用B. 数组的栈地址C. 数组自身D. 数组的元素18.关于数组复制,下列说法错误的是CA. "="可以实现数组复制B. 运用循环语句进行数组复制必须两个数组长度相同C. arraycopy()方法没有给目标数组分配内存空间D. 数组复制是数组引用的传递19.下列语句会造成数组new int[10]越界是DA. a[0] += 9;B. a[9]=10;C. —a[9]D. for(int i=0;i<=10;i++) a[i]++;20.在Java中,下面关于构造函数的描述正确的是( D )A. 类必须有显式构造函数B. 它的返回类型是voidC. 它和类有相同的名称,但它不能带任何参数D. 以上皆非21.在Java中,关于final关键字的说法正确的是( )A.如果修饰变量,则一旦赋了值,就等同一个常量B.如果修饰类,则该类只能被一个子类继承C.如果修饰方法,则该方法能在子类中被覆盖D.如果修饰方法,则该方法所在的类不能被继承22.在JDK环境下编译JAVA源程序使用的命令是(A )A.javaB.javacC.jvmD.tomcat23.假设现在有一个类,名称为ceshi,现在要声明和创建一个ceshi类型的对象变量ceshiA,则下述正确的是( D )A. ceshi ceshiA;B. ceshi ceshia=new ceshi;C. ceshi ceshiA=new ceshi;D. ceshi ceshiA=new ceshi()24.下列关于关键字this和super的说法正确的是( C )A. this是调用父类的方法和变量B. super是调用本类中的方法C. super是调用父类的方法和变量D. 没有区别25.下列关于构造方法的说法正确的是( A )A. 构造方法必须是和类的名称相同B. 每一个类都必须显示声明自己的构造方法C. 构造方法不能进行重载D. 子类不能使用父类的构造方法26.main方法是java Application 程序执行的入口点。
关于main方法放入方法以下合法的是( B )A. public static void main();B. public static void main(String[]args)C. public static int main(String[] arg)D. public void main(String arg[])27.如定义对象StringBuffer ch = new StringBuffer("Shanghai") 则ch.length()=( B )A. 7 B.8 C.9 D.2328.执行完代码"int[] x=new int[25];"后以下( A )说明正确的A. x[24]为0B. x[24]未定义C. x[25]为0D. x[0]为空29.关于数组排序方法,错误的是A. 选择排序B. 插入排序C. 二分排序D. 用arrays.sort( )排序30.关于char类型的数组,说法正确的是A. 其数组的默认值是'A'B. 可以仅通过数组名来访问数组C. 数组不能转换为字符串D. 可以存储整型数值31.对于数组a[10],下列表示错误的是BA. a[0]B. a(0)C. a[9]D. a[1]32.下列数组声明,下列表示错误的是DA. int[] aB. int a[]C. int[][] aD. int[]a[]三、是非题1.下标用于指出数组中某个元素位置的数字。
( T )2.把数组中元素按某种顺序排列的过程叫做查找。
( F )3.确定数组中是否含有某个关键字的过程叫做排序。
( T )4.一个数组可以存放许多不同类型的数值。
( F )5.数组的下标通常是float型。
( F )6.数组的某个元素被传递给一个方法并被该方法修改,当被调用方法执行完毕时,这个元素中含有修改过的数值。
( )7.数组可以声明为任何数据类型。
( T )8.数组由具有一名字和相同类型的一组连续内存单元构成。
( T )9.在数组声明中可以用等号及一个逗号分隔的初始值表初始化数组元素,该数组大小只能由用户来决定。
( )10.将一个数组传递给一个方法,必须加在数组名后加方括号。
( T )11.Java语言中的数组元素下标总是从0开始,下标可以是整数或整型表达式。
( T )12.下面这条语句正确吗?( T )double[] myList;myList = {1.9, 2.9, 3.5, 4.6};13. Java中数组的元素可以是简单数据类型的量,也可以是某一类的对象。
( T )14. 数组中有length()这个方法,如array.length()表示数组array中元素的个数( T )15.下面这条语句正确吗?( T )int t[3][2] = {{1,2},{3,4},{5,6}};16.数组声明后其大小固定。
( T )17.设有整型数组的定义:int A.[]=new int[8]; ,则a.length的值为7。
( T )18. 数组一旦创建,其大小不能再改变。
( F )19.用任何方式创建数组时,都必须指定数组的长度。