黑马程序员技术交流社区

标题: 类、结构体、数组的使用(一题多解) [打印本页]

作者: 蔡嘉    时间: 2012-9-19 14:32
标题: 类、结构体、数组的使用(一题多解)
让用户输入班级人数,再依次输入该班级每个学员的姓名和成绩,按成绩进行排序,按成绩由高到低依次输出学生的姓名和成绩!我已经按题目要求解决,但是其它解法还没有,求解!下面是我的一种解法:
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();
        }
作者: 胡松涛    时间: 2012-9-19 16:39
存储学员的姓名和成绩用结构体呀,那样简单一点,
作者: 蔡嘉    时间: 2012-9-19 17:18
求详解,大体思路是有的,只要把上面的代码框架保留,把姓名、成绩定义到结构体里,但是到vs2010里总是调试不出,郁闷。




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2