一道c#关于结构体数组排序的题目

从键盘输入五个学生的姓名,性别,数学、语文、英语成绩;要求:按总分降序输出使用结构体,遍历用foreach单独写方法计算总分,单独写方法排序,不能用系统提供的sort之类... 从键盘输入五个学生的 姓名,性别,数学、语文、英语成绩;
要求:按总分降序输出
使用结构体,遍历用foreach
单独写方法计算总分,单独写方法排序,不能用系统提供的sort之类的东西,main单独在一个类中
展开
 我来答
steven0320
推荐于2017-10-13 · 超过55用户采纳过TA的回答
知道小有建树答主
回答量:114
采纳率:100%
帮助的人:81.7万
展开全部

暂时不忙,就帮你写了下:

    class Program
    {
        static List<Student> stuList = new List<Student>();
        static void Main(string[] args)
        {
          
            for (int i = 0; i < 5; i++)
            {
                Student student=new Student();
                Console.WriteLine("请输入学生姓名:");
                student.Name = Console.ReadLine();
                Console.WriteLine("请输入学生性别:");
                student.Sex = Console.ReadLine();
                Console.WriteLine("请输入学生语文成绩:");
                student.Chinese = Convert.ToSingle(Console.ReadLine());
                Console.WriteLine("请输入学生数学成绩:");
                student.Math = Convert.ToSingle(Console.ReadLine());
                Console.WriteLine("请输入学生英语成绩:");
                student.EngLish = Convert.ToSingle(Console.ReadLine());
                student.Total = TotalSum(student.Chinese, student.Math, student.EngLish);

                stuList.Add(student);
            }

            Bubble();
            foreach (var item in stuList)
            {
                Console.WriteLine(string.Format("学生姓名{0},总分为:{1} ", item.Name,item.Total));
            }
 
            Console.ReadLine();
        }

        //计算总分
        static float TotalSum(float chinese, float math, float engLish)
        {
            return chinese + math + engLish;
        }

        /// <summary>
        /// 对学生总分排序
        /// </summary>
        static void Bubble()
        {
            Student temp = new Student();
            for (int i = stuList.Count; i > 0; i--)
            {
                for (int j = 0; j < i - 1; j++)
                {
                    if (stuList[j].Total < stuList[j + 1].Total)
                    {
                        temp = stuList[j];
                        stuList[j] = stuList[j + 1];
                        stuList[j + 1] = temp;
                    }
                }
            }
        }

    }

    public class Student
    {
        public string Name { get; set; }

        public string Sex { get; set; }

        public float Chinese { get; set; }

        public float Math { get; set; }

        public float EngLish { get; set; }

        public float Total { get; set; }
    }
追问
感谢你的回答,我刚大二开学c#一个月,不太懂,想再问你一个问题。这里的Bubble() ,只能对这个stuList排序吧?如果我创建不同的student数组,如何做到调用同一个方法实现对他们排序呢
追答

嗯,stuList目前是定义的静态泛型集合,如果你要想用不同的student数组,简单改下方法加入返回值就可以:

   static List<Student> Bubble(List<Student> stuList)
        {
            Student temp = new Student();
            for (int i = stuList.Count; i > 0; i--)
            {
                for (int j = 0; j < i - 1; j++)
                {
                    if (stuList[j].Total < stuList[j + 1].Total)
                    {
                        temp = stuList[j];
                        stuList[j] = stuList[j + 1];
                        stuList[j + 1] = temp;
                    }
                }
            }

            return stuList;
        }
光点科技
2023-08-15 广告
通常情况下,我们会按照结构模型把系统产生的数据分为三种类型:结构化数据、半结构化数据和非结构化数据。结构化数据,即行数据,是存储在数据库里,可以用二维表结构来逻辑表达实现的数据。最常见的就是数字数据和文本数据,它们可以某种标准格式存在于文件... 点击进入详情页
本回答由光点科技提供
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式