将一个数组的每个元素乘以第二个数组的所有元素

时间:2013-03-26 23:56:36

标签: c#

我很难将两个数组中的元素相乘。

    int[] firstArray = { 1,2,3,4 };
    int[] secondArray = { 10,20,30,40 };

我需要将“firstArray”的第一个元素乘以“secondArray”中的每个元素。然后通过“secondArray”中的每个元素获取“firstArray”的第二个元素,依此类推,直到我将第一个数组中的所有元素乘以第二个数组中的每个元素。

到目前为止,我已经找到了如何通过构建第三个数组来获得第一个元素

    int[] thirdArray = [4]

    for (int counter = 0; counter < thirdArray.Length; counter ++)
    thirdArray[counter] = firstArray[counter] * secondArray[counter];
    console.WriteLine(thirdArray[counter]);

这只取第一个数组的元素并直接乘以第二个元素。我应该有16个int结果但是如果我将thirdArray更改为[16]则会超出范围异常。 如果你能提供帮助,将不胜感激。

5 个答案:

答案 0 :(得分:3)

我相信这将实现您的目标:

int[] thirdArray = new int[16];

for (int i = 0; i < 4; i++)
    for (int j = 0; j < 4; j++)
        thirdArray[i * 4 + j] = firstArray[i] * secondArray[j];

答案 1 :(得分:1)

作为替代方法,您可以使用LINQ

var query = from x in firstArray
            from y in secondArray
            select x * y;

int[] thirdArray = query.ToArray();

答案 2 :(得分:1)

这可以解决您的问题:

int[] firstArray = { 1,2,3,4 };
  int[] secondArray = { 10,20,30,40 };
    int[] thirdArray = new int[firstArray.Length*secondArray.Length];
    for (int i = 0; i < firstArray.Length; i++)
    for (int j = 0; j < secondArray.Length; j++)
    {
        thirdArray[i*firstArray.Length + j] = firstArray[i] * secondArray[j];
        Console.WriteLine(thirdArray[i*firstArray.Length + j]);
    }

答案 3 :(得分:0)

哎呀,你甚至可以取消括号来表示范围,因为每次迭代的范围内只有一个操作:

int[] firstArray = { 1, 2, 3, 4 };
int[] secondArray = { 10, 20, 30, 40 };
for (int i = 0; i < firstArray.Length; i++ )
    foreach (int second in secondArray)
        firstArray[i] *= second;

答案 4 :(得分:-1)

使用LINQ:

完成一行
var allMultiples = firstArray.SelectMany(a => secondArray.Select(b => a * b));