魔鬼中
2018-12-25 15:36
采纳率: 81.8%
浏览 1.2k

C#控制台程序,怎么把用户输入的姓名和成绩中的前三名(考虑并列情况)输出

用户输入姓名和成绩

查找出成绩的前三名,并按照成绩高低输出姓名,若出现更多与前三相同的成绩,需要把成绩相同的姓名按录入顺序输出

  • 写回答
  • 关注问题
  • 收藏
  • 邀请回答

2条回答 默认 最新

  • Johan. 2018-12-26 01:58
    已采纳

    下面实现中的逻辑,没有将并列的逻辑写出来,从功能上来说已经实现过半,在这个基础上扩展实现并列的情况。

    图片说明

    Main 方法中的代码

    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();
    

    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();
    }
    

    Student 类

        /// <summary>
        /// 学员
        /// </summary>
        public class Student
        {
            /// <summary>
            /// 姓名
            /// </summary>
            public string Name { get; set; }
            /// <summary>
            /// 成绩
            /// </summary>
            public float Score { get; set; }
        }
    
    打赏 评论
  • gl_net 2018-12-26 01:35

    你这个是随着输入实时改变输出的内容还是最后输完了进行触发来再输出?

    打赏 评论

相关推荐 更多相似问题