C#物件導向

來源:互聯網
上載者:User

標籤:

int定義的變數只能放整形資料,string定義的變數只能放字串資料,它們是內建資料類型;struct{},class(類)都是使用者定義的資料類型,可以放任意類型資料。用資料類型定義變數就像用模板規範的建立了一個變數,使其不能任意的儲存資料,比如int類型的變數無法儲存string類型的資料;所有的資料類型(int,string,struct出來的Student)就像各種各樣的模板,struct出來的Student是我們自己創造的資料類型模板。 class模板可以寫函數,因此比struct模板更進階,class定義的變數我們叫做對象。物件導向是一種思想,一種思路。在物件導向編程中,類是最小單位,是類與類之間相互互動。以class為模板建立出來的資料類型,我們叫做對象。變數的作用範圍:public(在項目所有地方都可以用),private只能在類的內部使用。不能用class建立的對象建立數組(struct可以),可以建立集合(Array)。每次建立對象需要用new開闢空間。struct可以自動開闢空間。object是所有資料類型的基類:就像生物對於所有動物、植物、微生物等等。小知識點:縮放代碼:#region endregion 藍塊:成員變數 紫塊:成員方法編程時,右擊函數名->轉到定義1.範例:通過struct數組儲存、處理學生資訊,按如下要求從控制台迴圈錄入10個同學的資訊跟成績(學號,姓名,C語言分數)使用結構體  ,在控制台列印本班的總分和平均分,並列印本班最高分、最低分的學生資訊,按成績高低列印本班成績冊並排出名次,要求使用結構體,自訂函數,數組來完成本題。複製代碼#region==學生課程題目==        struct student        {            public string code;            public string name;            public decimal degree;        }        static void Main(string[] args)        {            Console.Write("請輸入人數:");            int n = int.Parse(Console.ReadLine().ToString());            decimal sumfen=0, avg=0, max=0, min=0;            student[] sumstu = new student[n];            //根據所輸入人數進行迴圈錄入            for (int i = 0; i < n; i++)            {                Console.WriteLine("請輸入第"+(i+1)+"個學生的資訊");                Console.WriteLine("學號   姓名  c語言分數,以tab鍵分隔");                string s = Console.ReadLine();                string[] sarr = s.Split(new char[]{‘\t‘});//使用split按照分隔字元進行分隔                sumstu[i].code = sarr[0];                sumstu[i].name = sarr[1];                sumstu[i].degree = decimal.Parse(sarr[2]);                sumfen += sumstu[i].degree;            }            Console.WriteLine("****************************************");            Console.WriteLine("總分:"+sumfen.ToString());            avg = sumfen / n;            Console.WriteLine("平均分:"+avg.ToString());            //冒泡排序            for (int i = 0; i < n-1; i++)            {                for (int j = i+1; j < n; j++)                {                    if (sumstu[i].degree < sumstu[j].degree)                    {                        Student zhong = new Student();                        zhong = sumstu[i];                        sumstu[i] = sumstu[j];                        sumstu[j] = zhong;                    }                }            }            Console.WriteLine("最高分:"+sumstu[0].degree.ToString());            Console.WriteLine("最低分:"+sumstu[n-1].degree.ToString());            Console.WriteLine("本班成績列表如下:");            Console.WriteLine("****************************************");            Console.WriteLine("名次   學號  姓名  成績");            for (int i = 1; i <= n; i++)            {                Console.WriteLine(i+"\t"+sumstu[i-1].code+"\t"+sumstu[i-1].name+"\t"+sumstu[i-1].degree);            }                Console.ReadLine();        }複製代碼 2.通過Array集合來處理學生資訊複製代碼class Program    {        //用Array來儲存十個學生資訊,(不如上題將結構體放在數組裡方便,只是練習一下Array的使用)        //定義學生資訊結構體        public struct Student        {             public string sno;            public string name;            public int degree;        }        static void Main(string[] args)        {            //定義Student元素類型的Array,儲存10個學生資訊            Array myArr = Array.CreateInstance(typeof(Student), 10);            for (int i = 0; i < myArr.Length; i++)            {                Student aaa;                Console.WriteLine("請輸入第" + (i + 1) + "個學生的學號,姓名,成績");                aaa.sno = Console.ReadLine();                aaa.name = Console.ReadLine();                aaa.degree = Convert.ToInt32(Console.ReadLine());                myArr.SetValue(aaa, i);            }            //分割線            Console.WriteLine("********************************************************");            //求總分、平均分            int sum = 0;            for (int i = 0; i < myArr.Length; i++)            {                object aaa;//定義一個對象來接收從Array中取出的元素                aaa = myArr.GetValue(i);                Student b = (Student)aaa;//將取出的元素進行強制轉化                sum += b.degree;            }            Console.WriteLine("總分為" + sum + "平均分為" + sum / myArr.Length);            Console.WriteLine("********************************************************");            //通過冒泡排序求最高分、最低分            int[] a = new int[10];//用數組來儲存元素的分數            for (int i = 1; i <= myArr.Length; i++)//冒泡排序,將Array中的元素按照分數的大小排序            {                for (int j = 1; j <= myArr.Length - i; j++)                {                    object aaa, bbb;//定義兩個對象來接收從Array中取出的元素                    aaa = myArr.GetValue(j - 1);                    bbb = myArr.GetValue(j);                    Student aa = (Student)aaa;//將取出的元素進行強制轉化                    Student bb = (Student)bbb;                    a[j - 1] = aa.degree;//通過比較相鄰兩個元素的分數的大小,判斷是否交換元素的位置                    a[j] = bb.degree;                    if (a[j] > a[j - 1])                    {                        myArr.SetValue(aa, j);                        myArr.SetValue(bb, j - 1);                    }                }            }            object zg, zd;            zg = myArr.GetValue(0);            Student mm = (Student)zg;            zd = myArr.GetValue(myArr.Length - 1);            Student n = (Student)zd;            Console.WriteLine("最高分為" + mm.degree + "姓名" + mm.name + "學號"                 + mm.sno + "最低分為" + n.degree + "姓名" + n.name + "學號" + n.sno);            //分割線            Console.WriteLine("********************************************************");            //列印成績表            for (int i = 0; i < myArr.Length; i++)            {                object aaa;                aaa = myArr.GetValue(i);                Student b = (Student)aaa;                Console.WriteLine("姓名" + b.name + "學號" + b.sno + "分數為" + b.degree);            }        }    }複製代碼bb

 

C#物件導向

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.