簡體   English   中英

C# 最小值和最大值

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM