需要帮助转换为Do-While循环

时间:2019-02-19 04:07:40

标签: c# do-while

using System;
using System.Linq;


namespace PleaseHelpMe
{
    public class SumAndAverage
    {
        public static void Main(string[] args)
        {
            var data = Enumerable.Range(1, 100);
            Console.WriteLine("The sum is "+ data.Sum());
            Console.WriteLine("The average is " + data.Average());
            Console.ReadKey();
        }
    }
}

我需要将其更改为Do-While循环,其预期输出总和为5050,平均值为50。

2 个答案:

答案 0 :(得分:1)

我认为,do / while循环在这里有点奇怪。更好的选择是for循环。

无论如何,您需要跟踪count和当前迭代i

int i = 1;
int count = 100;

您还需要存储sum。对于大值(总和> 2147483647),应使用long

int sum = 0;

现在,您需要增加i直到匹配count

do
{
    sum += i; // add current value of i to sum.
}
while (i++ < count);

请注意,我在这里使用i++是因为它返回i之前的值 ,而不是返回++i的值{em}之后的i递增。如果使用了++i,则必须将其与<=进行比较。

最后计算平均值并输出总和:

double average = sum / (double)count;
Console.WriteLine("The sum is " + sum);
Console.WriteLine("The average is " + average);
Console.ReadKey();

Try it online

我认为for循环更适合此操作(尽管我知道如果是针对某项作业,您可能不得不跳过使用do / while的麻烦):

int sum = 0;
int count = 100;

for (int i = 1; i <= count; ++i)
{
    sum += i;
}
double average = sum / (double)count;
Console.WriteLine("The sum is " + sum);
Console.WriteLine("The average is " + average);
Console.ReadKey();

答案 1 :(得分:0)

int sum = 0;   
decimal avg = 0;  
do   
{   
    sum += n;  
    avg = sum/n;  
    n++;  
}  while (n <= 100);

这应该可行。