显示10个输入数字的总和,但取出最高和最低数字

时间:2018-02-05 00:34:48

标签: c#

如果您输出输入的最高和最低数字,我想输入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);
        }

5 个答案:

答案 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);
  }