如果您输出输入的最高和最低数字,我想输入10个数字并得到它们的总和。所以基本上它将是8个数字,我得到的总和当我拿出从10输入的最高和最低数字。到目前为止,我只能计算10个数字中的总和,但不知道如何取出最高和最低。我可以采取什么方法?
static void Main(string[] args)
{
int number, sum = 0, n;
for (number = 1; number < 11; number++)
{
Console.WriteLine("Enter a number");
n = Convert.ToInt32(Console.ReadLine());
sum += n;
}
Points(sum);
Console.ReadLine();
}
static void Points(int sum)
{
Console.WriteLine("Totalpoint is " + sum);
}
答案 0 :(得分:1)
解释我的思维过程的简单实现可能如下:
static void Main(string[] args)
{
int number, sum = 0, n;
List<int> inputNumbers = new List<int>();
for(number = 0; number < 10; number++)
{
inputNumbers.Add(Convert.ToInt32(Console.ReadLine()));
}
// Obtain maximum and minimum values
var maximum = inputNumbers.Max();
var mimimum = inputNumbers.Min();
foreach (var item in inputNumbers)
{
if(item == maximum)
{
inputNumbers.Remove(item);
break;
}
}
foreach(var item in inputNumbers)
{
if(item == mimimum)
{
inputNumbers.Remove(item);
break;
}
}
Console.WriteLine("Sum: "+inputNumbers.Sum());
Console.ReadKey();
}
解决方案相当简单,因为在使用指定的10个值填充List之后,您将查询它以获取最小值和最大值。 当您了解它们时,您可以简单地遍历列表并删除最大值和最小值(在这些操作之后完全中断)。
下行?在这个简单的实现中,你将遍历List两次,这肯定应该被优化,即使是为了清洁代码。 但它可能是你迈出的最好的第一步!
答案 1 :(得分:1)
添加是附加的,因此您可以在最后删除它们:
int sum = 0;
int min = int.MaxValue;
int max = int.MinValue;
for (int i = 0; i < 10; ++i)
{
Console.WriteLine("Enter a number");
int n = Convert.ToInt32(Console.ReadLine());
sum += n;
min = Math.Min(min, n);
max = Math.Max(max, n);
}
sum -= min;
sum -= max;
Points(sum);
Console.ReadLine();
答案 2 :(得分:1)
在阅读时,还有两个变量来跟踪最大值和最小值:
min = Math.Min(min, n);
max = Math.Max(max, n);
然后,当您退出循环时,您可以在打印前从总和中减去那些。
sum -= min + max;
答案 3 :(得分:0)
你可以试试这个:
List<int> testNum = new List<int>();
int num = 0;
int sum = 0;
try
{
// This will loop until you have 10 inputs
while(testNum.Count < 10)
{
Console.WriteLine("Enter a number:");
num = Convert.ToInt32(Console.ReadLine()); // Need to have the Try/Catch in case user doesn't input a number
testNum.Add(num);
}
// Get the min and max values (you will need System.Linq for this)
int minVal = testNum.Min();
int maxVal = testNum.Max();
// Remove the min and max values from the List
testNum.Remove(testNum.IndexOf(minVal));
testNum.Remove(testNum.IndexOf(maxVal));
// Sum the remaining values up
foreach(int n in testNum)
{
sum = sum + n;
}
return sum;
}
catch
{
throw;
}
答案 4 :(得分:0)
在列表中添加输入数字,并将它们的值相加,不包括最小值和最大值
public static void Main(string[] args)
{
var list = new List<int>();
for (int i = 0; i < 10; i++)
{
Console.WriteLine("Enter number " + i);
int num = Convert.ToInt32(Console.ReadLine());
list.Add(num); //adding the input number in list
}
Sum(list);
}
private static void Sum(List<int> list)
{
int max = list.Max();
int min = list.Min();
int sum = list.Where(x => x != max && x != min).Sum(); //taking the sum of all values exlcuding min and max
Console.WriteLine("Sum is " + sum);
}