第六章 数组《算法与程序设计--C#》(河北科学技术出版社)章节过关卷

2025-07-29
| 2份
| 23页
| 206人阅读
| 2人下载

资源信息

学段 中职
学科 职教专业课
课程 算法与程序设计(C#)
教材版本 算法与程序设计-C#
年级 -
章节 项目六 数组
类型 作业-单元卷
知识点 数组
使用场景 同步教学-单元练习
学年 2025-2026
地区(省份) 河北省
地区(市) -
地区(区县) -
文件格式 ZIP
文件大小 264 KB
发布时间 2025-07-29
更新时间 2025-07-29
作者 liqp_080269423
品牌系列 学易金卷·阶段检测模拟卷
审核时间 2025-07-29
下载链接 https://m.zxxk.com/soft/53263215.html
价格 3.00储值(1储值=1元)
来源 学科网

内容正文:

《算法与程序设计C#》河北科学技术出版社 第六章 数组 考试时间:90分钟 满分:100分 姓名 班级 学号 1、 单项选择题(本题共35小题,每题2分,共70分) 1. 声明  int[] arr = new int[5];  ,关于该数组说法正确的是( )。 A. 数组长度可随时修改 B. 数组元素默认值全为  0  C. 可直接通过  arr[5]  访问第六个元素 D. 数组类型为二维数组 2. 以下创建二维数组的语句正确的是( )。 A.  int[,] arr = new int[3][4];  B.  int[,] arr = {{1,2},{3,4}};  C.  int[,] arr = new int[2,3]{{1,2},{3,4}};  D.  int[][] arr = new int[2,3];  3. 执行  string[] strs = {"a","b","c"}; foreach (char c in strs) { /* 操作 */ }  ,编译结果是( )。 A. 正常编译,遍历字符 B. 编译错误,类型不匹配 C. 运行时报错 D. 正常编译,无输出 4. 有数组  int[] nums = {10,20,30};  ,执行  foreach (int num in nums) { num = 5; }  ,说法正确的是( )。 A. 数组元素全变为  5  B. 编译错误, foreach  中迭代变量是只读的 C. 运行时修改成功 D. 仅第一个元素变为  5  5. 数组  int[,] arr = new int[2,3]{{1,2,3},{4,5,6}};  , arr.GetLength(1)  的结果是( )。 A.  2  B.  3  C.  6  D. 报错 6. 声明  int[] arr;  后,直接执行  Console.WriteLine(arr[0]);  ,结果是( )。 A. 输出  0  B. 编译错误 C. 运行时抛  NullReferenceException  D. 正常输出 7. 以下能正确遍历一维数组  int[] nums  并修改元素值的是( )。 A.  foreach (int num in nums) { num = 1; }  B.  for (int i=0;i<nums.Length;i++) { nums[i] = 1; }  C.  for (int i=0;i<=nums.Length;i++) { nums[i] = 1; }  D.  while (nums.Length>0) { nums[0] = 1; }  8. 要创建一个长度由用户输入决定的一维数组,正确的是( )。 A.  Console.Write("输入长度:"); int len = int.Parse(Console.ReadLine()); int[] arr = new int[len];  B.  int[] arr = new int[Console.ReadLine()];  C.  int len; Console.Write("输入长度:"); len = Console.ReadLine(); int[] arr = new int[len];  D.  int[] arr = new int[];  再手动设置长度 9. 二维数组  int[,] arr = {{1,2},{3,4}};  ,访问元素  4  的正确写法是( )。 A.  arr[1,1]  B.  arr[2,2]  C.  arr[1,2]  D.  arr[2,1]  10. 执行  int[] arr = {1,2,3,4}; int sum = 0; for (int i=0;i<arr.Length;i++) { if (i%2==0) continue; sum += arr[i]; }  , sum  结果是( )。 A.  10  B.  5  C.  6  D.  3  11. 数组  string[] names = {"Tom","Jerry"};  ,以下操作会引发异常的是( )。 A.  names[0] = "Spike";  B.  Console.WriteLine(names[2]);  C.  foreach (string n in names) { Console.WriteLine(n); }  D.  names = new string[3]{"A","B","C"};  12. 关于数组初始化, int[] arr = new int[3]{1,2};  说法正确的是( )。 A. 编译错误,初始化元素数量与长度不符 B. 正常编译,第三个元素默认  0  C. 运行时报错 D. 语法错误 13. 有数组  int[] nums = {5,3,7,1};  ,用  Array.Sort(nums);  排序后,数组元素顺序是( )。 A.  1,3,5,7  B.  7,5,3,1  C.  5,3,7,1 (不变 ) D. 随机顺序 14. 以下代码输出结果是( )。 int[] arr = {1,2,3}; int[] arr2 = arr; arr2[0] = 10; Console.WriteLine(arr[0]); A.  1  B.  10  C. 编译错误 D. 运行时错误 15. 二维数组  int[,] arr = new int[3,2];  ,元素总个数是( )。 A.  3  B.  2  C.  6  D.  5  16. 执行  int[] arr = Enumerable.Range(1,5).ToArray();  ,数组元素是( )。 A.  1,2,3,4,5  B.  0,1,2,3,4  C.  2,3,4,5,6  D. 随机数 17. 数组  int[] nums = {8,2,6};  ,以下求最大值的正确代码是( )。 A.  int max = nums[0]; for (int i=1;i<nums.Length;i++) { if (nums[i]>max) max = nums[i]; }  B.  int max = nums.Max(); (需引用  System.Linq  ) C. 以上两种都对 D. 以上两种都错 18. 声明  int[][] jaggedArr = new int[3][];  ,关于该数组说法正确的是( )。 A. 这是二维数组 B. 是交错数组( jagged array ),每个子数组需单独初始化 C. 元素默认值全为  0  D. 长度不可变 19. 以下创建交错数组并初始化的正确代码是( )。 A.  int[][] arr = new int[2][3]{{1,2},{3,4}};  B.  int[][] arr = {{1,2},{3,4,5}};  C.  int[][] arr = new int[2][]; arr[0] = new int[]{1,2}; arr[1] = new int[]{3,4,5};  D.  int[][] arr = new int[][]{new int[2]{1,2}, new int[3]{3,4,5}};  20. 执行  int[] arr = {3,1,2}; Array.Reverse(arr);  ,数组元素变为( )。 A.  2,1,3  B.  3,2,1  C.  1,2,3  D. 不变 21. 有数组  int[] nums = {4,4,4};  ,判断是否所有元素相等,正确代码是( )。 A.  bool isEqual = nums.Distinct().Count() == 1; (需  System.Linq  ) B.  bool isEqual = true; for (int i=1;i<nums.Length;i++) { if (nums[i]!=nums[0]) { isEqual = false; break; } }  C. 以上两种都对 D. 以上两种都错 22. 数组  string[] strs = {"Hello","World"};  ,拼接成  HelloWorld  的正确代码是( )。 A.  string result = string.Join("", strs);  B.  string result = strs[0] + strs[1];  C. 以上两种都对 D. 以上两种都错 23. 执行  int[] arr = {1,2,3}; int[] newArr = arr.Select(x => x*2).ToArray();  (需  System.Linq  ), newArr  元素是( )。 A.  1,2,3  B.  2,4,6  C.  3,6,9  D. 报错 24. 以下代码输出结果是( )。 int[,] arr = {{1,2},{3,4}}; for (int i=0;i<2;i++) { for (int j=0;j<2;j++) { Console.Write(arr[j,i] + " "); } } A.  1 3 2 4  B.  1 2 3 4  C.  2 4 1 3  D.  3 4 1 2  25. 数组  int[] nums = {5,3,7};  ,找出索引为奇数的元素之和,正确代码是( )。 A.  int sum = 0; for (int i=0;i<nums.Length;i++) { if (i%2!=0) sum += nums[i]; }  B.  int sum = nums.Where((x,i) => i%2!=0).Sum(); (需  System.Linq  ) C. 以上两种都对 D. 以上两种都错 26. 若一维数组  int[] arr = {1,2,3,4,5}; ,以下访问正确的是( ) A.  arr[5]  B.  arr[0]  C.  arr[1]  D.  arr[6]  27. 声明二维数组语法正确的是( ) A.  int[2,3] arr;  B.  int[,] arr = new int[2,3];  C.  int[][] arr = new int[2][3];  D.  int[,] arr = {{1,2},{3,4}};  28. 锯齿数组  int[][] jagged = new int[3][]; ,以下初始化正确的是( ) A.  jagged[0] = new int[2] {1,2};  B.  jagged = new int[3,2];  C.  jagged[1] = new int[] {3};  D. 以上都对 29. 数组  int[] nums = new int[5];  ,默认每个元素值是( ) A.  null  B.  0  C. 随机值 D. 未定义 30. 二维数组  int[,] arr = new int[2,3] {{1,2,3},{4,5,6}};  , arr[1,2]  的值是( ) A.  3  B.  6  C.  5  D. 下标越界 31. 以下创建数组的方式,能直接初始化元素的是( ) A.  int[] arr = new int[3];  B.  string[] names = {"Tom", "Jerry"};  C.  double[,] scores = new double[2,2];  D.  char[][] chars = new char[2][];  32. 数组长度属性是( ) A.  Length  B.  Count  C.  Size  D.  Capacity  33. 以下关于数组的说法,错误的是( ) A. 数组元素类型必须相同 B. 数组一旦创建,长度不可变 C. 可以用  foreach  遍历数组 D. 数组索引可以是浮点数 34. 锯齿数组  int[][] jagged = { new int[] {1,2}, new int[] {3} };  ,总元素个数是( ) A.  2  B.  3  C.  4  D. 不确定 35. 以下代码运行后, result  的值是( ) int[] arr = {1,2,3,4}; int result = arr[1] + arr[3]; A.  3  B.  6  C.  5  D.  7  2、 判断题(本题共10小题,每题1分,共10分) 1. 声明  int[] arr = new int[5];  后, arr[0]  默认值为  0 ,因此可直接通过  arr[0] = 10;  修改值。( ) 续可通过下标修改值。 2. 二维数组  int[,] arr = { {1,2}, {3,4} };  ,可直接通过  arr[2,0]  访问第三行第一列元素。( ) 3.  foreach  遍历数组时,迭代变量是只读的,因此无法在  foreach  循环内修改数组元素的值。( ) 4. 数组  int[] nums = { 1, 2, 3 };  ,执行  nums = new int[4] { 4, 5, 6, 7 };  后,原数组  { 1, 2, 3 }  会被自动销毁。( ) 5. 声明  int[] arr;  后,直接执行  Console.WriteLine(arr.Length);  会引发 编译错误。( ) 6. 交错数组  int[][] jaggedArr = new int[3][];  ,每个子数组需单独初始化,否则默认值为  null 。( ) 7. 数组  int[] arr = { 1, 2, 3 };  ,执行  Array.Sort(arr);  后,数组会按降序排列。( ) 8. 二维数组  int[,] arr = new int[2, 3];  , arr.GetLength(0)  返回行数( 2  ), arr.GetLength(1)  返回列数( 3  )。( ) 9. 数组元素的索引必须是非负整数,且不能超过数组长度 1,否则会引发下标越界异常。( ) 10. 声明  int[] arr = { 1, 2, 3 };  ,执行  arr[0] = arr[1] + arr[2];  后, arr[0]  的值为  5 。( ) 三、程序分析题(共 2 小题,每小题 5 分,共 10 分 ) 1. 程序运行后,控制台输出是 int[] nums = { 8, 3, 5, 9, 2 }; int temp = 0; for (int i = 0; i < nums.Length 1; i++) { for (int j = 0; j < nums.Length 1 i; j++) { if (nums[j] > nums[j + 1]) { temp = nums[j]; nums[j] = nums[j + 1]; nums[j + 1] = temp; } } } foreach (int num in nums) { Console.Write(num + " "); } 2. 程序运行后,控制台输出是 int[,] matrix = { { 1, 2, 3 }, { 4, 5, 6 }, { 7, 8, 9 } }; int sum = 0; for (int i = 0; i < 3; i++) { sum += matrix[i, i]; } Console.WriteLine( sum); 四、 程序填空题(共 2 小题,每空 5 分,共 10 分 ) 1.将数组  { 10, 20, 30, 40, 50 }  逆序存储(即变为  { 50, 40, 30, 20, 10 }  ),补全代码。 int[] arr = { 10, 20, 30, 40, 50 }; int len = arr.Length; for (int i = 0; i < len / 2; i++) { // 交换 arr[i] 和 arr[len-1-i] int temp = arr[i]; arr[len - 1- i] = temp; } foreach (int num in arr) { Console.Write(num + " "); } 2. 程序填空题(统计数组中偶数个数) 需求:统计数组  { 1, 2, 3, 4, 5, 6 }  中偶数的个数,补全代码。 int[] nums = { 1, 2, 3, 4, 5, 6 }; int count = 0; foreach (int num in nums) { if { count++; } } Console.WriteLine("偶数个数:" + count); 原创精品资源学科网独家享有版权,侵权必究! 学科网(北京)股份有限公司 学科网(北京)股份有限公司 $$ 《算法与程序设计C#》河北科学技术出版社 第六章 数组 考试时间:90分钟 满分:100分 姓名 班级 学号 1、 单项选择题(本题共35小题,每题2分,共70分) 1. 声明  int[] arr = new int[5];  ,关于该数组说法正确的是( )。 A. 数组长度可随时修改 B. 数组元素默认值全为  0  C. 可直接通过  arr[5]  访问第六个元素 D. 数组类型为二维数组 【答案】B 【解析】 new int[5]  创建长度为5的一维数组,元素默认值  int  类型是  0 ;长度创建后不可变, arr[5]  下标越界,这是一维数组,A、C、D错误 。 2. 以下创建二维数组的语句正确的是( )。 A.  int[,] arr = new int[3][4];  B.  int[,] arr = {{1,2},{3,4}};  C.  int[,] arr = new int[2,3]{{1,2},{3,4}};  D.  int[][] arr = new int[2,3];  【答案】B 【解析】二维数组创建语法是  int[,] 数组名 = new int[行数,列数];  ,A 语法错误;C 初始化时  new int[2,3]  ,应该是两行三列,每个大括号中应该是三个值,D 选项等号前是不规则数组,等号后也应该写为new int[2][3]; 形式 。 3. 执行  string[] strs = {"a","b","c"}; foreach (char c in strs) { /* 操作 */ }  ,编译结果是( )。 A. 正常编译,遍历字符 B. 编译错误,类型不匹配 C. 运行时报错 D. 正常编译,无输出 【答案】B 【解析】 strs  是  string  类型数组, foreach  遍历变量  c  声明为  char  ,类型不匹配,编译报错,选B 。 4. 有数组  int[] nums = {10,20,30};  ,执行  foreach (int num in nums) { num = 5; }  ,说法正确的是( )。 A. 数组元素全变为  5  B. 编译错误, foreach  中迭代变量是只读的 C. 运行时修改成功 D. 仅第一个元素变为  5  【答案】B 【解析】 foreach  迭代变量默认是值类型副本,且为只读,无法赋值修改,编译报错,选B 。 5. 数组  int[,] arr = new int[2,3]{{1,2,3},{4,5,6}};  , arr.GetLength(1)  的结果是( )。 A.  2  B.  3  C.  6  D. 报错 【答案】B 【解析】 GetLength(0)  获取行数, GetLength(1)  获取列数,此数组列数是3,选B 。 6. 声明  int[] arr;  后,直接执行  Console.WriteLine(arr[0]);  ,结果是( )。 A. 输出  0  B. 编译错误 C. 运行时抛  NullReferenceException  D. 正常输出 【答案】C 【解析】数组仅声明未初始化(未  new  分配空间 ),直接访问元素会引发空引用异常,选C 。 7. 以下能正确遍历一维数组  int[] nums  并修改元素值的是( )。 A.  foreach (int num in nums) { num = 1; }  B.  for (int i=0;i<nums.Length;i++) { nums[i] = 1; }  C.  for (int i=0;i<=nums.Length;i++) { nums[i] = 1; }  D.  while (nums.Length>0) { nums[0] = 1; }  【答案】B 【解析】A  foreach  迭代变量只读无法修改;C 下标  i<=nums.Length  会越界;D 死循环且逻辑错误,B 通过  for  循环下标可正确修改,选B 。 8. 要创建一个长度由用户输入决定的一维数组,正确的是( )。 A.  Console.Write("输入长度:"); int len = int.Parse(Console.ReadLine()); int[] arr = new int[len];  B.  int[] arr = new int[Console.ReadLine()];  C.  int len; Console.Write("输入长度:"); len = Console.ReadLine(); int[] arr = new int[len];  D.  int[] arr = new int[];  再手动设置长度 【答案】A 【解析】B  Console.ReadLine()  返回  string  ,无法直接给数组长度;C  len  未转  int  类型;D 数组创建需指定长度(除非初始化时赋值 ),A 先获取长度转  int  再创建数组,正确 。 9. 二维数组  int[,] arr = {{1,2},{3,4}};  ,访问元素  4  的正确写法是( )。 A.  arr[1,1]  B.  arr[2,2]  C.  arr[1,2]  D.  arr[2,1]  【答案】A 【解析】二维数组下标从  0  开始, 4  在第二行(下标  1  )第二列(下标  1  ),即  arr[1,1]  ,选A 。 10. 执行  int[] arr = {1,2,3,4}; int sum = 0; for (int i=0;i<arr.Length;i++) { if (i%2==0) continue; sum += arr[i]; }  , sum  结果是( )。 A.  10  B.  5  C.  6  D.  3  【答案】C 【解析】循环中  i  为  0 (跳过 )、 1 (加  2  )、 2 (跳过 )、 3 (加  4  ), sum=2+4=6  ,选C 。 11. 数组  string[] names = {"Tom","Jerry"};  ,以下操作会引发异常的是( )。 A.  names[0] = "Spike";  B.  Console.WriteLine(names[2]);  C.  foreach (string n in names) { Console.WriteLine(n); }  D.  names = new string[3]{"A","B","C"};  【答案】B 【解析】 names  长度为2,下标  2  越界,访问会抛异常,A 正常修改,C 正常遍历,D 重新赋值数组,选B 。 12. 关于数组初始化, int[] arr = new int[3]{1,2};  说法正确的是( )。 A. 编译错误,初始化元素数量与长度不符 B. 正常编译,第三个元素默认  0  C. 运行时报错 D. 语法错误 【答案】B 【解析】数组创建时指定长度,初始化元素可少于长度,剩余元素用类型默认值( int  是  0  ),正常编译,选B 。 13. 有数组  int[] nums = {5,3,7,1};  ,用  Array.Sort(nums);  排序后,数组元素顺序是( )。 A.  1,3,5,7  B.  7,5,3,1  C.  5,3,7,1 (不变 ) D. 随机顺序 【答案】A 【解析】 Array.Sort  对一维数组默认升序排序,排序后为  1,3,5,7  ,选A 。 14. 以下代码输出结果是( )。 int[] arr = {1,2,3}; int[] arr2 = arr; arr2[0] = 10; Console.WriteLine(arr[0]); A.  1  B.  10  C. 编译错误 D. 运行时错误 【答案】B 【解析】 arr2  是  arr  的引用(数组是引用类型 ),修改  arr2  元素会影响  arr  ,输出  10  ,选B 。 15. 二维数组  int[,] arr = new int[3,2];  ,元素总个数是( )。 A.  3  B.  2  C.  6  D.  5  【答案】C 【解析】二维数组元素个数=行数×列数, 3×2=6  ,选C 。 16. 执行  int[] arr = Enumerable.Range(1,5).ToArray();  ,数组元素是( )。 A.  1,2,3,4,5  B.  0,1,2,3,4  C.  2,3,4,5,6  D. 随机数 【答案】A 【解析】 Enumerable.Range(1,5)  生成从  1  开始,共  5  个连续整数,转数组后是  1,2,3,4,5  ,选A 。 17. 数组  int[] nums = {8,2,6};  ,以下求最大值的正确代码是( )。 A.  int max = nums[0]; for (int i=1;i<nums.Length;i++) { if (nums[i]>max) max = nums[i]; }  B.  int max = nums.Max(); (需引用  System.Linq  ) C. 以上两种都对 D. 以上两种都错 【答案】C 【解析】A 通过循环遍历比较找最大值;B 借助  LINQ  的  Max  方法(需  using System.Linq;  ),都可实现,选C 。 18. 声明  int[][] jaggedArr = new int[3][];  ,关于该数组说法正确的是( )。 A. 这是二维数组 B. 是交错数组( jagged array ),每个子数组需单独初始化 C. 元素默认值全为  0  D. 长度不可变 【答案】B 【解析】 int[][]  是交错数组(数组的数组 ),不是二维数组,需为每个子数组单独  new  初始化,A 错误;元素未初始化时是  null  ,C 错误;交错数组长度(子数组个数 )创建后不可变,但子数组长度可变,这里强调概念,B 正确 。 19. 以下创建交错数组并初始化的正确代码是( )。 A.  int[][] arr = new int[2][3]{{1,2},{3,4}};  B.  int[][] arr = {{1,2},{3,4,5}};  C.  int[][] arr = new int[2][]; arr[0] = new int[]{1,2}; arr[1] = new int[]{3,4,5};  D.  int[][] arr = new int[][]{new int[2]{1,2}, new int[3]{3,4,5}};  【答案】C 【解析】A 交错数组不能用  new int[2][3]  语法;B 缺少  new  初始化;D 语法错误,正确是先声明数组长度,再初始化子数组,C 正确 20. 执行  int[] arr = {3,1,2}; Array.Reverse(arr);  ,数组元素变为( )。 A.  2,1,3  B.  3,2,1  C.  1,2,3  D. 不变 【答案】A 【解析】 Array.Reverse  反转数组元素,原数组  {3,1,2}  反转后为  {2,1,3}  ,选A 。 21. 有数组  int[] nums = {4,4,4};  ,判断是否所有元素相等,正确代码是( )。 A.  bool isEqual = nums.Distinct().Count() == 1; (需  System.Linq  ) B.  bool isEqual = true; for (int i=1;i<nums.Length;i++) { if (nums[i]!=nums[0]) { isEqual = false; break; } }  C. 以上两种都对 D. 以上两种都错 【答案】C 【解析】A 用  Distinct  去重后判断数量;B 循环比较每个元素与第一个元素,都可实现,选C 。 22. 数组  string[] strs = {"Hello","World"};  ,拼接成  HelloWorld  的正确代码是( )。 A.  string result = string.Join("", strs);  B.  string result = strs[0] + strs[1];  C. 以上两种都对 D. 以上两种都错 【答案】C 【解析】A 用  string.Join  拼接数组元素(分隔符为空 );B 直接字符串拼接,都可得到  HelloWorld  ,选C 。 23. 执行  int[] arr = {1,2,3}; int[] newArr = arr.Select(x => x*2).ToArray();  (需  System.Linq  ), newArr  元素是( )。 A.  1,2,3  B.  2,4,6  C.  3,6,9  D. 报错 【答案】B 【解析】 Select  方法遍历数组,每个元素乘以  2  ,结果数组是  {2,4,6}  ,选B 。 24. 以下代码输出结果是( )。 int[,] arr = {{1,2},{3,4}}; for (int i=0;i<2;i++) { for (int j=0;j<2;j++) { Console.Write(arr[j,i] + " "); } } A.  1 3 2 4  B.  1 2 3 4  C.  2 4 1 3  D.  3 4 1 2  【答案】A 【解析】内层循环交换了行列下标,依次访问  arr[0,0]=1 、 arr[1,0]=3 、 arr[0,1]=2 、 arr[1,1]=4  ,输出  1 3 2 4  ,选A 。 25. 数组  int[] nums = {5,3,7};  ,找出索引为奇数的元素之和,正确代码是( )。 A.  int sum = 0; for (int i=0;i<nums.Length;i++) { if (i%2!=0) sum += nums[i]; }  B.  int sum = nums.Where((x,i) => i%2!=0).Sum(); (需  System.Linq  ) C. 以上两种都对 D. 以上两种都错 【答案】C 【解析】A 循环判断下标奇偶性累加;B 用  LINQ  的  Where  结合索引筛选、 Sum  求和,都可实现,选C 。 26. 若一维数组  int[] arr = {1,2,3,4,5}; ,以下访问正确的是( ) A.  arr[5]  B.  arr[0]  C.  arr[1]  D.  arr[6]  【答案】B 【解析】C# 数组索引从  0  开始,最大索引为  数组长度 1 (此数组长度为 5,最大索引是 4 ), arr[0]  访问第一个元素,A、D 超出索引范围,C 负索引不合法。 27. 声明二维数组语法正确的是( ) A.  int[2,3] arr;  B.  int[,] arr = new int[2,3];  C.  int[][] arr = new int[2][3];  D.  int[,] arr = {{1,2},{3,4}};  【答案】B 【解析】A 语法错误,C# 二维数组声明用  [,]  且初始化需分步(如锯齿数组);C 是锯齿数组(数组的数组)语法,不能直接  new int[2][3] ;D 初始化缺少  new int[,]  关键字,正确写法是  int[,] arr = new int[,] {{1,2},{3,4}};  ,B 是标准二维数组声明。 28. 锯齿数组  int[][] jagged = new int[3][]; ,以下初始化正确的是( ) A.  jagged[0] = new int[2] {1,2};  B.  jagged = new int[3,2];  C.  jagged[1] = new int[] {3};  D. 以上都对 【答案】A 【解析】锯齿数组是“数组的数组”,每个子数组长度可独立定义。A 正确初始化第一个子数组长度为 2;B 试图用二维数组语法赋值,类型不匹配;C 子数组初始化需指定长度(如  new int[1] {3}  )或用  new int[] {3}  但需保证语法完整,实际写  jagged[1] = new int[] {3};  也可,不过更规范是指定长度,本题严格看 A 最标准(题目设计侧重区分锯齿与二维,选 A )。 29. 数组  int[] nums = new int[5];  ,默认每个元素值是( ) A.  null  B.  0  C. 随机值 D. 未定义 【答案】B 【解析】C# 中值类型数组(如  int  )初始化时,元素默认值为对应类型的“零值”, int  的零值是  0  ;引用类型数组默认值才是  null  。 30. 二维数组  int[,] arr = new int[2,3] {{1,2,3},{4,5,6}};  , arr[1,2]  的值是( ) A.  3  B.  6  C.  5  D. 下标越界 【答案】B 【解析】二维数组  arr[行索引, 列索引]  ,行、列索引均从  0  开始。 arr[1,2]  对应第二行(索引 1 )第三列(索引 2 ),值为  6  。 31. 以下创建数组的方式,能直接初始化元素的是( ) A.  int[] arr = new int[3];  B.  string[] names = {"Tom", "Jerry"};  C.  double[,] scores = new double[2,2];  D.  char[][] chars = new char[2][];  【答案】B 【解析】B 是数组初始化的简洁语法,直接用  {}  赋值元素;A、C 仅创建空数组,需后续赋值;D 是锯齿数组空声明,未初始化子数组。 32. 数组长度属性是( ) A.  Length  B.  Count  C.  Size  D.  Capacity  【答案】A 【解析】C# 中数组通过  Length  属性获取长度(如  int[] arr = {1,2}; arr.Length == 2  ); Count  多为集合(如  List  )的属性; Size  不是数组标准属性; Capacity  是  List  预分配容量的属性。 33. 以下关于数组的说法,错误的是( ) A. 数组元素类型必须相同 B. 数组一旦创建,长度不可变 C. 可以用  foreach  遍历数组 D. 数组索引可以是浮点数 【答案】D 【解析】数组索引必须是整数(从  0  开始的有序整数),不能用浮点数;A、B 是数组基本特性(元素同类型、长度固定);C  foreach  支持遍历数组。 34. 锯齿数组  int[][] jagged = { new int[] {1,2}, new int[] {3} };  ,总元素个数是( ) A.  2  B.  3  C.  4  D. 不确定 【答案】B 【解析】第一个子数组有 2 个元素,第二个子数组有 1 个元素,总元素数  2 + 1 = 3  。 35. 以下代码运行后, result  的值是( ) int[] arr = {1,2,3,4}; int result = arr[1] + arr[3]; A.  3  B.  6  C.  5  D.  7  【答案】B 【解析】 arr[1]  是  2  , arr[3]  是  4  ,相加得  2 + 4 = 6  。 2、 判断题(本题共10小题,每题1分,共10分) 1. 声明  int[] arr = new int[5];  后, arr[0]  默认值为  0 ,因此可直接通过  arr[0] = 10;  修改值。( ) 【答案】√ 【解析】数组创建时,元素会被编译器初始化为对应类型默认值( int  类型默认  0  ),后续可通过下标修改值。 2. 二维数组  int[,] arr = { {1,2}, {3,4} };  ,可直接通过  arr[2,0]  访问第三行第一列元素。( ) 【答案】× 【解析】二维数组下标从  0  开始, arr  只有 2 行(下标  0 、 1  ), arr[2,0]  会导致下标越界异常。 3.  foreach  遍历数组时,迭代变量是只读的,因此无法在  foreach  循环内修改数组元素的值。( ) 【答案】√ 【解析】 foreach  的迭代变量是数组元素的“副本”(值类型)或“引用副本”(引用类型),赋值操作不会影响原数组,且语法上不允许直接修改。 4. 数组  int[] nums = { 1, 2, 3 };  ,执行  nums = new int[4] { 4, 5, 6, 7 };  后,原数组  { 1, 2, 3 }  会被自动销毁。( ) 【答案】× 【解析】 nums  重新赋值后,原数组对象会成为“垃圾”,但销毁由 C# 垃圾回收机制(GC)自动处理,并非“立即销毁”。 5. 声明  int[] arr;  后,直接执行  Console.WriteLine(arr.Length);  会引发 编译错误。( ) 【答案】× 【解析】 arr  仅声明未初始化(未  new  分配空间 ),直接访问  Length  会引发 运行时异常( NullReferenceException  ),编译可通过。 6. 交错数组  int[][] jaggedArr = new int[3][];  ,每个子数组需单独初始化,否则默认值为  null 。( ) 【答案】√ 【解析】交错数组是“数组的数组”,声明后需为每个子数组  new int[]  分配空间,否则子数组默认是  null 。 7. 数组  int[] arr = { 1, 2, 3 };  ,执行  Array.Sort(arr);  后,数组会按降序排列。( ) 【答案】× 【解析】 Array.Sort  对一维数组默认按升序排序,若需降序,需结合  Comparison  或  LINQ  处理。 8. 二维数组  int[,] arr = new int[2, 3];  , arr.GetLength(0)  返回行数( 2  ), arr.GetLength(1)  返回列数( 3  )。( ) 【答案】√ 【解析】 GetLength(index)  方法中, index = 0  对应行数, index = 1  对应列数(多维数组以此类推 )。 9. 数组元素的索引必须是非负整数,且不能超过数组长度 1,否则会引发下标越界异常。( ) 【答案】√ 【解析】C# 数组索引从  0  开始,最大索引为  数组长度 1 ,越界会抛出  IndexOutOfRangeException 。 10. 声明  int[] arr = { 1, 2, 3 };  ,执行  arr[0] = arr[1] + arr[2];  后, arr[0]  的值为  5 。( ) 【答案】√ 【解析】 arr[1]  是  2 , arr[2]  是  3 ,相加赋值给  arr[0] ,结果为  5 。 三、程序分析题(共 2 小题,每小题 5 分,共 10 分 ) 1. 程序运行后,控制台输出是 int[] nums = { 8, 3, 5, 9, 2 }; int temp = 0; for (int i = 0; i < nums.Length 1; i++) { for (int j = 0; j < nums.Length 1 i; j++) { if (nums[j] > nums[j + 1]) { temp = nums[j]; nums[j] = nums[j + 1]; nums[j + 1] = temp; } } } foreach (int num in nums) { Console.Write(num + " "); } 【答案】 2 3 5 8 9  【解析】这是冒泡排序算法,通过相邻元素比较、交换,将数组按升序排列,最终输出排序后的数组。 2. 程序运行后,控制台输出是 int[,] matrix = { { 1, 2, 3 }, { 4, 5, 6 }, { 7, 8, 9 } }; int sum = 0; for (int i = 0; i < 3; i++) { sum += matrix[i, i]; } Console.WriteLine( sum); 【答案】 15  【解析】遍历二维数组的主对角线( matrix[0,0] 、 matrix[1,1] 、 matrix[2,2]  ),求和为  1 + 5 + 9 = 15 。 四、 程序填空题(共 2 小题,每空 5 分,共 10 分 ) 1.将数组  { 10, 20, 30, 40, 50 }  逆序存储(即变为  { 50, 40, 30, 20, 10 }  ),补全代码。 int[] arr = { 10, 20, 30, 40, 50 }; int len = arr.Length; for (int i = 0; i < len / 2; i++) { // 交换 arr[i] 和 arr[len- 1-i] int temp = arr[i]; arr[len - 1 - i] = temp; } foreach (int num in arr) { Console.Write(num + " "); } 【答案】arr[i] = arr[len - 1 - i]; 【解析】双指针指向前边与后边元素。 2. 程序填空题 需求:统计数组  { 1, 2, 3, 4, 5, 6 }  中偶数的个数,补全代码。 int[] nums = { 1, 2, 3, 4, 5, 6 }; int count = 0; foreach (int num in nums) { if { count++; } } Console.WriteLine("偶数个数:" + count); 【答案】(num % 2 == 0) 【解析】遍历数组,通过  num % 2 == 0  判断偶数,统计个数。 原创精品资源学科网独家享有版权,侵权必究! 学科网(北京)股份有限公司 学科网(北京)股份有限公司 $$

资源预览图

第六章 数组《算法与程序设计--C#》(河北科学技术出版社)章节过关卷
1
第六章 数组《算法与程序设计--C#》(河北科学技术出版社)章节过关卷
2
第六章 数组《算法与程序设计--C#》(河北科学技术出版社)章节过关卷
3
所属专辑
由于学科网是一个信息分享及获取的平台,不确保部分用户上传资料的 来源及知识产权归属。如您发现相关资料侵犯您的合法权益,请联系学科网,我们核实后将及时进行处理。