A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 蔡嘉 中级黑马   /  2012-9-19 14:32  /  1974 人查看  /  2 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

让用户输入班级人数,再依次输入该班级每个学员的姓名和成绩,按成绩进行排序,按成绩由高到低依次输出学生的姓名和成绩!我已经按题目要求解决,但是其它解法还没有,求解!下面是我的一种解法:
static void Main(string[] args)                 
        {
            Console.WriteLine("请输入班级人数:");
            int n = Convert.ToInt32(Console.ReadLine());
            //定义存储分数的数组
            double[] s=new double[n];
            //定义存储姓名的数组
            string[] name = new string[n];            
            for (int i = 0; i < n; i++)
            {
                Console.WriteLine("请输入学员姓名:");
                name[i] = Console.ReadLine();
                Console.WriteLine("请输入"+name[i]+"的分数:");
                s[i] = Convert.ToDouble(Console.ReadLine());               
                //条件判断分数的合法性               
                if (s[i] <= 0 || s[i] >= 100)
                {
                    Console.WriteLine("非法的分数!分数应在0到100之间!请重新输入。");
                    Console.ReadKey();
                    return;                 
                }
               
            }
            //用冒泡排序法通过两层循环同时交换姓名和对应的成绩
            for (int i = 0; i <n-1; i++)
            {                              
                for (int j = 0; j < n-i-1; j++)
                {
                    //定义交换学员成绩的中间变量
                    double t;
                    //定义交换学员姓名的中间变量
                    string tname;   
                    if (s[j] < s[j+1])
                    {
                        //如果条件满足,交换成绩并交换对应的学员姓名
                        t = s[j];
                        s[j] = s[j + 1];
                        s[j + 1] = t;
                        tname = name[j];
                        name[j] = name[j + 1];
                        name[j + 1] = tname;

                    }                    
                }                                                     
            }
            //按降序输出学员的姓名和对应的成绩
            for (int i = 0; i < n ; i++)
            {
                Console.WriteLine(name[i]+":"+s[i]);
            }
            Console.ReadKey();
        }

评分

参与人数 1技术分 +1 收起 理由
郑文 + 1

查看全部评分

2 个回复

倒序浏览
存储学员的姓名和成绩用结构体呀,那样简单一点,
回复 使用道具 举报
求详解,大体思路是有的,只要把上面的代码框架保留,把姓名、成绩定义到结构体里,但是到vs2010里总是调试不出,郁闷。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马