Bài tập kiểu dữ liệu cấu trúc trong c năm 2024

Các mảng trong C cho phép các bạn định nghĩa một vài loại biến có thể giữ giá trị của một vài thành viên có cùng kiểu dữ liệu. Nhưng Struct trong C, hay structure – cấu trúc là một loại dữ liệu khác trong ngôn ngữ lập trình này, cho phép các bạn kết hợp với các dữ liệu khác kiểu nhau.

Để tìm hiểu thêm về các nội dung có liên quan đến structure, hãy cùng khám phá những nội dung bên dưới với R2S nhé!

Struct trong C là gì?

Bài tập kiểu dữ liệu cấu trúc trong c năm 2024
Struct trong C là gì?

Struct trong C là một kiểu dữ liệu tùy chỉnh, được sử dụng để lưu trữ các biến có kiểu dữ liệu khác nhau ở một đối tượng duy nhất. Một struct được định nghĩa bằng cách liệt kê tất cả các biến thành viên bên trong nó, và mỗi biến thành viên có thể có một kiểu dữ liệu khác nhau.

Struct trong c được sử dụng để định nghĩa kiểu dữ liệu mới dựa trên kiểu dữ liệu hiện có và có đặc điểm tập hợp được nhiều thành phần có kiểu dữ liệu khác nhau.

Ví dụ định nghĩa kiểu dữ liệu tên là SinhVien gồm các thành phần như họ tên (kiểu chuỗi), nơi sinh (kiểu chuỗi), điểm trung bình (kiểu số), ….

Sử dụng kiểu dữ liệu mở rộng struct trong các yêu cầu như: Chương trình quản lý nhân sự, mỗi nhân sự gồm họ tên, giới tính, ngày sinh, nơi sinh, bằng cách,… Chương trình quản lý điểm của sinh viên. Các thông tin cần quản lý gồm mã sinh viên, họ tên, môn học, điểm,…

Cú pháp khai báo Struct trong C

Bài tập kiểu dữ liệu cấu trúc trong c năm 2024
Cú pháp khai báo

Trong C, một struct được định nghĩa bằng cách sử dụng từ khóa “struct” kèm theo tên của nó và nội dung của nó được đặt ở cặp dấu ngoặc nhọn {}.

Cú pháp được khai báo như sau:

<struct Kiểu_Dữ_Liệu_Mới {  
  Kiểu_Dữ_Liệu  Thành_Phần_1;  
  Kiểu_Dữ_Liệu  Thành_Phần_2;  
  ...  
  Kiểu_Dữ_Liệu  Thành_Phần_n;
};>

Trong đó Kiểu_Dữ_Liệu có thể là int, long, float, double, char. Bên dưới là ví dụ về định nghĩa kiểu dữ liệu date gồm các thành phần như ngày, tháng và năm

<struct date { 
  int ngay; 
  int thang; 
  int nam;
};>

Sử dụng Struct trong c như thế nào?

Trong ngôn ngữ lập trình C, structure là một kiểu dữ liệu tập hợp các biến có kiểu dữ liệu khác nhau, được sử dụng để lưu trữ các đối tượng có tính chất tương tự như nhau. Để khai báo một struct, ta sử dụng từ khóa struct và đặt tên cho struct đó. Sau đó, ta chỉ định các biến bên trong struct và kiểu dữ liệu của chúng.

Khai báo biến kiểu struct

<Kiểu_Dữ_Liệu_Mới Tên_Biến;>

Ví dụ khai báo biến kiểu date

<date d;>

Truy cập các thành phần bên trong struct trong C

Để truy cập các thành phần bên trong một struct ngôn ngữ lập trình C, bạn có thể sử dụng toán tử dấu chấm “.”

<Tên_Biến.Tên_Thành_Phần;>

Ví dụ truy cập các thành phần của biến d

printf("%d", d.ngay);   //Hiển thị ngày
printf("%d", d.thang);  //Hiển thị tháng
printf("%d", d.nam);   //Hiển thị năm

Bài tập vận dụng: Định nghĩa kiểu dữ liệu môn học biết rằng mỗi môn học gồm tên môn và số giờ.

Một số bài tập thực hành về struct trong c

Bài thực hành số 1: Viết chương trình c lưu tên và tuổi của 5 nhân viên sử dụng mảng cấu trúc (struct). Chương trình cho phép tìm kiếm các thông tin của nhân viên theo tên.

Bài thực hành số 2: Cho một danh sách Struct trong c lưu thông tin của các thí sinh khi thi xét tuyển vào lớp 10 ban A, thông tin gồm :

  • Số báo danh (chuỗi, 5 ký tự)
  • Họ và tên (chuỗi, tối đa 25 ký tự)
  • Điểm toán (số thực)
  • Điểm lý (số thực)
  • Điểm anh văn (số thực)
  • Điểm tổng (số nguyên, trong đó điểm tổng= điểm toán + điểm lý + điểm anh văn).

Yêu cầu thực hiện:

  • Nhập danh sách thí sinh và điểm
  • Hiển thị thông tin những thí sinh có tổng điểm >= 18 và không có môn nào dưới 5
  • Cập nhật điểm của thí sinh theo mã số (mã số được nhập vào)

Tổng kết

Như vậy, qua bài viết về Struct trong C ở trên, R2S chúng tôi đã giúp bạn hiểu được về định nghĩa kiểu dữ liệu mới với structure, sử dụng kiểu dữ liệu sao cho đúng cách nhất.

Đừng quên bỏ lỡ bất cứ bài viết nào của chúng tôi để học thêm nhiều kiến thức hữu ích về ngôn ngữ lập trình C nhé.

  1. Cấu trúc (struct) là kiểu dữ liệu do ngôn ngữ lập trình định nghĩa B. Cấu trúc (struct) là kiểu dữ liệu trong C do người lập trình định nghĩa C. Cấu trúc (struct) là kiểu dữ liệu cơ bản, vô hướng trong C D. Cấu trúc (struct) là kiểu dữ liệu dẫn xuất trong C

Phát biểu nào sau đây là sai?

  1. Trong cấu trúc có thể lồng cấu trúc khác B. Trong cấu trúc không thể lồng cấu trúc khác C. Các thành phần trong cấu trúc có thể có các kiểu dữ liệu khác nhau D. Cấu trúc (struct) là một kiểu dữ liệu do người dùng định nghĩa bao gồm nhiều thành phần có kiểu dữ liệu khác nhau.

Cho khai báo kiểu cấu trúc như sau: struct Canbo { int ID; char name[10]; int age; }; Để có mảng cấu trúc gồm 100 phần tử ta dùng khai báo nào?

  1. A[100] of struct Canbo; B. struct A[100] Canbo; C. struct Canbo A[100];
  1. struct Canbo A[i];

Khai báo dưới đây lỗi ở đâu? struct BankAcc { int ID; double amount; }

  1. Thay từ <struct= bằng <structure= B. Không cho phép hai kiểu dữ liệu khác nhau khai báo trong thành phần của cấu trúc C. Thiếu dấu chấm phẩy (;) sau dấu }
  1. Tên trường <ID= không thể viết hoa

Có bao nhiêu cách khai báo cấu trúc (struct)

A. 1

B. 2

C. 3

D. 4

Đâu là một khai báo đúng một biến có kiểu cấu trúc foo?

  1. struct foo; B. struct foo var; C. foo; D. int foo;

Cú pháp nào để truy cập một thành phần trong biến cấu trúc SV?

  1. SV->var; B. SV; C. SV *var; D. SV-var;

Kiểu dữ liệu nào có thể chứa nhiều thành phần dữ liệu có thể có kiểu dữ liệu khác nhau thành một nhóm duy nhất

  1. Mảng B. Con trỏ C. Tập tin D. Cấu trúc

Cho khai báo sau: struct T { int x; float y; } t,*P, a[10]; Câu lệnh nào không hợp lệ?

  1. P=&t; B. P=&t; C. P=&a[5];
  1. P=&a;

Toán tử nào sau đây sẽ truy xuất 1 thành phần của con trỏ cấu trúc

  1. Toán tử chấm B. Toán tử -> C. Toán tử ++ D. Toán tử *

Làm thế nào để biểu diễn phần tử <Quequan= của SV trong đoạn code sau:

  1. SV1; B. &Quequan;
  1. Các trường nằm rải rác trong bộ nhớ RAM và kích thước của các trường bằng tổng kích thước các trường. C. Có thể khai báo các biến trong union có nhiều kiểu khác nhau. D. Tại một thời điểm ta không thể chứa dữ liệu tại tất cả các thành phần của một biến union được

Đâu là phát biểu sai:

  1. Có thể truyền tham số là một biến struct cho hàm. B. Có thể truyền tham số là một biến con trỏ cho hàm. C. Có thể truyền tham số là một biến con trỏ struct cho hàm. D. Không thể truyền tham số là phần tử của struct cho hàm.

Đâu là phát biểu sai?

  1. Union là dữ liệu đặc biệt trong ngôn ngữ C cho phép bạn lưu trữ các kiểu dữ liệu khác nhau trong cùng một vùng nhớ. B. Union cung cấp một cách hiệu quả cho việc sử dụng một vùng nhớ cho nhiều mục đích. C. Union là một kiểu dữ liệu hoàn toàn giống với struct D. Để truy xuất các thành viên của Union ta sử dụng toán tử dấu chấm (.)

Để truy xuất các thành viên của union ta sử dụng toán tử nào?

  1. Toán tử dấu chấm (.) B. Toán tử dấu chấm phảy (;) C. Toán tử dấu sao (*) D. Toán tử dấu và (&)

Phát biểu nào sau đây là sai?

  1. Định nghĩa, khai báo biến, truy cập đến các thành phần của struct và union là giống nhau B. Size của struct và union bằng tổng size của các thành phần của chúng C. Tại cùng 1 thời điểm run-time, có thể truy cập vào tất cả các thành phần của struct
  1. Tại cùng 1 thời điểm run-time, chỉ có thể truy cập 1 thành phần của union

Khai báo cấu trúc nào sau đây là đúng?

  1. struct {int a,b;} B. struct a_struct {int a,b;}; C. struct a_struct {int a,b;} D. struct a_struct int a,b;

Khai báo nào sau đây là đúng?

  1. union {int x;} B. union a_union{int x;} C. union a_union{int x;}; D. union a_union int x; Đoạn chương trình sau cho kết quả là:

    include typedef struct SV { char Hoten[30]; }; void main() { struct SV m,*p; p=&m; strcpy(m,"ABC"); printf("\n %s",m); }