用户输入姓名和成绩
查找出成绩的前三名,并按照成绩高低输出姓名,若出现更多与前三相同的成绩,需要把成绩相同的姓名按录入顺序输出
用户输入姓名和成绩
查找出成绩的前三名,并按照成绩高低输出姓名,若出现更多与前三相同的成绩,需要把成绩相同的姓名按录入顺序输出
下面实现中的逻辑,没有将并列的逻辑写出来,从功能上来说已经实现过半,在这个基础上扩展实现并列的情况。
while (true)
{
Console.WriteLine("输入学员姓名和成绩,姓名和成绩用中文逗号分隔");
var key = Console.ReadLine();
if (key == "exit") break;
var studentInfo = key.Split(',');
if (studentInfo.Length < 2) continue;
float.TryParse(studentInfo[1], out var score);
var student = new Student
{
Name = studentInfo[0],
Score = score,
};
studentList.Add(student);
}
QueryTop();
static List<Student> studentList = new List<Student>();
public static void QueryTop()
{
var list = studentList.OrderByDescending(x => x.Score).ToList();
for (int i = 0; i < list.Count; i++)
{
if (i > 2) break;
var item = list[i];
Console.Write($"第{i + 1}名");
Console.Write($" {item.Name}, {item.Score}");
Console.WriteLine();
}
Console.WriteLine("按任意键退出...");
Console.ReadKey();
}
/// <summary>
/// 学员
/// </summary>
public class Student
{
/// <summary>
/// 姓名
/// </summary>
public string Name { get; set; }
/// <summary>
/// 成绩
/// </summary>
public float Score { get; set; }
}