實驗 結構體

iamzxf發表於2015-05-19

實驗目標:

    1、掌握結構的宣告和使用。

    2、掌握結構預設及有引數建構函式的用法。

    3、理解結構和類的區別。

實驗內容:

    1、自定義類實現IComparer介面,比較空間兩點大小,先按x的座標值比較,若相等再按y的座標值比較。在main方法中進行測試,比較兩個座標點的大小;對由空間某點構成的陣列進行排序。

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

/*自定義類實現IComparer介面,比較空間兩點大小,
 * 先按x的座標值比較,若相等再按y的座標值比較。
 * 在main方法中進行測試,比較兩個座標點的大小;
 * 對由空間某點構成的陣列進行排序。*/

namespace ConsoleApplication1
{
    class Space:IComparer
    {
        public double X{get; set;}
        public double Y { get; set; }

        public Space(double x, double y)
        {
            this.X = x;
            this.Y = y;
        }

        public void disp()
        {
            Console.WriteLine("X:{0},Y:{1}",this.X,this.Y);
        }

        public int Compare(Space s2)
        {
            Space s1 = new Space(X, Y);
            if (s1.X > s2.X)
                return 1;
            else
                if (s1.X < s2.X)
                    return -1;
                else
                    if (s1.Y > s2.Y)
                        return 1;
                    else if (s1.Y < s2.Y)
                        return -1;
                    else
                        return 0;
        }
    }
    interface IComparer
    {
         int Compare(Space s2); 
    }
    class Program
    {
        static void Main(string[] args)
        {
            Space[] points = new Space[5]{
                new Space(1,2),
                new Space(2,2.3),
                new Space(1,3),
                new Space(2,1.4),
                new Space(4,2)            
            };

            for (int i = 0; i < 5; i++)
                points[i].disp();

            for (int i = 0; i < 5; i++)
            {
                for (int j = i + 1; j < 5; j++)
                {
                    if (points[i].Compare(points[j]) > 0)
                    {
                        Space temp = points[i];
                        points[i] = points[j];
                        points[j] = temp;
                    }
                }
            }
            Console.WriteLine("=======================");
            for (int i = 0; i < 5; i++)
                points[i].disp();

            Console.ReadLine();
        }
    }
}

    2、定義一個學生分數結構體StudentGrade,包含欄位Name、Score,以及2個引數的建構函式。利用結構體StudentGrade,建立結構陣列變數,存放若干學生的姓名和分數資訊,計算平均分。

從主函式中初始化以下欄位:執行效果如圖所示。

    "張三",99

    "李四",68

    "王五",89

    "姚六",76

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

/*定義一個學生分數結構體StudentGrade,包含欄位Name、Score,
 * 以及2個引數的建構函式。利用結構體StudentGrade,
 * 建立結構陣列變數,存放若干學生的姓名和分數資訊,計算平均分。*/

namespace ConsoleApplication2
{
    struct StudentGrade
    {
        public string Name;
        public double Score;

        public StudentGrade(string name, double score)
        {
            Name = name;
            Score = score;
        }
    }
    class Program
    {
        static void Main(string[] args)
        {
            StudentGrade[] students = new StudentGrade[4]{
                new StudentGrade("張三",99),
                new StudentGrade("李四",68),
                new StudentGrade("王五",89),
                new StudentGrade("姚六",76)
            };

            for (int i = 0; i < 4; i++)
                Console.WriteLine("{0},{1}", students[i].Name, students[i].Score);

            Console.ReadLine();
        }
    }
}


相關文章