C#:在for循环中查找总和

时间:2017-12-18 14:10:08

标签: c#

问题是:

编写一个程序,从屏幕上读取两个整数min和max,并输出min(包括)和max(不包括)之间所有整数平方的总和。如果min大于max,则程序应输出" min应小于max!"。例如:

>4
>9
190 (= 4² + 5² + 6² + 7² + 8²)

>14
>3
min should be smaller than max!

我的代码:

using System;

namespace ForLoops
{
    class SumOfSquares
    {
        static void Main(string[] args)
        {


        int sum = 0;
        int min = int.Parse(Console.ReadLine());
        int max = int.Parse(Console.ReadLine());
        for (int i = min; i < max; i = i++)
        {
             sum = i * i; 



            }
            Console.WriteLine(sum);

        }
    }
}

当我得到190时,我一直得到68分。

3 个答案:

答案 0 :(得分:1)

所以答案是您使用 For 循环语句,这样您就可以获得 2 个示例。同时回答。

        int min = int.Parse(Console.ReadLine());
        int max = int.Parse(Console.ReadLine());

        if(min > max)
        {
            Console.WriteLine("min should be smaller than max!");
        }
        else
        {
            int sum = 0;
            for(int i = min; i < max; i++)
            {
                sum = sum + i*i;
            }
            
            Console.WriteLine(sum);
        }

答案 1 :(得分:0)

您的代码存在两个缺陷:

  1. post-increment operator i++增加i,但会返回之前的值。因此,i = i++您永远不会增加i,因为您始终会将值重新分配给增量之前的值。这会导致无限循环。
  2. 您没有总结产品,只是为sum = i * i;分配了单独的产品。您需要使用sum += i*i;添加它们。
  3. 所以你的最后一个循环看起来像那样:

      int sum = 0;
      for (int i = min; i < max; i++)
          sum += i * i; 
    

答案 2 :(得分:0)

Linq 可以摆脱显式循环(让.net为你工作):

  using System.Linq;

  ... 

  int min = 4;
  int max = 9;

  int sum = Enumerable
    .Range(min, max - min) // from min to max (not included)
    .Sum(x => x * x);      // sum up squares