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

本文关键字:元素 数组 | 更新日期: 2023-09-27 18:21:25

我开始学习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数组中的每个数字进行平方。我的程序出了什么问题?

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

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

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 += num[i] * num[i],而不是覆盖sum。或者,如果你正在寻找所有数字的乘积,只需使用sum = sum * num[i];,并从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]);
}

这可能会好一点,尽管还有很多事情要做!

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];

应该做你想做的事!

看看您在循环中所做的数学运算。

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

每次,您都将sum设置为等于索引整数的平方。

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

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

sum = sum * num[i];

这将在第一次通过时产生sum=1*2,在第二次通过时得到sum=2*3,在第三次通过时获得sum=4*5。

我假设您想要做的和(如果输入是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

将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();