《算法与程序设计-C#》算法与程序基础(2)(举一反三考点练)-课后自测(卷2)

2025-09-02
| 2份
| 31页
| 115人阅读
| 0人下载

内容正文:

举一反三考点练 《算法与程序设计-C#》算法与程序基础-课后自测 知识点一 算法与程序的基本概念 1.(程序分析题)阅读以下代码,分析其功能。 using System; class Program { static void Main() { int[] arr = { 5, 2, 9, 1, 5, 6 }; for (int i = 0; i < arr.Length - 1; i++) { for (int j = 0; j < arr.Length - 1 - i; j++) { if (arr[j] > arr[j + 1]) { int temp = arr[j]; arr[j] = arr[j + 1]; arr[j + 1] = temp; } } } foreach (int num in arr) { Console.Write(num + " "); } } } 【答案】该代码实现了冒泡排序算法,对数组`arr`进行升序排序,并输出排序后的结果。 2.(程序分析题)阅读以下代码,分析其功能。 using System; class Program { static void Main() { int[] arr = { 3, 6, 9, 12, 15 }; int target = 9; int left = 0; int right = arr.Length - 1; while (left <= right) { int mid = (left + right) / 2; if (arr[mid] == target) { Console.WriteLine("目标值在数组中的索引为:" + mid); break; } else if (arr[mid] < target) { left = mid + 1; } else { right = mid - 1; } } if (left > right) { Console.WriteLine("数组中不存在目标值"); } } } 【答案】该代码实现了二分查找算法,在有序数组`arr`中查找目标值`target`,并输出目标值在数组中的索引,如果数组中不存在目标值则输出相应提示信息。 3.(程序改错题)以下代码存在错误,请找出并改正。 using System; class Program { static void Main() { int[] arr = { 3, 5, 7, 9, 11 }; int target = 8; int left = 0; int right = arr.Length; while (left <= right) { int mid = (left + right) / 2; if (arr[mid] == target) { Console.WriteLine("目标值在数组中的索引为:" + mid); break; } else if (arr[mid] < target) { left = mid + 1; } else { right = mid - 1; } } if (left > right) { Console.WriteLine("数组中不存在目标值"); } } } 【答案】将`int right = arr.Length;`改为`int right = arr.Length - 1;`,因为数组的索引是从0开始的,最大索引应该是`arr.Length - 1`。 4.(程序填空题)请在以下代码的空白处填入合适的代码,实现冒泡排序算法。 using System; class Program { static void Main() { int[] arr = { 6, 3, 9, 1, 5, 6 }; for (int i = 0; i < arr.Length - 1; i++) { for (int j = 0; j < arr.Length - 1 - i; j++) { if (arr[j] > arr[j + 1]) { int temp = arr[j]; arr[j] = arr[j + 1]; (____________); } } } foreach (int num in arr) { Console.Write(num + " "); } } } 【答案】`arr[j + 1] = temp;` 5.(程序填空题)请在以下代码的空白处填入合适的代码,实现顺序查找算法。 using System; class Program { static void Main() { int[] arr = { 2, 4, 6, 8, 10 }; int target = 6; bool found = false; for (int i = 0; i < arr.Length; i++) { if (arr[i] == target) { Console.WriteLine("目标值在数组中的索引为:" + i); (____________); } } if (!found) { Console.WriteLine("数组中不存在目标值"); } } } 【答案】`found = true;` 知识点二 算法与程序的实现过程 1.(程序分析题)阅读以下代码,分析其功能。 using System; class Program { static void Main() { int n = 5; int result = Factorial(n); Console.WriteLine(n + "的阶乘是:" + result); } static int Factorial(int n) { if (n == 1) { return 1; } else { return n * Factorial(n - 1); } } } 【答案】该代码实现了递归算法计算阶乘,计算`n`的阶乘,并输出结果。 2.(程序分析题)阅读以下代码,分析其功能。 using System; class Program { static void Main() { int[] arr = { 4, 2, 8, 5, 1 }; for (int i = 0; i < arr.Length; i++) { int minIndex = i; for (int j = i + 1; j < arr.Length; j++) { if (arr[j] < arr[minIndex]) { minIndex = j; } } int temp = arr[minIndex]; arr[minIndex] = arr[i]; arr[i] = temp; } foreach (int num in arr) { Console.Write(num + " "); } } } 【答案】该代码实现了选择排序算法,对数组`arr`进行升序排序,并输出排序后的结果。 3.(程序改错题)以下代码存在错误,请找出并改正。 using System; class Program { static void Main() { int[] arr = { 4, 2, 8, 5, 1 }; for (int i = 0; i < arr.Length; i++) { int minIndex = i; for (int j = i + 1; j < arr.Length; j++) { if (arr[j] > arr[minIndex]) { minIndex = j; } } int temp = arr[minIndex]; arr[minIndex] = arr[i]; arr[i] = temp; } foreach (int num in arr) { Console.Write(num + " "); } } } 【答案】将`if (arr[j] > arr[minIndex])`改为`if (arr[j] < arr[minIndex])`,因为选择排序是找最小值的索引,所以应该是`arr[j]`小于`arr[minIndex]`时才更新`minIndex`。 4.(程序填空题)请在以下代码的空白处填入合适的代码,实现选择排序算法。 using System; class Program { static void Main() { int[] arr = { 4, 2, 8, 5, 1 }; for (int i = 0; i < arr.Length; i++) { int minIndex = i; for (int j = i + 1; j < arr.Length; j++) { if (arr[j] < arr[minIndex]) { (____________); } } int temp = arr[minIndex]; arr[minIndex] = arr[i]; arr[i] = temp; } foreach (int num in arr) { Console.Write(num + " "); } } } 【答案】`minIndex = j;` 5.(程序填空题)请在以下代码的空白处填入合适的代码,实现递归计算阶乘。 using System; class Program { static void Main() { int n = 6; int result = Factorial(n); Console.WriteLine(n + "的阶乘是:" + result); } static int Factorial(int n) { if (n == 0) { return 1; } else { return n * (____________); } } } 【答案】`Factorial(n - 1);` 知识点三 典型算法与程序实例 1.(程序分析题)阅读以下代码,分析其功能。 using System; class Program { static void Main() { int[] arr = { 2, 4, 6, 8, 10 }; int target = 6; bool found = false; for (int i = 0; i < arr.Length; i++) { if (arr[i] == target) { Console.WriteLine("目标值在数组中的索引为:" + i); found = true; break; } } if (!found) { Console.WriteLine("数组中不存在目标值"); } } } 【答案】该代码实现了顺序查找算法,在数组`arr`中查找目标值`target`,并输出目标值在数组中的索引,如果数组中不存在目标值则输出相应提示信息。 2.(程序分析题)阅读以下代码,分析其功能。 using System; class Program { static void Main() { int n = 6; int result = Fibonacci(n); Console.WriteLine(n + "的斐波那契数列值是:" + result); } static int Fibonacci(int n) { if (n <= 1) { return n; } else { return Fibonacci(n - 1) + Fibonacci(n - 2); } } } 【答案】该代码实现了递归算法计算斐波那契数列,计算`n`的斐波那契数列值,并输出结果。 3.(程序改错题)以下代码存在错误,请找出并改正。 using System; class Program { static void Main() { int n = 6; int result = Factorial(n); Console.WriteLine(n + "的阶乘是:" + result); } static int Factorial(int n) { if (n == 0) { return 1; } else { return n * Factorial(n); } } } 【答案】将`return n * Factorial(n);`改为`return n * Factorial(n - 1);`,因为递归调用时应该是`n - 1`,否则会导致无限递归。 4.(程序填空题)请在以下代码的空白处填入合适的代码,实现二分查找算法。 using System; class Program { static void Main() { int[] arr = { 3, 5, 7, 9, 11 }; int target = 8; int left = 0; int right = arr.Length - 1; while (left <= right) { int mid = (left + right) / 2; if (arr[mid] == target) { Console.WriteLine("目标值在数组中的索引为:" + mid); break; } else if (arr[mid] < target) { (____________); } else { right = mid - 1; } } if (left > right) { Console.WriteLine("数组中不存在目标值"); } } } 【答案】`left = mid + 1;` 5.(程序填空题)请在以下代码的空白处填入合适的代码,实现选择排序算法。 using System; class Program { static void Main() { int[] arr = { 4, 2, 8, 5, 1 }; for (int i = 0; i < arr.Length; i++) { int minIndex = i; for (int j = i + 1; j < arr.Length; j++) { if (arr[j] < arr[minIndex]) { (____________); } } int temp = arr[minIndex]; arr[minIndex] = arr[i]; arr[i] = temp; } foreach (int num in arr) { Console.Write(num + " "); } } } 【答案】`minIndex = j;` 原创精品资源学科网独家享有版权,侵权必究!2 学科网(北京)股份有限公司 学科网(北京)股份有限公司 $$ 举一反三考点练 《算法与程序设计-C#》算法与程序基础-课后自测 知识点一 算法与程序的基本概念 1.(程序分析题)阅读以下代码,分析其功能。 using System; class Program { static void Main() { int[] arr = { 5, 2, 9, 1, 5, 6 }; for (int i = 0; i < arr.Length - 1; i++) { for (int j = 0; j < arr.Length - 1 - i; j++) { if (arr[j] > arr[j + 1]) { int temp = arr[j]; arr[j] = arr[j + 1]; arr[j + 1] = temp; } } } foreach (int num in arr) { Console.Write(num + " "); } } } 2.(程序分析题)阅读以下代码,分析其功能。 using System; class Program { static void Main() { int[] arr = { 3, 6, 9, 12, 15 }; int target = 9; int left = 0; int right = arr.Length - 1; while (left <= right) { int mid = (left + right) / 2; if (arr[mid] == target) { Console.WriteLine("目标值在数组中的索引为:" + mid); break; } else if (arr[mid] < target) { left = mid + 1; } else { right = mid - 1; } } if (left > right) { Console.WriteLine("数组中不存在目标值"); } } } 3.(程序改错题)以下代码存在错误,请找出并改正。 using System; class Program { static void Main() { int[] arr = { 3, 5, 7, 9, 11 }; int target = 8; int left = 0; int right = arr.Length; while (left <= right) { int mid = (left + right) / 2; if (arr[mid] == target) { Console.WriteLine("目标值在数组中的索引为:" + mid); break; } else if (arr[mid] < target) { left = mid + 1; } else { right = mid - 1; } } if (left > right) { Console.WriteLine("数组中不存在目标值"); } } } 4.(程序填空题)请在以下代码的空白处填入合适的代码,实现冒泡排序算法。 using System; class Program { static void Main() { int[] arr = { 6, 3, 9, 1, 5, 6 }; for (int i = 0; i < arr.Length - 1; i++) { for (int j = 0; j < arr.Length - 1 - i; j++) { if (arr[j] > arr[j + 1]) { int temp = arr[j]; arr[j] = arr[j + 1]; (____________); } } } foreach (int num in arr) { Console.Write(num + " "); } } } 5.(程序填空题)请在以下代码的空白处填入合适的代码,实现顺序查找算法。 using System; class Program { static void Main() { int[] arr = { 2, 4, 6, 8, 10 }; int target = 6; bool found = false; for (int i = 0; i < arr.Length; i++) { if (arr[i] == target) { Console.WriteLine("目标值在数组中的索引为:" + i); (____________); } } if (!found) { Console.WriteLine("数组中不存在目标值"); } } } 知识点二 算法与程序的实现过程 1.(程序分析题)阅读以下代码,分析其功能。 using System; class Program { static void Main() { int n = 5; int result = Factorial(n); Console.WriteLine(n + "的阶乘是:" + result); } static int Factorial(int n) { if (n == 1) { return 1; } else { return n * Factorial(n - 1); } } } 2.(程序分析题)阅读以下代码,分析其功能。 using System; class Program { static void Main() { int[] arr = { 4, 2, 8, 5, 1 }; for (int i = 0; i < arr.Length; i++) { int minIndex = i; for (int j = i + 1; j < arr.Length; j++) { if (arr[j] < arr[minIndex]) { minIndex = j; } } int temp = arr[minIndex]; arr[minIndex] = arr[i]; arr[i] = temp; } foreach (int num in arr) { Console.Write(num + " "); } } } 3.(程序改错题)以下代码存在错误,请找出并改正。 using System; class Program { static void Main() { int[] arr = { 4, 2, 8, 5, 1 }; for (int i = 0; i < arr.Length; i++) { int minIndex = i; for (int j = i + 1; j < arr.Length; j++) { if (arr[j] > arr[minIndex]) { minIndex = j; } } int temp = arr[minIndex]; arr[minIndex] = arr[i]; arr[i] = temp; } foreach (int num in arr) { Console.Write(num + " "); } } } 4.(程序填空题)请在以下代码的空白处填入合适的代码,实现选择排序算法。 using System; class Program { static void Main() { int[] arr = { 4, 2, 8, 5, 1 }; for (int i = 0; i < arr.Length; i++) { int minIndex = i; for (int j = i + 1; j < arr.Length; j++) { if (arr[j] < arr[minIndex]) { (____________); } } int temp = arr[minIndex]; arr[minIndex] = arr[i]; arr[i] = temp; } foreach (int num in arr) { Console.Write(num + " "); } } } 5.(程序填空题)请在以下代码的空白处填入合适的代码,实现递归计算阶乘。 using System; class Program { static void Main() { int n = 6; int result = Factorial(n); Console.WriteLine(n + "的阶乘是:" + result); } static int Factorial(int n) { if (n == 0) { return 1; } else { return n * (____________); } } } 知识点三 典型算法与程序实例 1.(程序分析题)阅读以下代码,分析其功能。 using System; class Program { static void Main() { int[] arr = { 2, 4, 6, 8, 10 }; int target = 6; bool found = false; for (int i = 0; i < arr.Length; i++) { if (arr[i] == target) { Console.WriteLine("目标值在数组中的索引为:" + i); found = true; break; } } if (!found) { Console.WriteLine("数组中不存在目标值"); } } } 2.(程序分析题)阅读以下代码,分析其功能。 using System; class Program { static void Main() { int n = 6; int result = Fibonacci(n); Console.WriteLine(n + "的斐波那契数列值是:" + result); } static int Fibonacci(int n) { if (n <= 1) { return n; } else { return Fibonacci(n - 1) + Fibonacci(n - 2); } } } 3.(程序改错题)以下代码存在错误,请找出并改正。 using System; class Program { static void Main() { int n = 6; int result = Factorial(n); Console.WriteLine(n + "的阶乘是:" + result); } static int Factorial(int n) { if (n == 0) { return 1; } else { return n * Factorial(n); } } } 4.(程序填空题)请在以下代码的空白处填入合适的代码,实现二分查找算法。 using System; class Program { static void Main() { int[] arr = { 3, 5, 7, 9, 11 }; int target = 8; int left = 0; int right = arr.Length - 1; while (left <= right) { int mid = (left + right) / 2; if (arr[mid] == target) { Console.WriteLine("目标值在数组中的索引为:" + mid); break; } else if (arr[mid] < target) { (____________); } else { right = mid - 1; } } if (left > right) { Console.WriteLine("数组中不存在目标值"); } } } 5.(程序填空题)请在以下代码的空白处填入合适的代码,实现选择排序算法。 using System; class Program { static void Main() { int[] arr = { 4, 2, 8, 5, 1 }; for (int i = 0; i < arr.Length; i++) { int minIndex = i; for (int j = i + 1; j < arr.Length; j++) { if (arr[j] < arr[minIndex]) { (____________); } } int temp = arr[minIndex]; arr[minIndex] = arr[i]; arr[i] = temp; } foreach (int num in arr) { Console.Write(num + " "); } } } 原创精品资源学科网独家享有版权,侵权必究!2 学科网(北京)股份有限公司 学科网(北京)股份有限公司 $$

资源预览图

《算法与程序设计-C#》算法与程序基础(2)(举一反三考点练)-课后自测(卷2)
1
《算法与程序设计-C#》算法与程序基础(2)(举一反三考点练)-课后自测(卷2)
2
《算法与程序设计-C#》算法与程序基础(2)(举一反三考点练)-课后自测(卷2)
3
所属专辑
由于学科网是一个信息分享及获取的平台,不确保部分用户上传资料的 来源及知识产权归属。如您发现相关资料侵犯您的合法权益,请联系学科网,我们核实后将及时进行处理。