数组章节练习题
第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在内存中所占字节数是()。
数组练习题——精选推荐

第六章数组一、填空1、执行语句:int a[10];可以给a数组分配_______个字节的存储空间。
2、在c语言中,二维数组元素在内存中是按存放的;若有定义:double x[3][5];则x 数组中行下标的下限是;列下标的上限是。
3、若有定义:int a[2][3]={2,4,6,8};则a[1][0]的值是。
4、如果要将一个字符型数组中的字符串拷贝到另一个字符型数组中,应使用的函数是_______。
5、设有n行m列的数组a,假设数组的首地址是从0开始的,则a[i][j]的地址是____。
6、假设定义数组int a[5]; 则该数组的首地址可以表示为_______和________。
7、比较两个字符串的大小的函数是________。
8、下面程序段的运行结果是。
char a[7]=“abcdef”;char b[4]=“ABC”;strcpy(a, b);printf(“%c”, a[5]);9、下面程序的运行结果是。
main( ){ int i, f[10];f[0]=f[1]=1;for (i=2; i<10; i++)f[i]=f[i-2]+f[i-1];for (i=0; i<10; i++)printf("%3d", f[i]);}10、下面程序段的运行结果是。
char c[5]={…a‟, …b‟, …\0‟, …c‟, …\0‟};printf(“%s”, c);二、选择1、有下面程序段char a[3], b[ ]=“China”;a=b; printf(“%s”, a);则。
A、运行后将输出ChinaB、运行后将输出ChC、运行后将输出ChiD、编译出错2、在C语言中,引用数组元素时,其数组下标的数据类型允许是A、整型常量C、整型常量或整型表达式B、整型表达式D、任何类型的表达式3、以下对一维数组a的正确说明是。
A、int a(10); C、int n=10, a[n];B、int n; D、#define SIZE 10scanf(“%d”, &n); int a[SIZE];int a[n];4、若有说明:int a[10]; 则对a数组元素的正确引用是。
数组练习题

数组练习题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含有的元素个数为________。
练习题-第六章_数组(有答案)

一、填空题1.在C语言中,二维数组元素在内存中的存放顺序是。
2.定义了二维数组:int array[4][5],该数组所占的内存空间为______字节。
3.假设有整型数组array[100][100],其中第66行,第66列元素array[66][66]在数组中排列的位置(位置从1开始算起)为6566 。
4.若有定义:int a[3][4]={{1,2},{0},{4,6,8,10}};则初始化后,a[2][1]得到的初值是________。
5.下面的程序段的运行结果是____he_____。
char x[ ]=“the teacher”;int i =0;while(x[++i] != ’\0’)if(x[i-1] = = ‘t’) printf(“%c”,x[i]);二、单项选择题1.下面程序( B )(每行程序前面的数字表示行号)。
1 main( )2 { float a[10]={0.0};3 int i;4 for(i=0;i<3;i++) scanf(“%d”,&a[i]);5 for(i=1;i<10;i++) a[0]=a[0]+a[i];6 printf(“%f\n”,a[0]);7 }A)没有错误B)第2行有错误C)第4行有错误D)第6行有错误2.下面程序中有错误的行是(D)(每行程序前面的数字表示行号)。
1main( )2{3int a[3]={1};4int i;5scanf(“%d”,&a);6for(i=1;i<3;i++) a[0]=a[0]+a[i];7printf(“a[0]=%d\n”,a[0]);}A. 3B. 6C. 7D. 53.以下不能对二维数组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};4.对两个数组a和b进行初始化char a[ ] =“ABCDEF”;char b[ ] = {‘A’,‘B’,‘C’,‘D’,‘E’,‘F’};则以下叙述正确的是(D )。
《数据结构》第五章 数组 习题

《数据结构》第五章 数组 习题基本概念题:5-1 分别写出一维数组和二维数组的存储映象公式。
5-2 什么叫二维数组的行序优先存储?什么叫二维数组的列序优先存储?C 语言采用的是行序优先存储还是列序优先存储?5-3 什么叫随机存储结构?为什么说数组是一种随机存储结构?5-4 动态数组和静态数组在使用方法上有什么不同?5-5 什么样的矩阵叫特殊矩阵?特殊矩阵压缩存储的基本思想是什么?5-6 什么样的矩阵叫稀疏矩阵?稀疏矩阵压缩存储的基本思想是什么?5-7 什么叫稀疏矩阵的三元组?什么叫稀疏矩阵的三元组线性表?5-8 稀疏矩阵主要有哪些压缩存储结构?复杂概念题:5-9 设一个系统中二维数组采用以行序为主的存储方式存储,已知二维数组a[n][m]中每个数据元素占k 个存储单元,且第一个数据元素的存储地址是Loc(a[0][0]),求数据元素a[i][j](0≤i≤n -1, 0≤j≤m -1)的存储地址。
5-10 设一个系统中二维数组采用以行序为主的存储方式存储,已知二维数组a[10][8]中每个数据元素占4个存储单元,且第一个数据元素的存储地址是1000,求数据元素a[4][5]的存储地址。
5-11 画出一个3行3列二维动态数组存储结构示意图。
5-12 对于如下所示的稀疏矩阵A(1)写出该稀疏矩阵的三元组线性表;(2)画出稀疏矩阵A 的三元组顺序表结构;(3)画出稀疏矩阵A 的带头结点单链表结构;(4)画出稀疏矩阵A 的行指针数组链表结构;(5)画出稀疏矩阵A 的三元组十字链表结构。
算法设计题:5-13 为节省内存,n 阶对称矩阵采用压缩存储,要求:(1)编写实现C = A + B 操作的函数。
设矩阵A 、矩阵B 和矩阵C 均采用压缩存储方式存储,矩阵元素均为整数类型。
(2)编写一个采用压缩存储的n 阶对称矩阵的输出函数,要求输出显示成矩阵形式,设矩阵元素均为整数类型。
(3)设矩阵A 和矩阵B 为如下所示的矩阵,编写一个用矩阵A 和矩阵B 作为测试例子的测试上述函数的主程序。
数组练习题及答案

数组练习题及答案问题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;}```结束语:这些练习题涵盖了数组的基本操作、查找、排序和动态扩展等常见问题,希望能够帮助您更好地理解和掌握数组的使用。
数据结构 第5章 数组练习题
数据结构第5章数组练习题数据结构-第5章--数组练习题第五章阵列一、选择题3.有一个数组a[I,J],数组中每个元素的长度是3字节,I的值是1到8,J的值是1到10。
数组从内存ba的第一个地址开始顺序存储。
当它主要按列存储时,元素a[5,8]的第一个地址是(a)。
a.ba+141b.ba+180c.ba+222d.ba+2254.假设以行序为主序存储二维数组a=array[1..100,1..100],设每个数据元素占2个存储单元,基地址为10,则loc[5,5]=(a)。
a.808b.818c.1010d.10205.数组a[0..5,0..6]的每个元素占五个字节,将其按列优先次序存储在起始地址为1000的内存单元中,则元素a[5,5]的地址是()。
1195a、 1175b。
1180摄氏度。
1205d。
一千二百一十7.将一个a[1..100,1..100]的三对角矩阵,按行优先存入一维数组b[1e298]中,a中元素a6665(即该元素下标i=66,j=65),在b数组中的位置k为()。
供选择的答案:a、 198b年。
195c年。
1972+64*3=19410. 如果行序是n阶对称矩阵A的主序,则其下三角形的元素(包括主对角线上的所有元素)存储在一维数组B[1(n(n+1))/2]中,然后在bj*(j-1)/2+ic中确定AIJ(IA.I*(I-1)/2+JB。
i*(i+1)/2+jd。
j*(j+1)/2+i11。
设a是n*n的对称矩阵,将a的对角线和对角线上方的元素按列的顺序存储在一维数组B[1..n(n+1)/2]中,并存储上述任何元素的位置AIJ(1)≤ 一、J≤ n、而我≤ J)在B中是(c)。
a、 i(i-l)/2+jb。
j(j-l)/2+ic。
j(j-l)/2+i-1d。
i(i-l)/2+j-112。
A[n,n]是一个对称矩阵。
如果下三角形(包括对角线)按行顺序存储在尺寸组t[n(n+1)/2]中,则与任何上三角形元素a[i][J]对应的t[k]的下标k为(AB)。
数组练习题(打印版)
数组练习题(打印版)# 数组练习题## 一、基础概念题1. 数组的定义:请简述数组是什么,并说明其基本特性。
2. 数组的存储方式:解释数组在内存中是如何存储的。
3. 数组的索引:说明数组索引的工作原理及其重要性。
## 二、编程实现题1. 数组的初始化:- 编写一个程序,初始化一个具有10个元素的整型数组,并赋予每个元素初始值1。
2. 数组元素的访问:- 编写代码,实现访问数组中第5个元素的值,并打印出来。
3. 数组元素的修改:- 编写代码,将上述数组的第5个元素的值修改为100,并打印修改后的数组。
4. 数组元素的遍历:- 编写一个循环,遍历上述数组的所有元素,并打印每个元素的值。
5. 数组的排序:- 编写一个函数,实现对数组的升序排序。
6. 二维数组的初始化:- 编写代码,初始化一个3x3的二维数组,并赋予每个元素初始值0。
7. 二维数组的遍历:- 编写一个程序,遍历上述3x3的二维数组,并打印出所有元素的值。
8. 查找特定元素:- 编写一个函数,实现在一个已排序的数组中查找特定元素是否存在,并返回其索引。
## 三、算法应用题1. 数组的反转:- 编写一个函数,实现对数组元素的反转。
2. 数组的去重:- 编写一个函数,实现去除数组中的重复元素。
3. 数组的合并:- 编写一个函数,实现两个有序数组的合并。
4. 数组的旋转:- 编写一个函数,实现将数组向右旋转k个位置。
5. 数组的查找:- 编写一个函数,实现在数组中查找第一个不重复的元素。
## 四、高级应用题1. 动态数组:- 描述动态数组的概念,并说明其与静态数组的区别。
2. 数组的内存优化:- 讨论在数组使用过程中如何优化内存使用。
3. 数组的多维应用:- 编写一个程序,实现一个n维数组的初始化和访问。
4. 数组与算法结合:- 选择一个算法(如快速排序、归并排序等),并说明如何使用数组来实现该算法。
5. 数组的异常处理:- 编写代码,实现在数组操作中添加异常处理机制,确保程序的健壮性。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
}
if(f)
printf("%d is No. %d\n", n,k);
else
printf(" %d not found !\n",n);
}
改错题目
1.在考生目录下,给定程序MODI1.C的功能是:
先将在字符串s中的字符按正序存放到t串中,然后
把s中的字符按逆序连接到t串的后面。
A)int a[10]=(0,0,0,0,0);B)int a[10]={ };
C)int a[]={0};D)int a[10]=(10*1);
4.对说明语句int a[10]={6,7,8,9,10};的正确理解是【】。
A)将5个初值依次赋给a[1]至a[5]
B)将5个初值依次赋给a[0]至a[4]
例如,输入的字符串为:556,则输出十进制整数366。
请填空。
程序有两个空(1)、(2)需要补充完整。并将程序调试出
所需的结果。
注意:不要随意改动程序,不得增行或删行,也不得更
改程序的结构!
#include <stdio.h>
main()
{ char s[6]; int n=0,j=0;
clrscr();
printf("%d,%d\n",a[p],p);
}
8.在考生目录下,给定程序FILL1.C的功能是:把数组a
(大小为100)中前n个元素中的最大值放入a的最后
一个元素中,n的值由键盘输入。请填空。
程序有两个空(1)、(2)需要补充完整。并将程序调试出
所需的结果。
注意:不要随意改动程序,不得增行或删行,也不得更
#include <conio.h>
#include <stdio.h>
#include <string.h>
main()
{ char s[80],t[80];
int i, sl;
clrscr();
printf("\nPlease enter string s:");
scanf("%s", s);
sl = strlen(s);
if(___(2)___) printf("\n");
printf("%8ld",f[i]);
}
printf("\n");
}
4.在考生目录下,给定程序FILL1.C的功能是:实现在N行M列
的二维数组中,找出每一行上的最大值,且原数组值不变。
例如:如果二维数组元素的值为:
1 5 7 4
2 6 4 3
8 2 3 1
}
printf("\n");
}
7.在考生目录下,输出一维数组a中的最小值及其下标。请填空。
程序有两个空(1)、(2)需要补充完整。请将程序调试出
所需的结果。
注意:不要随意改动程序,不得增行或删行,也不得更
改程序的结构!
#include <stdio.h>
main( )
{ int i,p=0,a[10];
输入一个数字组成的字符串(字符串长度小于8),将该字
符串转换成一个十进制数。
例如:从键盘上输入2345,则程序运行的结果应当为:
n=2345。
程序有两个空(1)、(2)需要补充完整。请将程序调试出
所需的结果。
注意:不要随意改动程序,不得增行或删行,也不得更
改程序的结构!
#include "stdio.h"
时,程序的运行结果应为:
The max value in line 0 is 7
The max value in line 1 is 6
The max value in line 2 is 8
请填空。
程序有两个空(1)、(2)需要补充完整。并将程序调试出
所需的结果。
注意:不要随意改动程序,不得增行或删行,也不得更
Fabonacci数列:1,1,2,3,5,8,……的前20项的
项值,要求每行输出5个数。请填空。
程序有两个空(1)、(2)需要补充完整。请将程序调试出
所需的结果。
注意:不要随意改动程序,不得增行或删行,也不得更
改程序的结构!
#include "stdio.h"
main()
{ long int f[20]={1,1};
例如:当s中的字符串为:"ABCDE"时,
则t中的字符串应为:"ABCDEEDCBA"。
程序中有两处错误,错误都在提示行:
/***********found***********/的下面一行,请考生注意。
请改正程序中的错误,使它能得出正确的结果。
注意:不要随意改动程序,不得增行或删行,也不得更
改程序的结构!
printf("n=%ld\n",n);
}
3.在考生目录下,给定程序FILL1.C的功能是:输出
Fabonacci数列:1,1,2,3,5,8,……的前20项的
项值,要求每行输出5个数。请填空。
程序有两个空(1)、(2)需要补充完整。请将程序调试出
所需的结果。
注意:不要随意改动程序,不得增行或删行,也不得更
main()
{ char s[10]; int i;
long int n=0;
clrscr();
/**************found************/
___(1)___;
/**************found************/
for(i=0;___(2)___;i++)
n=n*10+s[i]-'0';
改程序的结构!
#include <stdio.h>
main()
{ int a[100],i,n;
clrscr();
/************found************/
___(1)___;
for(i=0;i<n;i++)
scanf("%d",&a[i]);
a[99]=a[0];
for(i=1;i<n;i++)
if(x[i][p]<x[i][j])
/************found************/
___(2)___;
printf("The max value in line %d is %d\n",i,x[i][p]);
}
}
5.在考生目录下,给定程序FILL1.C的功能是:将无符号
八进制数字构成的字符串转换为十进制整数。
}
/************found************/
ave=___(2)___;
printf("Output :\n");
printf("ave=%.2f\n",ave);
}
10.在考生目录下,给定程序FILL1.C的功能是:查找n在
数组a中最后一次出现的位置。
例如:如果a数组中的元素为:1,5,2,5,6,8,7,4,3,0,
/************found************/
for( i=0; i<=sl; i+=2)
t[i] = s[i];
for (i=0; i<sl; i++)
t[sl+i] = s[sl-i-1];
/************found************/
{ int a[10]={1,5,2,5,6,8,7,4,3,0};
int i,k,n,f=0;
clrscr();
scanf("%d",&n);
for(i=0;i<10;i++)
/************found************/
if(___(1)___)
{ f=1;
/************found************/
C)将5个初值依次赋给a[6]至a[10]
D)因为数组长度与初值的个数不相同,所以此语句不正确
5.若二维数组a有m列,则在a[i][j]前的元素个数为【】。
A)j*m+iB)i*m+j
C)i*m+j-1D)i*m+j+1
6.若有说明:int a[][3]={1,2,3,4,5,6,7};则a数组第一维的大小是【】。
clrscr();
/************found************/
for(i=0;___(1)___;i++)
scanf("%d",&a[i]);
for(i=1;i<10;i++)
if(a[i]<a[p])
/************found************/
___(2)___;
int n=0,i;
clrscr();
printf("Enter mark:\n");
scanf("%f",&a);
while(a>=0.0 && n<1000)
{
/************found************/
sum+=___(1)___;
x[n]=a;
n++;