内容正文:
编写说明:河北省对口招生《计算机类考纲百套卷》,依据《河北省2028年中等职业学校对口升学考试计算机类专业考试大纲》编写。本专辑涵盖四门课程,且每门课程均采用三阶递进式训练体系:基础层(具象化支架)拆解考点为微目标,紧扣考纲 “掌握”“理解” 要求编写考点训练卷;巩固层(关联性支架)强化知识交叉与场景关联,按考纲专题编专题训练卷;应用层(引导性支架)聚焦真题突破,结合知识模块与教材编写课程综合卷。
本试卷是第62卷为考点训练卷,按《算法与程序设计-C#》范围和要求编写。具体内容为:1.数组的定义、初始化、引用、数组中数据对象的赋值与输出,数组排序;2.遍历数组元素的方法。
2027版河北省《计算机类考纲百套卷》 第62卷
《算法与程序设计-C#》
数组 知识点训练卷
考试时间60分钟 满分100分
班级 姓名 学号 成绩
一、单项选择题(本大题共15小题,每题2分,共30分)
1.关于C#中数组的定义,以下( )是正确的。
A. 数组的长度可以在运行时改变 B. 数组是引用类型,存储在堆上
C. 数组的元素必须是值类型 D. 数组的索引从1开始
2.以下( )语句正确声明了一个整型数组。
A. int[] arr = new int[]; B. int arr[] = new int[5];
C. int[] arr = new int[5]; D. int arr = new int[5];
3.关于数组的初始化,以下( )是错误的。
A. int[] arr = {1, 2, 3}; B. int[] arr = new int[3] {1, 2, 3};
C. int[] arr = new int[] {1, 2, 3}; D. int[] arr = new int[3]; arr = {1, 2, 3};
4.关于多维数组,以下说法正确的是( )
A. 二维数组的声明方式为 int[,] arr = new int[3,4];
B. 交错数组(锯齿数组)的元素必须是相同长度的数组
C. 交错数组的声明方式为 int[][] arr = new int[3][4];
D. 多维数组的 Length 属性返回每一维的长度之和
5.以下代码的输出是( )
int[] arr = {5, 3, 8, 1, 9};
Array.Sort(arr);
Console.WriteLine(arr[1]);
A. 5 B. 3 C. 1 D. 8
6.以下代码的输出是( )
int[] arr1 = {1, 2, 3};
int[] arr2 = arr1;
arr2[0] = 10;
Console.WriteLine(arr1[0]);
A. 1 B. 10 C. 编译错误 D. 运行时错误
7.以下选项中,正确声明了一个交错数组(锯齿数组)的是( )
A. int[][] arr = new int[3][]; B. int[,] arr = new int[3,4];
C. int[] arr = new int[3]; D. int[][] arr = new int[][3];
8.关于 Array.Resize 方法,以下说法正确的是( )
A. 它修改原数组的长度 B. 它返回一个新数组,原数组不变
C. 它可能改变原数组的引用 D. 它只能增大数组,不能缩小
9.以下代码的输出是( )
int[] arr = {5, 2, 8, 1, 9};
Array.Sort(arr, 1, 3);
Console.WriteLine(arr[2]);
A. 5 B. 2 C. 8 D. 1
10.以下代码的输出是( )
string[] arr = new string[3];
arr[0] = "Hello";
arr[1] = "World";
Console.WriteLine(arr[2]);
A. Hello B. World C. 空字符串 D. null
11.以下代码的输出是( )
int[] arr1 = {1, 2, 3};
int[] arr2 = new int[3];
Array.Copy(arr1, arr2, 2);
Console.WriteLine(arr2[2]);
A. 0 B. 1 C. 2 D. 3
12.关于数组的 GetUpperBound 方法,以下说法正确的是( )
A. 它返回数组指定维度的上限索引 B. 它返回数组指定维度的长度
C. 它返回数组的总长度 D. 它只适用于一维数组
13.关于数组的索引(下标),下列说法错误的是( )
A. 数组的索引是从 0 开始的
B. 长度为 n 的数组,最大索引是 n-1
C. 访问数组时,如果索引超出范围,会抛出 IndexOutOfRangeException 异常
D. 数组的索引可以是 double 类型,如 arr[1.5]
14.下列关于 foreach 循环遍历数组的描述,正确的是( )
A. foreach 循环可以在遍历过程中直接修改数组元素的值
B. foreach 循环可以获取当前元素的索引值
C. foreach 循环只能用于只读访问数组元素,语法更简洁
D. foreach 循环的执行效率比 for 循环低很多,不建议使用
15.关于交错数组(数组的数组),下列说法正确的是( )
A. 交错数组的每一行(内嵌数组)长度必须相同
B. 交错数组的声明方式是 int[,]
C. 交错数组在内存中是连续存储的
D. 交错数组的每一行都是一个独立的一维数组,长度可以不同
二、判断题(本大题共10小题,每题2分,共20分)
16.在C#中,数组的长度一旦确定,就不能再改变。( )
17.数组是引用类型,但数组的元素可以是值类型或引用类型。( )
18. 使用 foreach 循环遍历数组时,可以修改数组元素的值。( )
19.使用 Array.IndexOf 方法如果没有找到元素,会返回 -1。( )
20.可以使用数组的 Length 属性作为 for 循环的终止条件,以防止索引越界。( )
21.使用 foreach 遍历数组时,可以从数组的最后一个元素开始向前遍历。( )
22.二维数组 int[,] arr = new int[3, 4]; 在内存中占用的空间是连续的。( )
23.交错数组 int[][] jagged = new int[3][]; 创建后可以直接使用 jagged[0][0] = 1; 赋值。( )
24.foreach遍历多维数组时,按照列优先的顺序访问所有元素。( )
25.二维数组可以使用 arr.GetLength(0) 获取行数,arr.GetLength(1) 获取列数。( )
3、 填空题(本大题共10个题,每题2分,共20分)
26.已知数组 int[] arr = new int[5]; 则 arr.Length 的值是________
27.以下代码的输出是________。
int[] arr = new int[] {10, 20, 30, 40, 50};
Console.WriteLine(arr[2]);
28.在C#中,获取数组长度的属性是________。
29.创建包含5个整型元素的数组,并初始化为0,语句是:________。
30.创建数组并直接赋初始值 {1, 2, 3, 4, 5},省略new的写法是:____。
31.数组的索引从____开始,最大索引是____。
32.设有 int[] a = {1, 2, 3}; int[] b = a;,执行后a和b指向____(相同/不同)的数组对象。
33.Array.Sort()方法实现的是____(升序/降序)排序,且____(会/不会)修改原数组。
34.设有 int[,] arr = new int[3, 4];,arr.GetLength(0)返回____,arr.GetLength(1)返回____。
35.____方法可以在数组中查找指定元素并返回其第一次出现的索引。
四、程序读程题(本大题共3个题,每题10分,共30分)
36.执行下列C#代码后,程序的运行结果为_________
int[,] matrix = { { 1, 2, 3 }, { 4, 5, 6 }, { 7, 8, 9 } };
int product = 1;
for (int i = 0; i < matrix.GetLength(0); i++)
{
for (int j = 0; j < matrix.GetLength(1); j++)
{
if (i == j)
product *= matrix[i, j];
}
}
Console.WriteLine(product);
37. 执行下列C#代码后,程序的运行结果为_________
static void Main()
{
int[] arr = { 2, 5, 2, 8, 5, 9, 2, 8, 6, 5 };
int len = arr.Length;
int[] unique = new int[len];
int[] countArr = new int[len];
int uniqueLen = 0;
for (int i = 0; i < len; i++)
{
bool exist = false;
for (int j = 0; j < uniqueLen; j++)
{
if (arr[i] == unique[j])
{
countArr[j]++;
exist = true;
break;
}
}
if (!exist)
{
unique[uniqueLen] = arr[i];
countArr[uniqueLen] = 1;
uniqueLen++;
}
}
for (int i = 0; i < uniqueLen; i++)
{
Console.WriteLine("元素{0}:{1}", unique[i], countArr[i]);
}
}
38. 执行下列C#代码后,程序的运行结果为_________.
static void Main()
{
int[,] mat =
{
{1, 2, 3},
{4, 5, 6},
{7, 8, 9}
};
int n = mat.GetLength(0);
for (int i = 0; i < n; i++)
{
for (int j = i + 1; j < n; j++)
{
int temp = mat[i, j];
mat[i, j] = mat[j, i];
mat[j, i] = temp;
}
}
for (int i = 0; i < n; i++)
{
for (int j = 0; j < n; j++)
{
Console.Write(mat[i, j] + " ");
}
Console.WriteLine();
}
}
原创精品资源学科网独家享有版权,侵权必究!
学科网(北京)股份有限公司
学科网(北京)股份有限公司
学科网(北京)股份有限公司
$
编写说明:河北省对口招生《计算机类考纲百套卷》,依据《河北省2028年中等职业学校对口升学考试计算机类专业考试大纲》编写。本专辑涵盖四门课程,且每门课程均采用三阶递进式训练体系:基础层(具象化支架)拆解考点为微目标,紧扣考纲 “掌握”“理解” 要求编写考点训练卷;巩固层(关联性支架)强化知识交叉与场景关联,按考纲专题编专题训练卷;应用层(引导性支架)聚焦真题突破,结合知识模块与教材编写课程综合卷。
本试卷是第62卷为考点训练卷,按《算法与程序设计-C#》范围和要求编写。具体内容为:1.数组的定义、初始化、引用、数组中数据对象的赋值与输出,数组排序;2.遍历数组元素的方法。
2027版河北省《计算机类考纲百套卷》 第62卷
《算法与程序设计-C#》
数组 知识点训练卷
考试时间60分钟 满分100分
班级 姓名 学号 成绩
一、单项选择题(本大题共15小题,每题2分,共30分)
1.关于C#中数组的定义,以下( )是正确的。
A. 数组的长度可以在运行时改变 B. 数组是引用类型,存储在堆上
C. 数组的元素必须是值类型 D. 数组的索引从1开始
【答案】B
【解析】数组是引用类型,在堆上分配内存。A错误,数组一旦创建,其长度是固定的。C错误,数组的元素可以是任何类型,包括引用类型。D错误,C#数组的索引从0开始。
2.以下( )语句正确声明了一个整型数组。
A. int[] arr = new int[]; B. int arr[] = new int[5];
C. int[] arr = new int[5]; D. int arr = new int[5];
【答案】C
【解析】C#中数组声明的正确语法是:类型[] 数组名 = new 类型[长度]。
3.关于数组的初始化,以下( )是错误的。
A. int[] arr = {1, 2, 3}; B. int[] arr = new int[3] {1, 2, 3};
C. int[] arr = new int[] {1, 2, 3}; D. int[] arr = new int[3]; arr = {1, 2, 3};
【答案】D
【解析】因为数组初始化后,不能使用简化形式重新赋值。
4.关于多维数组,以下说法正确的是( )
A. 二维数组的声明方式为 int[,] arr = new int[3,4];
B. 交错数组(锯齿数组)的元素必须是相同长度的数组
C. 交错数组的声明方式为 int[][] arr = new int[3][4];
D. 多维数组的 Length 属性返回每一维的长度之和
【答案】A
【解析】交错数组的元素是数组,但这些数组的长度可以不同。交错数组的声明应为 int[][] arr = new int[3][]; 然后分别为每个元素实例化数组。
5.以下代码的输出是( )
int[] arr = {5, 3, 8, 1, 9};
Array.Sort(arr);
Console.WriteLine(arr[1]);
A. 5 B. 3 C. 1 D. 8
【答案】B
【解析】Array.Sort 对数组进行升序排序,排序后为 {1,3,5,8,9},arr[1] 是第二个元素 3。
6.以下代码的输出是( )
int[] arr1 = {1, 2, 3};
int[] arr2 = arr1;
arr2[0] = 10;
Console.WriteLine(arr1[0]);
A. 1 B. 10 C. 编译错误 D. 运行时错误
【答案】B
【解析】 数组是引用类型,arr2 = arr1 使得 arr2 和 arr1 指向同一个数组对象。修改 arr2[0] 即修改了该数组的第一个元素,所以 arr1[0] 也变为10。
7.以下选项中,正确声明了一个交错数组(锯齿数组)的是( )
A. int[][] arr = new int[3][]; B. int[,] arr = new int[3,4];
C. int[] arr = new int[3]; D. int[][] arr = new int[][3];
【答案】A
【解析】交错数组的声明是 int[][] arr = new int[行数][]; 然后为每一行分配不同长度的数组。
8.关于 Array.Resize 方法,以下说法正确的是( )
A. 它修改原数组的长度 B. 它返回一个新数组,原数组不变
C. 它可能改变原数组的引用 D. 它只能增大数组,不能缩小
【答案】C
【解析】Array.Resize 方法实际上会创建一个新数组,并将原数组的元素复制到新数组,然后改变原数组的引用指向新数组。
9.以下代码的输出是( )
int[] arr = {5, 2, 8, 1, 9};
Array.Sort(arr, 1, 3);
Console.WriteLine(arr[2]);
A. 5 B. 2 C. 8 D. 1
【答案】B
【解析】Array.Sort(arr, 1, 3) 对数组从索引1开始连续3个元素排序。
10.以下代码的输出是( )
string[] arr = new string[3];
arr[0] = "Hello";
arr[1] = "World";
Console.WriteLine(arr[2]);
A. Hello B. World C. 空字符串 D. null
【答案】D
【解析】字符串数组是引用类型数组,每个元素默认初始化为 null。
11.以下代码的输出是( )
int[] arr1 = {1, 2, 3};
int[] arr2 = new int[3];
Array.Copy(arr1, arr2, 2);
Console.WriteLine(arr2[2]);
A. 0 B. 1 C. 2 D. 3
【答案】A
【解析】Array.Copy 复制源数组的前2个元素到目标数组,所以 arr2 的前两个元素变为1,2,第三个元素没有复制,保持默认值0。
12.关于数组的 GetUpperBound 方法,以下说法正确的是( )
A. 它返回数组指定维度的上限索引 B. 它返回数组指定维度的长度
C. 它返回数组的总长度 D. 它只适用于一维数组
【答案】A
【解析】GetUpperBound 返回指定维度的最大索引(即上限),对于一维数组,返回值为 Length-1。
13.关于数组的索引(下标),下列说法错误的是( )
A. 数组的索引是从 0 开始的
B. 长度为 n 的数组,最大索引是 n-1
C. 访问数组时,如果索引超出范围,会抛出 IndexOutOfRangeException 异常
D. 数组的索引可以是 double 类型,如 arr[1.5]
【答案】D
【解析】数组的索引必须是整数类型(如 int),不能是浮点数。
14.下列关于 foreach 循环遍历数组的描述,正确的是( )
A. foreach 循环可以在遍历过程中直接修改数组元素的值
B. foreach 循环可以获取当前元素的索引值
C. foreach 循环只能用于只读访问数组元素,语法更简洁
D. foreach 循环的执行效率比 for 循环低很多,不建议使用
【答案】C
【解析】foreach 是只读遍历,循环变量(如 foreach(int x in arr) 中的 x)是迭代变量的副本,修改它不会影响原数组,且编译器禁止直接赋值。它也无法直接获取索引。
15.关于交错数组(数组的数组),下列说法正确的是( )
A. 交错数组的每一行(内嵌数组)长度必须相同
B. 交错数组的声明方式是 int[,]
C. 交错数组在内存中是连续存储的
D. 交错数组的每一行都是一个独立的一维数组,长度可以不同
【答案】D
【解析】交错数组(int[][])本质是“数组的数组”。外层数组的每个元素存储的是内层数组的引用,因此内层数组的长度可以各不相同,且内存不连续。
二、判断题(本大题共10小题,每题2分,共20分)
16.在C#中,数组的长度一旦确定,就不能再改变。( )
【答案】对
【解析】数组是固定长度的集合。
17.数组是引用类型,但数组的元素可以是值类型或引用类型。( )
【答案】对
【解析】C# 中所有数组本身都是引用类型,存储在堆上。
18. 使用 foreach 循环遍历数组时,可以修改数组元素的值。( )
【答案】错
【解析】foreach 遍历数组时,迭代变量是只读副本;不能在 foreach 里修改数组元素。
19.使用 Array.IndexOf 方法如果没有找到元素,会返回 -1。( )
【答案】对
【解析】找到元素:返回对应索引,没找到元素:固定返回 -1
20.可以使用数组的 Length 属性作为 for 循环的终止条件,以防止索引越界。( )
【答案】对
【解析】数组索引从 0 开始,最大合法索引是 Length - 1。
21.使用 foreach 遍历数组时,可以从数组的最后一个元素开始向前遍历。( )
【答案】错
【解析】foreach 只能按照数组的自然顺序(从索引 0 到 Length-1)进行正向遍历,无法控制遍历方向或步长。
22.二维数组 int[,] arr = new int[3, 4]; 在内存中占用的空间是连续的。( )
【答案】对
【解析】矩形数组(多维数组)在内存中是按行优先顺序连续排列的。
23.交错数组 int[][] jagged = new int[3][]; 创建后可以直接使用 jagged[0][0] = 1; 赋值。( )
【答案】错
【解析】 创建交错数组 new int[3][] 只创建了外层数组(包含3个引用),每个子数组的默认值都是null。在使用子数组元素前,必须先为每个子数组分配内存。
24.foreach遍历多维数组时,按照列优先的顺序访问所有元素。( )
【答案】错
【解析】 foreach遍历多维数组时,按照行优先的顺序访问元素。
25.二维数组可以使用 arr.GetLength(0) 获取行数,arr.GetLength(1) 获取列数。( )
【答案】对
【解析】 GetLength(维度)方法返回指定维度的长度。对于二维数组,GetLength(0)返回第一维(行数),GetLength(1)返回第二维(列数)。
3、 填空题(本大题共10个题,每题2分,共20分)
26.已知数组 int[] arr = new int[5]; 则 arr.Length 的值是________
【答案】5
【解析】数组的 Length 属性表示数组的元素个数,这里声明了长度为5的数组,所以为5。
27.以下代码的输出是________。
int[] arr = new int[] {10, 20, 30, 40, 50};
Console.WriteLine(arr[2]);
【答案】30
【解析】数组索引从0开始,arr[2]是第三个元素,即30。
28.在C#中,获取数组长度的属性是________。
【答案】Length
【解析】数组使用 .Length 属性获取总元素个数。
29.创建包含5个整型元素的数组,并初始化为0,语句是:________。
【答案】 int[] arr = new int[5];
【解析】使用new关键字指定长度创建数组,会将所有元素初始化为默认值。int类型的默认值是0。
30.创建数组并直接赋初始值 {1, 2, 3, 4, 5},省略new的写法是:____。
【答案】int[] arr = {1, 2, 3, 4, 5};
【解析】C#支持数组初始化简写形式,编译器会自动推断数组长度并创建数组对象。
31.数组的索引从____开始,最大索引是____。
【答案】 0;Length-1
【解析】数组索引从0开始不是1。对于长度为n的数组,最大有效索引是n-1(Length-1)。
32.设有 int[] a = {1, 2, 3}; int[] b = a;,执行后a和b指向____(相同/不同)的数组对象。
【答案】相同
【解析】数组赋值给另一个数组变量,只是复制了引用,两者指向同一对象。修改其中一个会影响另一个。
33.Array.Sort()方法实现的是____(升序/降序)排序,且____(会/不会)修改原数组。
【答案】升序;会
【解析】Array.Sort()默认升序排序,且直接修改原数组,不返回排序后的数组。
34.设有 int[,] arr = new int[3, 4];,arr.GetLength(0)返回____,arr.GetLength(1)返回____。
【答案】 3;4
【解析】 GetLength(维度)返回指定维度的长度。GetLength(0)是第一维(行数),GetLength(1)是第二维(列数)。
35.____方法可以在数组中查找指定元素并返回其第一次出现的索引。
【答案】Array.IndexOf
【解析】IndexOf()返回元素第一次出现的索引,找不到返回-1。LastIndexOf()返回最后一次出现的索引。
四、程序读程题(本大题共3个题,每题10分,共30分)
36.执行下列C#代码后,程序的运行结果为_________
int[,] matrix = { { 1, 2, 3 }, { 4, 5, 6 }, { 7, 8, 9 } };
int product = 1;
for (int i = 0; i < matrix.GetLength(0); i++)
{
for (int j = 0; j < matrix.GetLength(1); j++)
{
if (i == j)
product *= matrix[i, j];
}
}
Console.WriteLine(product);
【答案】45
【解析】二维数组,主对角线上的元素为matrix[0,0]=1, matrix[1,1]=5, matrix[2,2]=9,乘积为1 * 5 * 9=45。
37. 执行下列C#代码后,程序的运行结果为_________
static void Main()
{
int[] arr = { 2, 5, 2, 8, 5, 9, 2, 8, 6, 5 };
int len = arr.Length;
int[] unique = new int[len];
int[] countArr = new int[len];
int uniqueLen = 0;
for (int i = 0; i < len; i++)
{
bool exist = false;
for (int j = 0; j < uniqueLen; j++)
{
if (arr[i] == unique[j])
{
countArr[j]++;
exist = true;
break;
}
}
if (!exist)
{
unique[uniqueLen] = arr[i];
countArr[uniqueLen] = 1;
uniqueLen++;
}
}
for (int i = 0; i < uniqueLen; i++)
{
Console.WriteLine("元素{0}:{1}", unique[i], countArr[i]);
}
}
【答案】
元素2:3
元素5:3
元素8:2
元素9:1
元素6:1
【解析】countArr[]:和 unique 下标一一对应,存对应元素出现次数。
38. 执行下列C#代码后,程序的运行结果为_________.
static void Main()
{
int[,] mat =
{
{1, 2, 3},
{4, 5, 6},
{7, 8, 9}
};
int n = mat.GetLength(0);
for (int i = 0; i < n; i++)
{
for (int j = i + 1; j < n; j++)
{
int temp = mat[i, j];
mat[i, j] = mat[j, i];
mat[j, i] = temp;
}
}
for (int i = 0; i < n; i++)
{
for (int j = 0; j < n; j++)
{
Console.Write(mat[i, j] + " ");
}
Console.WriteLine();
}
}
【答案】
1 4 7
2 5 8
3 6 9
【解析】GetLength(0) → 行数,GetLength(1) → 列数,新建转置矩阵,行列互换。
原创精品资源学科网独家享有版权,侵权必究!
学科网(北京)股份有限公司
学科网(北京)股份有限公司
学科网(北京)股份有限公司
$