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

问题描述 投票:-1回答:2
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。

c# do-while
2个回答
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在增加后返回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();

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

这应该有效。

© www.soinside.com 2019 - 2024. All rights reserved.