[英]C# Minimum and maximum value
我的任務是:依次錄入一個班級N個學生的身高數據。 確定小組中學生的平均、最小和最大身高。
我寫了這樣一個解決方案,但是程序錯誤地輸出了最大值和最小值。
Console.Write("Number of students in the group = ");
int n = Convert.ToInt32(Console.ReadLine());
double result = 0;
double min = 0;
double max = 0;
for (double i = 0.0; i < n; i++)
{
Console.Write("The height of {0} student (in cm): ", i + 1);
double h = Convert.ToDouble(Console.ReadLine());
result += h;
if (max > h) max = h;
if (h < max) min = h;
}
double average = 0;
average = result / n;
Console.WriteLine("Average value = " + average);
Console.WriteLine("Maximum value = " + max);
Console.WriteLine("Minimun value = " + min);
輸出:
我能做些什么來解決這個問題?
如果 (h < max) min = h; 是一個錯誤,因為在開始時所有值都 = 0,並且高度永遠不會小於 0,並且永遠不會為真,並且 min 將永遠保持為 0。
如果 (max > h) max = h; 出於同樣的原因也沒有多大意義。 Max 開始時為 0,因此它永遠不會為真,並且 max 將永遠為 0。
嘗試這個
static void Main()
{
Console.Write("Number of students in the group = ");
int n = Convert.ToInt32(Console.ReadLine());
Console.WriteLine(n.ToString());
double result = 0;
double min = 0;
double max = 0;
for (var i = 0; i < n; i++)
{
Console.Write("The height of {0} student (in cm): ", i + 1);
double h = Convert.ToDouble(Console.ReadLine());
Console.WriteLine(h.ToString());
result += h;
if (h > max) max = h;
if ( min==0 || h < min) min = h;
}
double average = result / n;
Console.WriteLine("Average height = " + average);
Console.WriteLine("Maximum height = " + max);
Console.WriteLine("Minimun heignt = " + min);
}
輸出
Number of students in the group = 5
The height of 1 student (in cm): 140
The height of 2 student (in cm): 150
The height of 3 student (in cm): 130
The height of 4 student (in cm): 170
The height of 5 student (in cm): 165
Average heignt = 151
Maximum heignt = 170
Minimun heignt = 130
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.