Bài tập struct trong C#

Để củng cố những kiến thức đã học Struct trong lập trình C#. Mời bạn đọc cùng thực hành qua một số bài tập C# cơ bản dưới đây.

Bài tập struct trong C#

1. Bài 01

Tạo struct, gán giá trị và gọi struct

Viết chương trình C# để tạo một struct, gán giá trị và gọi struct này.

Đây là bài tập C# đơn giản minh họa giúp bạn cách khai báo một struct và cách truy cập các phần tử của một struct.

Dưới đây là chương trình C# minh họa lời giải cho bài tập tạo struct, gán giá trị và gọi struct trong C#:

using System;

namespace Csharp
{
    // tao mot class  
    class aNewClass
    {
        public int x;
        public int y;
    }
    //tao mot struct  
    struct aNewStruc
    {
        public int x;
        public int y;
    }

    class TestCsharp
    {
        static void Main(string[] args)
        {
            Console.Write("\nTao struct, gan gia tri va goi struct trong C#:\n");
            Console.Write("------------------------------------------------\n");
            aNewClass ClassNum1 = new aNewClass();
            ClassNum1.x = 75;
            ClassNum1.y = 95;

            //  ClassNum2 la mot kieu cua ClassNum1   
            aNewClass ClassNum2 = ClassNum1;
            ClassNum1.x = 7500;
            ClassNum1.y = 9500;
            Console.WriteLine("\nThuc hien hoat dong gan trong Class:  x:{0},   y:{1}", ClassNum2.x, ClassNum2.y);
            aNewStruc StrucNum1 = new aNewStruc();
            StrucNum1.x = 750;
            StrucNum1.y = 950;

            //  StrucNum2 la mot kieu cua StrucNum1 type           
            aNewStruc StrucNum2 = StrucNum1;
            StrucNum1.x = 75;
            StrucNum1.y = 95;
            Console.WriteLine("Thuc hien hoat dong gan trong Struct:   x:{0},  y:{1}\n\n", StrucNum2.x, StrucNum2.y);

            Console.ReadKey();
        }
    }  
}

Nếu bạn không sử dụng lệnh Console.ReadKey(); thì chương trình sẽ chạy và kết thúc luôn (nhanh quá đến nỗi bạn không kịp nhìn kết quả). Lệnh này cho phép chúng ta nhìn kết quả một cách rõ ràng hơn.

Biên dịch và chạy chương trình C# trên sẽ cho kết quả:

Tạo struct, gán giá trị và gọi struct trong C#

2. Bài 02

Truyền struct vào phương thức

Điểm khác nhau giữa việc chúng ta truyền instance của struct và một instance của một class vào một phương thức trong C#. Bạn theo dõi chương trình C# dưới đây để theo dõi điểm khác nhau này nhé.

Dưới đây là chương trình C# minh họa lời giải cho bài tập truyền struct vào phương thức trong C#:

using System;

namespace Csharp
{
    //tao mot class
    class newClass
    {
        public int n;
    }
    //tao mot struct
    struct newStruct
    {
        public int n;
    }
    class TestCsharp
    {
        public static void trackStruct(newStruct st)
        {
            st.n = 8;
        }
        public static void tracClass(newClass cl)
        {
            cl.n = 8;
        }
        public static void Main()
        {
            Console.Write("\nTruyen struct va instance cua class vao phuong thuc:\n");
            Console.Write("-----------------------------------------------------\n");
            newStruct ns = new newStruct();
            newClass nc = new newClass();
            ns.n = 5;
            nc.n = 5;
            //gia tri cua cac truong trong struct khong bi thay doi khi chung ta truyen instance   
            //cua struct nay, boi vi chi co ban sao cua struct se duoc truyen vao phuong thuc trackStruct       
            trackStruct(ns);
            //gia tri cua cac truong trong class bi thay doi khi chung ta truyen instance  
            //cua class nay, boi vi tham chieu toi class duoc truyen vao phuong thuc tracClass         
            tracClass(nc);
            Console.WriteLine("\nns.n = {0}", ns.n);
            Console.WriteLine("nc.n = {0}\n", nc.n);

            Console.ReadKey();
        }
    }  
}

Nếu bạn không sử dụng lệnh Console.ReadKey(); thì chương trình sẽ chạy và kết thúc luôn (nhanh quá đến nỗi bạn không kịp nhìn kết quả). Lệnh này cho phép chúng ta nhìn kết quả một cách rõ ràng hơn.

Biên dịch và chạy chương trình C# trên sẽ cho kết quả:

Truyền struct vào phương thức trong C#

3. Bài 03

Khai báo struct

Viết chương trình C# để khai báo một struct có một thuộc tính, một phương thức và một trường private.

Đây là bài tập C# đơn giản minh họa giúp bạn cách khai báo một struct và cách truy cập các phần tử của một struct.

Dưới đây là chương trình C# minh họa lời giải cho bài tập khai báo struct trong C#:

using System;

namespace Csharp
{
    //khai bao struct
    struct newStruct
    {
        private int num;

        public int n
        {
            get
            {
                return num;
            }
            set
            {
                if (value < 50)
                    num = value;
            }
        }
        public void clsMethod()
        {
            Console.WriteLine("\nGia tri duoc luu giu la: {0}\n", num);
        }
    }
    class TestCsharp
    {
        public static void Main()
        {
            Console.Write("\nKhai bao struct co thuoc tinh, phuong thuc va truong private trong C#:\n");
            Console.Write("----------------------------------------------------------------------\n");
            newStruct myInstance = new newStruct();
            myInstance.n = 15;
            myInstance.clsMethod();

            Console.ReadKey();
        }
    }  
}
Nếu bạn không sử dụng lệnh Console.ReadKey(); thì chương trình sẽ chạy và kết thúc luôn (nhanh quá đến nỗi bạn không kịp nhìn kết quả). Lệnh này cho phép chúng ta nhìn kết quả một cách rõ ràng hơn.

Biên dịch và chạy chương trình C# trên sẽ cho kết quả:

Khai báo struct trong C#

4. Bài 04

Khởi tạo struct

Viết chương trình C# để khởi tạo một struct mà không sử dụng toán tử new.

Dưới đây là chương trình C# minh họa lời giải cho bài tập khởi tạo struct trong C#:

using System;

namespace Csharp
{
    public struct newStruct
    {
        public int m, n;
        public newStruct(int pt1, int pt2)
        {
            m = pt1;
            n = pt2;
        }
    }
    // khai bao va khoi tao doi tuong struct
    class TestCsharp
    {
        static void Main()
        {
            Console.Write("\nKhoi tao struct khong su dung toan tu new trong C#:\n");
            Console.Write("----------------------------------------------------\n");

            newStruct myPoint;

            myPoint.m = 30;
            myPoint.n = 40;


            Console.Write("\nnewStruct : ");
            Console.WriteLine("m = {0}, n = {1}", myPoint.m, myPoint.n);

            Console.WriteLine("\nNhan bat ky phim nao de thoat.");
            Console.ReadKey();

            Console.ReadKey();
        }
    }  
}
Nếu bạn không sử dụng lệnh Console.ReadKey(); thì chương trình sẽ chạy và kết thúc luôn (nhanh quá đến nỗi bạn không kịp nhìn kết quả). Lệnh này cho phép chúng ta nhìn kết quả một cách rõ ràng hơn.

Biên dịch và chạy chương trình C# trên sẽ cho kết quả:

Khởi tạo struct trong C#

5. Bài 05

Sử dụng mảng struct

Phát triển bài tập tạo một Book Struct, hay tạo NhanVien Struct, giả sử bây giờ chúng cần lưu giữ thông tin của hàng ngàn cuốn sách hay thông tin của hàng trăm nhân viên, thì bây giờ chúng ta làm như thế nào. Vấn đề này sẽ được giải quyết bởi sử dụng mảng struct trong C#.

Dưới đây là chương trình C# minh họa lời giải cho bài tập sử dụng mảng struct trong C#:

using System;

namespace Csharp
{
    public class TestCsharp
    {
        //khai bao mot struct
        struct point
        {
            //toa do cua diem
            public short x;
            public short y;

            //mau cua diem
            public byte r;
            public byte g;
            public byte b;
        }

        public static void Main()
        {
            point[] p = new point[1000];

            Console.Write("Vi du minh hoa mang struct trong C#:\n");
            Console.Write("-----------------------------------------\n");

            Console.Write("Nhap toa do X cho diem dau tien: ");
            p[0].x = Convert.ToInt16(Console.ReadLine());

            Console.Write("\nNhap toa do Y cho diem dau tien: ");
            p[0].y = Convert.ToInt16(Console.ReadLine());

            Console.Write("\nNhap mau do cho diem dau tien: ");
            p[0].r = Convert.ToByte(Console.ReadLine());

            Console.Write("\nNhap mau xanh la cay cho diem dau tien: ");
            p[0].g = Convert.ToByte(Console.ReadLine());

            Console.Write("\nNhap mau xanh da troi cho diem dau tien: ");
            p[0].b = Convert.ToByte(Console.ReadLine());


            Console.Write("\nNhap toa do X cho diem thu hai: ");
            p[1].x = Convert.ToInt16(Console.ReadLine());

            Console.Write("\nNhap toa do Y cho diem thu hai: ");
            p[1].y = Convert.ToInt16(Console.ReadLine());

            Console.Write("\nNhap mau do cho diem thu hai: ");
            p[1].r = Convert.ToByte(Console.ReadLine());

            Console.Write("\nNhap mau xanh la cay cho diem thu hai: ");
            p[1].g = Convert.ToByte(Console.ReadLine());

            Console.Write("\nNhap mau xanh da troi cho diem thu hai: ");
            p[1].b = Convert.ToByte(Console.ReadLine());

            //... ban co the nhap n diem

            Console.WriteLine(
                "Diem thu nhat tai vi tri ({0},{1}), co mau ({2},{3},{4})",
                p[0].x, p[0].y, p[0].r, p[0].g, p[0].b);

            Console.WriteLine(
                "Diem thu hai tai vi tri ({0},{1}), co mau ({2},{3},{4})",
                p[1].x, p[1].y, p[1].r, p[1].g, p[1].b);

            Console.ReadKey();
        }
    }
}
Nếu bạn không sử dụng lệnh Console.ReadKey(); thì chương trình sẽ chạy và kết thúc luôn (nhanh quá đến nỗi bạn không kịp nhìn kết quả). Lệnh này cho phép chúng ta nhìn kết quả một cách rõ ràng hơn.

Biên dịch và chạy chương trình C# trên sẽ cho kết quả:

Mảng struct trong C#
Trên đây là một số bài tập về Bài tập struct trong C#. Chúng tôi hy vọng, với những bài tập đơn giản này, giúp bạn đọc củng cố lại nguồn kiến thức của mình đã học về struct trong C#. Chúc các bạn thành công!
Ngày:03/11/2020 Chia sẻ bởi:Thanh Nhàn

CÓ THỂ BẠN QUAN TÂM