Pages

Kiểu dữ liệu có cấu trúc - Struct

0

Trong lập trình, đôi khi các kiểu dữ liệu cơ sở chưa đủ mềm dẻo để cho cái bài toán thực tế. Các sự vật, hiện tượng trong thực tế rất phức tạp và có nhiều tình nhất khác nhau. Người lập trình có thể định nghĩa các kiểu dữ liệu mới có cấu trúc phù hợp với từng bài toán cụ thể

Trong khuôn khổ của bài này, ta sẽ tìm hiểu cách khai báo và sử dụng Struct (1 loại kiểu dữ liệu có cấu trúc) trong ngôn ngữ lập trình C.

  • Khai báo kiểu dữ liệu
    struct TênCấuTrúc {
    KiểuDữLiệu1  ThànhPhần1;
    KiểuDữLiệu2  ThànhPhần2;
    ...
    KiểuDữLiệun  ThànhPhầnn;
    };
    
  • Khai báo biến có KDL là Struct
        
    struct TênCấuTrúc TênBiến;
    

Ví dụ : Mô tả 1 kiểu dữ liệu HocSinh bao gồm Họ tên, Năm Sinh, Điểm Trung Bình

struct hocsinh {
char *HoTen;    
int NamSinh;    
float DiemTB;};
Khai báo biến A và mảng hs có kiễu dữ liệu là học sinh
struct hocsinh A; //A có KDL HocSinh
struct hocsinh hs[10];  //Mảng hs có KDL HocSinh

Để tiện cho việc khai báo các biến có KDL là 1 struct, người ta thường khai báo thêm :

typedef struct TênCấuTrúc TênCấuTrúcMới;
Khi đó để khai báo 1 biến có KDL cấu trúc, ta chỉ cần khai báo : TênCấuTrúcMới TênBiến;

Ví dụ với KDL Học sinh đã khai báo ở trên, ta có thể khai báo lại như sau :

struct hocsinh {
char *HoTen;
int NamSinh;
float DiemTB;
};
typedef struc hocsinh HocSinh;
HocSinh a, hs[10];

Truy xuất 1 thành phần của biến cấu trúc

  • Biến thường : TênBiến.TênThànhPhần
  • Biến con trỏ : TênConTrỏ->TênThànhPhần

Một số ví dụ với KDL Phân Số

struc phanso {    
int Tu;    
int Mau;
};
typedef struct phanso PhanSo;
//Nhập 1 Phân số
void NhapPS(PhanSo &ps) {    
printf("Nhap tu so: "); 
scanf("%d",&ps.Tu);    
printf("Nhap mau so: "); 
scanf("%d",&ps.Mau);
}
//Xuất 1 Phân số
void XuatPS(PhanSo ps){    
printf("%d/%d",ps.Tu,ps.Mau);
}
//Nhập mảng Phân số
void NhapMang(PhanSo ps[],int &n){    
printf("So phan tu: "); 
scanf("%d",&n);    
for (int i = 0; i < n; i++)    {        
printf("Nhap phan so thu %d",i);        
NhapPS(ps[i]);    
}
}
//Xuất mảng Phân số
void XuatMang(PhanSo ps[], int n){    
for (int i = 0; i < n; i++) {        
XuatPS(ps[i]);        
printf(" "); // Khoảng trắng    
}}

No comments:

Post a Comment

Có thể post link nhaccuatui, youtube, link hình và link mp3

[size="cở chữ"]Chữ[/size], [color="màu chữ"]Chữ[/color]

Chèn Emoticons
:) :)
:( :(
:( :((
:)) :))
=(( =((
=)) =))
;) ;)
:D :D
:X :X
X( X(
~X( ~X(
:-*
[-(
8-x 8-x
I-)

Recent Posts

    Recent Comments

    Back to top