有下面几个人
 
姓名   成绩   年龄
张三   88     20
李四   79     21
王五   90     23
赵六   90     22
................这些数据不是放在数据库中的,用程序来实现
要求:
先按成绩排名,如果成绩相同的话按年龄排名。不知道这个程序怎么写,请各位给个答案。小弟回去琢磨琢磨,谢谢了。。

解决方案 »

  1.   

    1.假充数据结构如下:
    public class People
    {
     public string Name; //名子
     public int Score;   //成绩
     public int Age;     //年龄
    }2.建立了个数组, 个数为成员的总个数count个.
    People[] p = new People[count];
    然后按年龄排序p3.新建一个数组
    People[] p1 = new People[count];
    然后做一个循环,从p中按顺序读取最大的,然后放到新数组中,再删除原来的数.最终得到的p1就是要求数组.
      

  2.   

    自己写一个数据集.
    填充在GIRDVIEW,用代码改他的排序
      

  3.   

    class Program
    {
    /// <summary>
    /// The main entry point for the application.
    /// </summary>
    static void Main(string[] args)
    {
    ArrayList objs = new ArrayList(); objs.Add( new Person("张三", 88, 20) );
    objs.Add( new Person("李四", 79, 21) );
    objs.Add( new Person("王五", 90, 23) );
    objs.Add( new Person("赵六", 90, 22) ); foreach( Person p in objs )
    Console.WriteLine(p.ToString()); objs.Sort(new PersonComparer()); Console.WriteLine("After sorting..."); foreach( Person p in objs )
    Console.WriteLine(p.ToString()); Console.ReadLine();
    }
    } class PersonComparer : IComparer
    {
    #region IComparer Members public int Compare(object x, object y)
    {
    Person xp = x as Person;
    if( xp == null )
    throw new ArgumentException(); Person yp = y as Person;
    if( yp == null )
    throw new ArgumentException(); int gradesResult = xp.Grades - yp.Grades; if( gradesResult != 0 ) return gradesResult; return xp.Age - yp.Age;
    } #endregion
    }
    class Person
    {
    public Person(string name, int grades, int age)
    {
    this.name = name;
    this.grades = grades;
    this.age = age;
    } private string name;
    private int grades;
    private int age; public override string ToString()
    {
    return Name + " " + Grades + " " + Age;
    }
    }
      

  4.   

    class Person
    {
    public Person(string name, int grades, int age)
    {
    this.name = name;
    this.grades = grades;
    this.age = age;
    } private string name;
    private int grades;
    private int age; public override string ToString()
    {
    return Name + " " + Grades + " " + Age;
    } public string Name
    {
    get
    {
    return name;
    }
    }
    public int Grades
    {
    get
    {
    return grades;
    }
    } public int Age
    {
    get
    {
    return age;
    }
    } } class Class1
    {
    /// <summary>
    /// 应用程序的主入口点。
    /// </summary>
    [STAThread]
    static void Main(string[] args)
    {
    //
    // TODO: 在此处添加代码以启动应用程序
    //
    Person[] objs=new Person[4];
                objs[0]=new Person("张三", 88, 20); 
    objs[1]=new Person("李四", 79, 21); 
    objs[2]=new Person("王五", 90, 23); 
    objs[3]=new Person("赵六", 90, 22);  foreach( Person p in objs )
    Console.WriteLine(p.ToString());
               Console.WriteLine("---------------------");
    //---------------------
               
    Order(objs); //---------------------
    foreach( Person p in objs )
    Console.WriteLine(p.ToString());
    } static void Order(Person[] T)
    {
    Person Temp;
    int i=0;
    int j=0;
    for(i=0;i<T.Length;i++)
    {
    for(j=i+1;j<T.Length;j++)
    {
    if (T[i].Grades <T[j].Grades)
    {
    Temp=new Person(T[i].Name,T[i].Grades,T[i].Age );
    T[i]=new Person(T[j].Name,T[j].Grades,T[j].Age);
    T[j]=new Person(Temp.Name,Temp.Grades,Temp.Age); }
    else if((T[i].Grades ==T[j].Grades) && (T[i].Age >T[j].Age))
    {
    Temp=new Person(T[i].Name,T[i].Grades,T[i].Age);
    T[i]=new Person(T[j].Name,T[j].Grades,T[j].Age);
    T[j]=new Person(Temp.Name,Temp.Grades,Temp.Age);
    }
    }
    }
    }
    }
      

  5.   

    换一种思路 
            const string C_NAME     = "NAME";
            const string C_SCORE    = "SCORE";
            const string C_AGE      = "AGE";
            private void button1_Click(object sender, EventArgs e)
            {
                DataTable table = new DataTable();
                DataColumn column = table.Columns.Add();
                column.DataType = typeof(string);
                column.ColumnName = C_NAME;
                column = table.Columns.Add();
                column.DataType = typeof(int);
                column.ColumnName = C_SCORE;
                column = table.Columns.Add();
                column.DataType = typeof(int);
                column.ColumnName = C_AGE;            AddNewRow(table, "张三", 88, 20);
                AddNewRow(table, "李四", 79, 21);
                AddNewRow(table, "王五", 90, 23); 
                AddNewRow(table, "赵六", 90, 22);            DataRow[] rows = table.Select("", string.Format("{0}, {1}", C_SCORE, C_AGE));            string sFormat = "{0} {1} {2}";
                string line;
                foreach (DataRow row in rows)
                {
                    line = string.Format(sFormat,
                            Convert.ToString(row[C_NAME]),
                            Convert.ToString(row[C_SCORE]),
                            Convert.ToString(row[C_AGE]));
                    Console.WriteLine(line);
                }        }        private void AddNewRow(DataTable table, string sName, int iScore, int iAge)
            {
                DataRow row = table.NewRow();
                row[C_NAME]     = sName;
                row[C_SCORE]    = iScore;
                row[C_AGE]      = iAge;
                table.Rows.Add(row);
            }
      

  6.   

    ls的使用 ADO.net,这个还是不错的...
      

  7.   

    DataTable dt =new DataTable("test");
                DataColumn dc1 =new DataColumn("name",typeof(string));
                DataColumn dc2 =new DataColumn("arch",typeof(System.Int32));
                DataColumn dc3=new DataColumn("age",typeof(System.Int32));
                dt.Columns.Add(dc1);
                dt.Columns.Add(dc2);
                dt.Columns.Add(dc3);
                DataRow dr;
                for(int i=0;i<5;i++)
                {
                dr=dt.NewRow();
                dr[0]="zhang"+i.ToString() ;
                dr[1]=80+i;
                dr[2]=20+i;
                dt.Rows.Add(dr);
                }
                DataView dv=dt.DefaultView;
                dv.Sort = "arch,age";
      

  8.   

    我觉得放在datatable里面然后用dataview去排序,很简单啊!不需要结构体啊
      

  9.   

    System.Data.DataTable dTable = new DataTable("ClassPoint"); dTable.Columns.Add(new DataColumn("Name",typeof(string)));
    dTable.Columns.Add(new DataColumn("Point",System.Type.GetType("System.Int32")));
    dTable.Columns.Add(new DataColumn("Age",typeof(System.Int32))); DataRow dRow; //1
    dRow = dTable.NewRow();
    dRow["Name"] = "zhangyy";
    dRow["Point"] = 60;
    dRow["Age"] = 20;
    dTable.Rows.Add(dRow);
    //2
    dRow = dTable.NewRow();
    dRow["Name"] = "fengww";
    dRow["Point"] = 80;
    dRow["Age"] = 26;
    dTable.Rows.Add(dRow);
    //3
    dRow = dTable.NewRow();
    dRow["Name"] = "zhangxh";
    dRow["Point"] = 50;
    dRow["Age"] = 26;
    dTable.Rows.Add(dRow);
    //4
    dRow = dTable.NewRow();
    dRow["Name"] = "hezhe";
    dRow["Point"] = 56;
    dRow["Age"] = 23;
    dTable.Rows.Add(dRow);
    //5
    dRow = dTable.NewRow();
    dRow["Name"] = "jiangzm";
    dRow["Point"] = 50;
    dRow["Age"] = 20;
    dTable.Rows.Add(dRow);

    DataView dView = dTable.DefaultView;
    dView.Sort = "Point , Age";
    for(int i = 0; i < dView.Count; i ++)
    {
    Console.WriteLine(dView[i].Row["Name"].ToString()+" "+dView[i].Row["Point"].ToString()
    +" "+dView[i].Row["Age"].ToString());
    } Console.ReadLine();
      

  10.   

    用datatable排序就可以
    如果要自己写排序算法,那么只能考虑稳定排序
    比如选择,冒泡,归并
      

  11.   

    DataTable dt = new DataTable();
            DataColumn dc;
            dc=new DataColumn("name",typeof(string));
            dt.Columns.Add(dc);
            dc = new DataColumn("scroe", typeof(Int32));
            dt.Columns.Add(dc);
            dc = new DataColumn("age", typeof(Int32));
            dt.Columns.Add(dc);
            DataRow dr;
            dr = dt.NewRow();
            dr["name"]="张三";
            dr["scroe"] = 88;
            dr["age"] = 20;
            dt.Rows.Add(dr);
            dr = dt.NewRow();
            dr["name"] = "李四";
            dr["scroe"] = 79;
            dr["age"] = 21;
            dt.Rows.Add(dr);
            dr = dt.NewRow();
            dr["name"] = "王五";
            dr["scroe"] = 90;
            dr["age"] = 22;
            dt.Rows.Add(dr);
            dr = dt.NewRow();
            dr["name"] = "赵六";
            dr["scroe"] = 90;
            dr["age"] = 21;
            dt.Rows.Add(dr);
            DataSet ds = new DataSet();
            ds.Tables.Add(dt);
            ds.Tables[0].DefaultView.Sort = "scroe,age";
            this.GV.DataSource = ds;
            this.GV.DataBind();
      

  12.   

    有数据库,直接SQL吧
    /*姓名   成绩   年龄
    张三   88     20
    李四   79     21
    王五   90     23
    赵六   90     22
    */
    create table TestTable(Name varchar(10),grade int ,age int)
    insert into TestTable select '张三','88','20'
    union all select '李四','79','21'
    union all select '王五','90','23'
    union all select '赵六','90','22'
    select * from TestTable order by grade asc,age asc
      

  13.   

    我真是晕了,用得着那么多代码吗!DataTable dt = ...,//数据都在dt里dt.DefaultView.Sort = "scroe,age";或DataView dv = new DataView(dt);
    dv.Sort = "scroe,age";
      

  14.   

    簡單的做法:
    建立DataTable,數據加入操作!
      

  15.   

    最省事的就是用DataTable
    它定义了一个Select方法,可以用如下方法
    DataTable dt = ...
    dt.Select("条件","排序(例:aa DESC)");