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。
答案 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();
我认为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);
这应该可行。