如何将数组中的所有元素相乘?

时间:2014-09-10 12:02:39

标签: c# arrays

我开始学习C#并且正在编写一个程序,首先要求用户输入数字列表。当用户完成输入输入时,我想对输入中用户提供的每个数字进行平方。用户输入的示例是2 3 5

以下是代码:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace Program
{
    class Third
    {
        public static void Main()
        {
            Console.WriteLine("Enter how much numbers");

            int howMuch = int.Parse(Console.ReadLine());
            int[] num = new int[howMuch];
            int sum = 0;

            for (int i = 0; i < num.Length; i++ )
            {
                sum = num[i] * num[i]; // this is what i did but it does not work?
            }

            Console.WriteLine(sum);
            Console.ReadLine();
        }
    }
}

具体来说,我首先想要在numbers数组中捕获用户输入。然后我想对已创建的num数组中的每个数字进行平方。我的计划出了什么问题?

6 个答案:

答案 0 :(得分:1)

首先,您需要从用户那里获得输入并填充数组:

for (int i = 0; i < num.Length; i++)
{
     //TODO: Look into int.TryParse method to validate user input
     num[i] = int.Parse(Console.ReadLine());
}

而不是在第二个循环中覆盖sum使用sum += num[i] * num[i]。或者,如果您要查找所有数字的乘法,请使用sum = sum * num[i];并从1开始求和。

答案 1 :(得分:1)

您的代码未初始化数组 - 我添加了

Console.WriteLine("Enter number " + (i + 1));
        num[i] = int.Parse(Console.ReadLine());

为此。

还更正了摘要:sum += ...

for (int i = 0; i < num.Length; i++ )
{
    Console.WriteLine("Enter number " + (i + 1));
    num[i] = int.Parse(Console.ReadLine());
    sum += (num[i] * num[i]);
}

答案 2 :(得分:0)

看看你在循环中做的数学。

sum = num[i] * num[i];

每次通过时,您设置的总和等于索引整数的平方。

以第2,3,5次为例,第一次通过循环,你将设置sum = 2 * 2(或4),第二次通过,你设置sum = 3 * 3(或9)和最后一次总和= 5 * 5(或25)。你真正想要的是2 * 3 * 5,对吧?

您需要做的就是初始化int sum = 1,并将循环中的语句更改为:

sum = sum * num[i];

这将在第一次产生sum = 1 * 2,第二次产生sum = 2 * 3,第三次产生sum = 4 * 5。

答案 3 :(得分:0)

我假设你要做的总和(如果输入是2,3,5)是2 * 3 * 5。如果是这种情况,那么命名变量sum有点误导,因为这往往意味着2 + 3 + 5。

您将数字相乘的for循环有

sum = num[i]*num[i];

其中,在示例之后,当i == 0时,将执行sum = 2*2,然后在增加循环时覆盖它,因此sum将以25(5 * 5)结束,并折扣所有其他值。

如果您确实要对数字的平方求和,请将sum初始化为0,然后使用该行

sum += num[i] * num[i];

会奏效。话虽如此,除非您特别需要以任何理由存储它,否则在读取值时处理这些值会更好,因为程序将减少1 for个循环。

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace Program
{
class Third
{

public static void Main()
{

    Console.WriteLine("Enter how much numbers");

    int howMuch = int.Parse(Console.ReadLine());

    int[] num = new int[howMuch];
    for(int i = 0; i < howMuch; ++i)
    {
        //This is assuming that the user will enter an int value.
        //Ideally, verify this using int.TryParse or something similar.
        num[i] = int.Parse(Console.ReadLine());
    }

    int sum = 1; //Set to 1 so that the PRODUCT is not always zero

    for (int i = 0; i < num.Length; i++ )
    {
        sum *= num[i]; //Multiply the value
    }

    Console.WriteLine(sum);

    Console.ReadLine();

}

}

如果输入为2,3,5,则总和的值为30

答案 4 :(得分:0)

这可能会更好一些,尽管还有很多可以整理的东西!

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace Program
{
class Third
{

    public static void Main()
    {

        Console.WriteLine("Enter how many numbers");

        int howMuch = int.Parse(Console.ReadLine());

        int[] num = new int[howMuch];

        int sum = 1;
        for(int i=0;i<num.Length;i++) //allows you to fill the array
        {
           Console.WriteLine("Please enter an integer");
            sum *= int.Parse(Console.ReadLine()); // this will now multiply the value to sum, as your comment suggests
        }

        Console.WriteLine(sum);

        Console.ReadLine();

    }

}
}

修改

sum *= num[i];

应该做你想做的事!

答案 5 :(得分:-1)

用以下代码替换Main()中的代码: -

    Console.WriteLine("Enter how much numbers");

    int howMuch = int.Parse(Console.ReadLine());

    int[] num = new int[howMuch];

    Console.WriteLine("Enter numbers");

    int sum = 0;

    for (int i = 0; i < num.Length; i++ )
    {
        num[i] = int.Parse(Console.ReadLine());
        sum += num[i] * num[i]; // this is what i did but it does not work?
    }

    Console.WriteLine(sum);

    Console.ReadLine();