1、已有程序框架如下,其中有部分代码缺失,以[--a--]的形式标注。 根据注释中的要求填上与注释相匹配的代码(可以提交全部代码,也可只提交缺失部分代码。要在注释标出abcdef)。 贴上代码运行截图。 class Delegates { //创建委托类型 public delegate bool NumberPredicate(int number); static void Main(string[] args) { Random rd = new Random(); int[] numbers = new int[15]; for (int i = 0; i < numbers.Length; i++) numbers[i] = rd.Next(1, 100); Console.WriteLine("原始数组:"); Array.ForEach(numbers, x => Console.Write($"{x} ")); //生成委托实例 NumberPredicate evenPredicate = IsEven; //对数值15,利用委托变量来判断该值是否为偶数 Console.WriteLine("利用委托变量evenPredicate判断15是否偶数: {0}", [--a--]); //选出偶数 int[] evenNumbers = FilterArray(numbers, [--b--]); //描述并输出 DisplayList("numbers数组中的偶数有 : ", evenNumbers); //选出素数并输出 [--c--] //模仿选出偶数、选出素数等操作,请自行用lambda表达式创建一个委托,并进行数据过滤与输出 [--d--] } //选择满足predicate的数组元素 private static int[] FilterArray(int[] intArray, NumberPredicate predicate) {//可以运用动态数组List的知识。也可以写两个循环,先得到结果数组长度,再生成数组 [--e--] } //判断是否偶数 private static bool IsEven(int number) { return (number % 2 == 0); } //判断是否素数 private static bool IsPrime(int number) { [--f--] } //打印description,并输出数组元素 private static void DisplayList(string description, int[] list) { Console.WriteLine(description); foreach (int i in list) { Console.Write($"{i} "); } Console.WriteLine(); } } 解答: using System; using System.Collections.Generic; using System.Data; using System.Diagnostics; using System.Runtime.Remoting.Metadata.W3cXsd2001; using System.Xml.Schema; using static System.Console; namespace ConsoleApp6 { public delegate bool NumberPredicate(int number); class Delegates { //创建委托类型 static void Main(string[] args) { Random rd = new Random(); int[] numbers = new int[15]; for (int i = 0; i < numbers.Length; i++) numbers[i] = rd.Next(1, 100); Console.WriteLine("原始数组:"); Array.ForEach(numbers, x => Console.Write($"{x} ")); //生成委托实例 NumberPredicate evenPredicate = IsEven; //对数值15,利用委托变量来判断该值是否为偶数 Console.WriteLine("利用委托变量evenPredicate判断15是否偶数: {0}", evenPredicate(15));//a //选出偶数 int[] evenNumbers = FilterArray(numbers, evenPredicate);//b //描述并输出 DisplayList("numbers数组中的偶数有 : ", evenNumbers); //选出素数并输出 int[] primeNumbers = FilterArray(numbers, IsPrime);//c DisplayList("numbers数组中的素数有 : ", primeNumbers); //模仿选出偶数、选出素数等操作,请自行用lambda表达式创建一个委托,并进行数据过滤与输出 NumberPredicate fiveTimes = x => (x % 5) == 0; int[] fiveNumbers = FilterArray(numbers, fiveTimes);//d DisplayList("numbers数组中的5的倍数有 : ", fiveNumbers); } //选择满足predicate的数组元素 private static int[] FilterArray(int[] intArray, NumberPredicate predicate)//e {//可以运用动态数组List的知识。也可以写两个循环,先得到结果数组长度,再生成数组 int size = 0; for (int i = 0; i < intArray.Length; i++) { if (predicate(intArray[i])) size++; } int[] results = new int[size]; int index = 0; for (int i = 0; i < intArray.Length; i++) { if (predicate(intArray[i])) results[index++] = intArray[i]; } return results; /* List res = new List(); for (int i = 0; i < intArray.Length; i++) { if (predicate(intArray[i])) { res.Add(intArray[i]); } } return res.ToArray();*/ } //判断是否偶数 private static bool IsEven(int number) { return (number % 2 == 0); } //判断是否素数 private static bool IsPrime(int number) {//f if (number <= 1) return false; for (int i = 2; i <= (int)(Math.Sqrt(number)); i++) { if (number % i == 0) return false; } return true; } //打印description,并输出数组元素 private static void DisplayList(string description, int[] list) { Console.WriteLine(description); foreach (int i in list) { Console.Write($"{i}\t"); } Console.WriteLine(); } } }