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

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; }
        }
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

悬赏问题

  • ¥15 ansys fluent计算闪退
  • ¥15 有关wireshark抓包的问题
  • ¥15 需要写计算过程,不要写代码,求解答,数据都在图上
  • ¥15 向数据表用newid方式插入GUID问题
  • ¥15 multisim电路设计
  • ¥20 用keil,写代码解决两个问题,用库函数
  • ¥50 ID中开关量采样信号通道、以及程序流程的设计
  • ¥15 U-Mamba/nnunetv2固定随机数种子
  • ¥15 vba使用jmail发送邮件正文里面怎么加图片
  • ¥15 vb6.0如何向数据库中添加自动生成的字段数据。