如何将数组中的所有元素相乘
本文关键字:元素 数组 | 更新日期: 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();