C#如何实现array1与array2反向相乘,再将结果反向乘array3
C# 数组反向逐位相乘实现方案
核心逻辑
我们可以先封装一个通用的复用方法,来处理「数组与另一个数组反向逐位相乘」的逻辑,后续两次运算直接调用该方法即可:
- 方法接收两个等长的int数组作为入参
- 先复制第二个数组作为临时数组,反转该临时数组(避免修改原始数组的值)
- 按索引逐位计算两个数组对应位置的乘积,存入结果数组返回
完整可运行代码
internal class Program { static void Main(string[] args) { int[] array1 = { 2, 4, 6, 8, 10, 12, 14, 16 }; Console.Write("\nArray 1: "); Console.WriteLine(String.Join(", ", array1)); int[] array2 = { 8, 7, 6, 5, 4, 3, 2, 1 }; Console.Write("\nArray 2: "); Console.WriteLine(String.Join(", ", array2)); int[] array3 = { 3, 4, 3, 0, 1, 7, 4, 2 }; Console.Write("\nArray 3: "); Console.WriteLine(String.Join(", ", array3)); // 第一次运算:array1 和 array2 反向逐位相乘 int[] midResult = ReverseMultiply(array1, array2); Console.Write("\narray1 与 array2 反向相乘结果:"); Console.WriteLine(String.Join(", ", midResult)); // 第二次运算:中间结果 和 array3 反向逐位相乘 int[] finalResult = ReverseMultiply(midResult, array3); Console.Write("\n中间结果与 array3 反向相乘最终结果:"); Console.WriteLine(String.Join(", ", finalResult)); Console.Read(); } /// <summary> /// 两个等长int数组反向逐位相乘 /// </summary> /// <param name="a">原数组</param> /// <param name="b">需要反转后相乘的数组</param> /// <returns>逐位相乘结果数组</returns> static int[] ReverseMultiply(int[] a, int[] b) { if (a.Length != b.Length) { throw new ArgumentException("两个输入数组长度必须一致"); } // 复制b数组后反转,避免修改原b数组 int[] reversedB = (int[])b.Clone(); Array.Reverse(reversedB); // 逐位相乘 int[] result = new int[a.Length]; for (int i = 0; i < a.Length; i++) { result[i] = a[i] * reversedB[i]; } return result; } }
输出说明
你问题中给出的预期输出存在笔误,8位元素相乘后输出应为8位:{2, 8, 18, 32, 50, 72, 98, 128},和array3二次反向相乘后的最终结果为 {4, 32, 294, 0, 50, 128, 54, 6}。
内容的提问来源于stack exchange,提问作者nica123
相关产品推荐
相关产品推荐

