第5章数组测试题

合集下载

第5章《数组》复习题

第5章《数组》复习题

第5章数组一、选择题1、下列关于数组的描述正确是:()A) 数组的长度是固定的,而其中元素的数据类型可以不同B) 数组的长度是固定的,而其中元素的数据类型必须相同C) 数组的长度是可变的,而其中元素的数据类型可以不同D) 数组的长度是可变的,而其中元素的数据类型必须相同2、在C++语言中引用数组元素时,下面关于数组下标数据类型的说法错误的是:()A) 整型常量 B) 整型表达式C) 整型常量或整型表达式 D) 任何类型的表达式3、要定义数组A,使得其中每个元素的数据分别依次为:3、9、4、8、0、0、0,错误的定义语句是:()A) int A[]={3,9,4,8,0,0,0}; B) int A[9]={3,9,4,8,0,0,0};C) int A[]={3,9,4,8}; D) int A[8]={3,9,4,8};4、有如下数组声明:int value[30];,下标值引用错误的是:()A) value[30] B) value[0] C) value[10] D) value[20]5、以下叙述中错误的是:()A)对于double类型数组,不可以直接用数组名对数组进行整体输入或输出B)数组名代表的是数组所占存储区的首地址,其值不可改变C)当程序执行中,数组元素的下标超出所定义的下标范围时,系统自动扩展数组长度D)可以通过赋初值的方式确定数组元素的个数6、在C++语言中,一维数组的定义方法为:()。

类型说明符数组名A)[常量表达式] B)[整型常量] C)[整型变量] D)[整型常量]或[整型表达式]7、对以下说明语句的正确理解是()。

int a[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)因为数组长度与初值的个数不相同,所以此语句不正确8、假定short类型变量占用两个字节,其有定义:short x[10]={0,2,4};,则数组x在内存中所占字节数是()。

C语言第五章习题带答案

C语言第五章习题带答案

练习5-1答案一、选择题1.合法的数组说明语句是( B )。

A.int a[]="string"; B.int a[]={0,1,2,3,4,5};C.char a="string"; D.char a[5]={'0', '1', '2', '3', '4', '5'};2.以下对一维整型数组a的说明正确的选项是( D )。

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[10]=(0, 0, 0, 0, 0); B.int a[10]={};C.int a[]={0}; D.int a[2]={10, 9, 8};5.对以下说明语句的正确理解是( B )。

int a[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.因为数组长度与初值的个数不相同,所以此语句不正确二、填空题6.求所有不超过200的N值,N的平方是具有对称性质的回文数。

所谓回文数就是将一个数从左到右与从右到左读都是一样的,例如:34543和1234321都是回文数。

例如:满足题意要求的数有:N=1,11*11=121;N=111,111*111=12321。

#include <stdio.h>main(){int m[16], n, i, t, count=0;long a, k;printf("Result is:\n");for (n=10; n<200; n++){ k=0;t=1;a=n*n;for (i=1; a!=0; i++){ ①;a/=10;}for (; i>1; i--){ k+=m[i-1]*t;②;}if ( ③ ) printf("%2d:%10d %10d\n", ++count, n, n*n);}}那么①为( m[i]=a%10; )、②为( t*=10; )、③为( k==n*n )。

第五章 数组和广义表

第五章 数组和广义表

第五章数组和广义表一.选择题1.在二维数组A 中引用A[i,j]的时间_________。

A.与i、j的大小有关B.与i、j的大小无关C.与i的大小有关,与j的大小无关D.与i的大小无关,与j的大小有关2.在稀疏矩阵的带行指针向量的链接存储中,每一行单链表中的结点都具有相同的________。

A.行号 B.列号 C.元素值 D.地址3.二维数组A 按行顺序存储,其中每个元素占1个存储单元。

若 A[1][1]的存储地址为420, A[3][3]的存储地址为446,则A[5][5]的存储地址为_______。

A.470 B.471 C.472 D. 4734.在稀疏矩阵的十字链接存储中,每个列单链表中的结点都具有相同的_____。

A.行号 B.列号 C.元素值 D.地址5.下面的说法中,不正确的是________。

A.对称矩阵中只须存放包括主对角线元素在内的下(或上)三角部分的元素即可B.对角矩阵中只须存放的非零元素即可C.稀疏矩阵中值为零的元素较多,因此可以采用三元组表方法存储D.稀疏矩阵中大量值为零的元素分布有规律,因此可以采用三元组表方法存储6.对一些特殊矩阵采用压缩存储的目的主要是为了________。

A.表达变得简单 B.对矩阵元素的存取变得简单C.去掉矩阵中的多余元素 D.减少不必要的存储空间的开销7.若将n 阶对称矩阵 A 按照行序为主序方式将包括主对角线元素在内的下三角形的所有元素依次存放在一个一维数组 B 中,则该对称矩阵在 B 中占用了________个数组元素。

A.n2 B.n*(n-1) C.n*(n+1)/2 D.n*(n-1)8. 稀疏矩阵的三元组顺序表表示的一个三元组中不包括________。

A. 行号B.列号C.元素值D.元素总数9.稀疏矩阵一般的压缩存储方法有两种,即________。

A.二维数组和三维数组 B.三元组和散列C. 三元组和十字链表 D.散列和十字链表10.有一个 10 阶对称矩阵 A,采用压缩存储方式(以行序为主存储,且A[0 Ⅱ0]=1),则A[8][5]的地址是________。

数据结构(c语言版)第五章答案

数据结构(c语言版)第五章答案

第五章1、设二维数组A【8】【10】是一个按行优先顺序存储在内存中的数组,已知A【0】【0】的起始存储位置为1000,每个数组元素占用4个存储单元,求:(1)A【4】【5】的起始存储位置。

A【4】【5】的起始存储位置为1000+(10*4+5)*4=1180;(2)起始存储位置为1184的数组元素的下标。

起始存储位置为1184的数组元素的下标为4(行下标)、6(列下标)。

2、画出下列广义表D=((c),(e),(a,(b,c,d)))的图形表示和它们的存储表示。

略,参考第5·2节应用题第5题分析与解答。

3、已知A为稀疏矩阵,试从时间和空间角度比较采用两种不同的存储结构(二维数组和三元组表)实现求∑a(i,j)运算的优缺点。

稀疏矩阵A采用二维数组存储时,需要n*n个存储单元,完成求∑ii a(1≤i≤n)时,由于a【i】【i】随机存取,速度快。

但采用三元组表时,若非零元素个数为t,需3t+3个存储单元(t个分量存各非零元素的行值、列值、元素值),同时还需要三个存储单元存储存稀疏矩阵A的行数、列数和非零元素个数,比二维数组节省存储单元;但在求∑ii a(1≤i≤n)时,要扫描整个三元组表,以便找到行列值相等的非零元素求和,其时间性能比采用二维数组时差。

4、利用三元组存储任意稀疏数组时,在什么条件下才能节省存储空间?当m行n列稀疏矩阵中非零元素个数为t,当满足关系3*t<m*n时,利用三元组存储稀疏数组时,才能节省存储空间。

5、求下列各广义表的操作结果。

(1)GetHead((a,(b,c),d))GetHead((a,(b,c),d))=a(2)GetTail((a,(b,c),d))GetTail((a,(b,c),d))=((b,c),d)(3)GetHead(GetTail((a,(b,c),d)))GetHead(GetTail((a,(b,c),d)))=(b,c)(4)GetTail(GetHead((a,(b,c),d)))GetTail(GetHead((a,(b,c),d)))=()第六章1、已知一棵树边的集合为{(i,m),(i,n),(e,i),(b,e),(b,d),(a,b),(g,j),(g,k),(c,g),(c,f),(h,l),(c,h),(a,c)}用树形表示法画出此树,并回答下列问题:(1)哪个是根结点?(2)哪些是叶结点?(3)哪个是g的双亲?(4)哪些是g的祖先?(5)哪些是g的孩子?(6)哪些是e的子孙?(7)哪些是e的兄弟?哪些是f的兄弟?(8)结点b和n的层次号分别是什么?(9)树的深度是多少?(10)以结点c为根的子树的深度是多少?(11)树的度数是多少?略。

C语言题库第5章 数组√

C语言题库第5章 数组√

第五章数组一、单项选择1.若要定义一个具有5个元素的整型数组,以下错误的定义语句是( C)2.下列选项中,能正确定义数组的语句是( D)3.下面是有关C语言字符数组的描述,其中错误的是( D)4.有以下程序,程序运行时若输入:how are you? I am fine<回车>则输出结果是( C)#include<stdio.h>int main(){ char a[30],b[30];scanf("%s",a);gets(b);printf("%s\n %s\n",a,b);return 0;}5.以下选项中正确的语句组是( D)6.若有定义语句:int m[]={5,4,3,2,1},i=4;则下面对m数组元素的引用中错误的是( A )7.以下数组定义中错误的是( A)8.下列选项中,能够满足"若字符串s1等于字符串s2,则执行ST"要求的是 ( A )9.有以下程序,程序运行后的输出结果是( C)#include <stdio.h>#include <string.h>int main(){char x[]="STRING";x[0]='0';x[1]='\0';x[2]=0;printf("%d %d\n",sizeof(x),strlen(x));return 0;10.有以下程序,程序运行后的输出结果是( B )#include <stdio.h>#include <string.h>int main(){char a[20]=”ABCD\0EFG\0”,b[]=”IJK”;strcat(a,b); printf(“%s\n”,a);return 0;二、程序设计1./* 编写程序,实现矩阵(3行3列)的转置(即行列互换)。

数据结构第五章习题答案

数据结构第五章习题答案

1.二维数组A行下标i的范围从1到12,列下标j的范围从3到10,采用行序为主序存储,每个数据存储元素占用4个存储单元,该数组的首地址(既A[1][3]的地址)为1200,则A[6][5]的地址为(D)A.1400B.1404C.1372D.13682.有一个M*N的矩阵A,若采用行序为主序进行顺序存储,每个元素占用8个字节,则A ij (1≤i≤M,1≤i≤N)元素的相对字节地址(相对首元素地址而言)为(B)A.((i-1)*N+j)*8B.((i-1)*N+j-1)*8C.(i*N+j-1)*8D.((i-1)*N+j+1)*83.稀疏矩阵一般的压缩存储方法有两种,即(D)A.二维数组和三维数组B.三元组和散列C.散列和十字链表D.三元组和十字链表4.若采用三元组压缩技术存储稀疏矩阵,只要把每个元素的行下标和列下标互换,就完成了对该矩阵的转置运算,这种观点(B)A.正确B.错误5.广义表((a,b),c,d)的表头是(C),表尾是(D)。

A.aB.bC.(a,b)D.(c,d)6.一个广义表的表头总是广义表,这个断言是(B)A.正确B.错误7.二维数组A[10][20]采用列序为主方式存储,每个元素占一个存储单元,并且A[0][0]的存储地址是200,则A[6][12]的地址是(326)8.有一个10阶对称矩阵A,采用压缩存储方式(以行序为主存储,且A[0][0]=1),则A[4][3]的地址是(14)9.一个广义表为(a,(a,b),d,e,((i,j),k)),则该广义表的长度为(5),深度为(3)10.广义表((a),((b),c),(((d))))的表头是((a)),表尾是((((b),c),(((d)))))11.已知广义表A=((a,b,c),(d,e,f)),则广义表运算head(tail(tail(A)))=(e)12.已知广义表GL=(a,(b,c,d),e),运用head和tail函数取出GL中的原子b的运算是(head(head(tail(GL))))13.特殊矩阵和压缩矩阵哪一种压缩存储后会失去随机存取的功能?为什么?答:稀疏矩阵在进行压缩存储后会失去随机存取的功能,因为非零元素的位置没有办法确定。

数据库系统l试题库及答案 第5章数组和广义表

数据库系统l试题库及答案 第5章数组和广义表

第5章 数组和广义表5.1数组一、填空题1. 假设有二维数组A 6×8,每个元素用相邻的6个字节存储,存储器按字节编址。

已知A 的起始存储位置(基地址)为1000,则数组A 的体积(存储量)为 ;末尾元素A 57的第一个字节地址为 。

2. 三元组表中的每个结点对应于稀疏矩阵的一个非零元素,它包含有三个数据项,分别表示该元素的 、 和 。

3. 设数组a[1…60, 1…70]的基地址为2048,每个元素占2个存储单元,若以列序为主序顺序存储,则元素a[32,58]的存储地址为 。

4. 设n 行n 列的下三角矩阵A 已压缩到一维数组B[1..n*(n+1)/2]中,若按行为主序存储,则A[i,j]对应的B 中存储位置为 。

5. 设有一个10阶对称矩阵A 采用压缩存储方式(以行为主序存储:a 11=1),则a 85 的地址为 。

6. 设下三角矩阵A 如果按行序为主序将下三角元素A i j (i ≤j)存储在一个一维数组B[1..n(n+1)/2]中,对任一个三角矩阵元素A ij ,它在数组B 中的下标为 。

二、选择题1. ( )假设有60行70列的二维数组a[1…60, 1…70]以列序为主序顺序存储,其基地址为10000,每个元素占2个存储单元,那么第32行第58列的元素a[32,58]的存储地址为 。

A .16902B .16904C .14454D .答案A, B, C 均不对 2. ( )对特殊矩阵采用压缩存储的目的主要是为了 。

A .表达变得简单B .对矩阵元素的存取变得简单C .去掉矩阵中多余元素D .减少不必要的存储空间3. ( )对于n 阶对称矩阵,如果以行序或列序放入内存中,则需要 个存储单元。

A .n(n+1)/2B .n(n-1)/2C . n 2D .n 2/24. 有一个100*90的稀疏矩阵,非0元素有10个,设每个整型数占2字节,则用三元组表示该矩阵时,所需的字节数是 。

数据结构第五章数组习题

数据结构第五章数组习题

第五章数组习题1、假设以行序为主序存储二维数组A=array[1..100,1..100],设每个数据元素占2个存储单元,基地址为10,则LOC[5,5]=()。

A、808B、818C、1010D、10202、数组A[0..5,0..6]的每个元素占五个字节,将其按列优先次序存储在起始地址为1000的内存单元中,则元素A[5,5]的地址是( )。

A、1175B、1180C、1205D、12103、若对n阶对称矩阵A以行序为主序方式将其下三角形的元素(包括主对角线上所有元素)依次存放于一维数组B[1..(n(n+1))/2]中,则在B中确定a ij(i<j)的位置k的关系为( )。

A、i*(i-1)/2+jB、j*(j-1)/2+iC、i*(i+1)/2+jD、j*(j+1)/2+i4、对稀疏矩阵进行压缩存储目的是()。

A、便于进行矩阵运算B、便于输入和输出C、节省存储空间D、降低运算的时间复杂度5、已知广义表L=((x,y,z), a, (u,t,w)),从L表中取出原子项t的运算是()。

A、head(tail(tail(L)))B、tail(head(head(tail(L))))C、head(tail(head(tail(L))))D、head(tail(head(tail(tail(L)))))6、已知广义表LS=((a,b,c),(d,e,f)),运用head和tail函数取出LS中原子e的运算是( )。

A、head(tail(LS))B、tail(head(LS))C、head(tail(head(tail(LS)))D、head(tail(tail(head(LS))))7、多维数组之所以有行优先顺序和列优先顺序两种存储方式是因为()。

A、数组的元素处在行和列两个关系中B、数组的元素必须从左到右顺序排列C、数组的元素之间存在次序关系D、数组是多维结构,内存是一维结构8、二维数组M[0..7,0..9]的元素是由4个字符组成的串(每个字符占用1个存储单元),存放M需要存储单元数为()。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

第5章数组测试题一、选择题1.如下数组声明语句,( )正确。

A .Dim a[3,4] As IntegerB .Dim a(3,4) As IntegetC .Dim a(n,n) As IntegerD .Dim a(3 4) As Integer2.要分配存放如下矩阵的数据,( )数组声明语句能实现(不能浪费空间)。

⎥⎥⎥⎦⎤⎢⎢⎢⎣⎡9.98.87.76.65.54.43.32.21.1 A .Dim a(9) As Integer B .Dim a(3,3) As SingleC .Dim a(-1 to 1,-5 to -3) As SingleD .Dim a(-3 to -1,5 to 7) As Integer3.如下数组声明语句,则数组a 包含元素的个数有( )。

Dim a(3,-2 to 2,5)A .120B .75C .60D .134.以下程序的输出结果是( )。

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 .49B .0C .不确定D .程序出错5.下列语句中(假定变量n 有值),能正确声明可调数组的是( )。

A .Dim a( ) As IntegerB .Dim a( ) As Integer ReDim a(n) ReDim a(n) As IntegerC .Dim a( ) As IntergerD .Dim a(10) As Integer ReDim a(3,4) ReDim a(n+10)ReDim Preserve a(4,4)6.在窗体的通用声明段自定义了数据类型Students ,下列( )定义方式是正确的。

A .Private Type StudentsB .Type StudentsName As String*10 Name As String*10 Studno As Integer Studno As Integer End Type End StudentsC .Type StudentsD .Type StudentsName String*10 Name As String*10 Studno Integer Studno As Integer End Type End Type7.以下程序的输出结果是( )。

Option Base 1Private Sub Command1_Click()Dim a, b(3, 3)a = Array(1, 2, 3, 4, 5, 6, 7, 8, 9)For i = 1 To 3For j = 1 To 3b(i, j) = a(i * j)If (j >= i) Then Print Tab(j * 3); Format(b(i, j), "###");Next jPrintNext iEnd SubA .1 2 3B .1C .1 4 7D .1 2 3 4 5 6 4 5 2 4 6 4 6 7 8 9 7 8 9 3 6 9 9二、填空题1.数组声明时下标下界默认为0,利用 (1) 语句可以使下标为1。

2.由Array 函数建立的数组,其变量必须是 (2) 类型。

3.要获得数组的上界通过 (3) 函数,要获得列表框List 数组的元素总个数通过 (4) 属性。

4.若定义一维数组为:Dim a(N to M),则该数组的元素个数为 (5) 个。

5.随机产生6位学生的分数(分数范围1-100),存放在数组a 中,以每2分一个“*”显示,如图1所示。

Private Sub Command1_Click()For i = 1 To 6a(i) = (6)Print (7)Next iEnd Sub6.在一维数组中利用移位的方法显示如图2所示结果。

Private Sub Form_Click()Dim a(1 To 7) For i = 1 To 7a(i) = i: Print a(i);Next iPrintFor i = 1 To 7t = (8) '最右1位暂存For j = 6 To 1 Step -1(9) '其余6个向右移一位Next j 图1 随机分数运行界面图2 第6题运行界面(10) '暂存的放入最左For j = 1 To 7Print a(j);Next jPrintNext iEnd Sub7.下面程序对已知数组a,删除数组元素中某个元素。

Private Sub Command1_Click()Dim a(), key%, i%, j%a = Array(1, 6, 8, 3, 5, 9, 10, 2, 7, 4)key = Val(InputBox("输入要删除的值"))For i = 0 To UBound(a)If (11) ThenFor j = i + 1 To UBound(a)(12)Next jReDim (13)MsgBox ("删除完成")Exit SubEnd IfNext iMsgBox ("找不到要删除的元素")End Sub8.下列程序表示将输入的一个数插入到按递减的有序数列中,插入后使该序列仍然有序。

Private Sub Form_Click()Dim a, i%, n%, m%a = Array(19, 17, 15, 13, 11, 9, 7, 5, 3, 1)n = UBound(a)ReDim (14)m = Val(InputBox("输入欲插入的数"))For i = UBound(a) - 1 To 0 Step -1If (m >= a(i)) Then(15)If i = 0 Then a(i) = mElse(16)Exit ForEnd IfNext iFor i = 0 To UBound(a)Print a(i);Next iEnd Sub9.下列程序在1000-9999之间查找满足如下条件的整数:该整数,逆向得到的另一个4位数是它自身的倍数(2倍以上)。

查找结果和逆向排列分别显示在对应的列表框,如图3所示。

Private Sub Command1_Click()Dim a As IntegerDim m As IntegerDim i As IntegerFor i = 1000 To 9999m = 0(17)Do While n > 0m = (18) + n Mod 10n = n \ 10LoopIf (19) And m \ i > 1 Then List1.AddItem iList2.AddItem (20)End IfNext iEnd Sub10.下列程序完成如下功能:随机产生n(10-30)个大写字母,并显示。

将这n 个字母按产生的顺序逆时针排列成一个圆环,按逆时针方向统计相邻两个字母满足升序的次数(如图4所示)。

并输出符合条件的每对字符和统计结果。

Private Sub Form_Click()Dim a() As String, count As Integer, i As Integer, n As IntegerRandomizeForm1.Clsn = Int(Rnd * 20) + 10(21)图3 第9题运行界面 图4 第10题的示意图和运行界面ClsPrint "产生的字符:"For i = 1 To ns = (22) '产生大写字母a(i) = sPrint s; " ";Next iPrintPrint "统计结果:"count = 0For i = 2 To nIf (23) Thencount = count + 1Print Space(3); a(i - 1); " "; a(i)End IfNext iIf (24) Thencount = count + 1Print Space(3); a(n); " "; a(1)End IfPrintPrint "符合条件的字符有:" ; (25)End Sub11.本程序随机产生n(15)个A~J的大写字母,按字母降序排序后,将连续出现的字母用压缩形式显示。

例如,连续5个H字母显示为5*H,如图5所示。

数组a( )用于存放随机产生的字母。

Private Sub Form_Click()Const N = 15 Array Dim a(1 To N) As String * 1, cDim count%, i%, j%, k%RandomizeFor i = 1 To Na(i) = Chr(Int( (26) ))Print a(i);Next iPrint图5 第11题的运行界面For i = 1 To N - 1 '选择法排序k = iFor j = (27)If a(j) > a(k) Then (28)Next jc = a(i): a(i) = a(k): a(k) = cNext iFor i = 1 To N '输出排序结果Print a(i); " ";Next iPrinti = 1Do While i <= Ncount = 1If i < N Then j = i + 1Do While a(i) = a(j)count = (29)If j < N Then j = j + 1 Else Exit DoLoopIf count = 1 Then Print a(i); " "; Else Print count; "*"; a(i); " ";i = (30)LoopEnd Sub。

相关文档
最新文档