01/10/2018, 22:41

Lập trình C: Bài 13 – Kiểu cấu trúc – struct

Lập trình C: Bài 13 – Kiểu cấu trúc – struct Tháng Một 26, 2018 nguyenvanquan7826 TUT C cơ bản 100 responses Cách đơn giản nhất để tiếp cận về kiểu cấu trúc là xét ví dụ sinh viên. Một lớp có 100 sinh viên mỗi sinh viên gồm họ ...

Lập trình C: Bài 13 – Kiểu cấu trúc – struct

Cách đơn giản nhất để tiếp cận về kiểu cấu trúc là xét ví dụ sinh viên. Một lớp có 100 sinh viên mỗi sinh viên gồm họ tên và mã sinh viên. Hãy nhập dữ liệu cho lớp đó. Hehe. Bạn nghĩ đến cách dùng 2 mảng: 1 mảng lưu tên, 1 mảng lưu mã sinh viên đúng không. Đúng, cách đó không sai… nhưng hãy xem yêu cầu tiếp theo… Thi học kỳ xong, hãy nhập điểm cho từng sinh viên, mỗi sinh viên gồm 10 môn (Toán, Tin, Hóa, Vật lý,…). Giờ bạn thấy sao nào… Dùng 12 mảng chăng… ồ không nên, hãy dùng kiểu cấu trúc. Với kiểu cấu trúc chỉ cần 1 mảng mà thôi.

1. Kiểu cấu trúc

Đối với mảng, chỉ có thể lưu nhiều thông tin có cùng kiểu dữ liệu. Nhưng với kiểu cấu trúc ta có thể lưu thông tin có nhiều kiểu dữ liệu khác nhau.

1.1 VD mở đầu

//code by nguyenvanquan7826
#include <stdio.h>
#include <stdlib.h>

// khai bao struct
struct sinhvien 
{
    char MSV[20]; // ma sinh vien
    char hoten[30]; // ho ten sinh vien
    double toan, tin, anh; // cac diem toan, tin, anh
};

/* Hay thay tat ca fflush(stdin); thanh __fpurge(stdin) khi ban lam tren linux*/

int main() 
{
    /* khai bao 2 bien sv1, sv2 va 1 mang
     * CNPMK10A gom 100 sinh vien
     */
    struct sinhvien sv1, sv2, CNPMK10A[100];

    printf("Nhap du lieu cho sv1:
");
    printf("MSV: "); fflush(stdin);
    gets(sv1.MSV);
    printf("Ho ten: "); fflush(stdin);
    gets(sv1.hoten);
    printf("Diem toan, tin, anh: "); fflush(stdin);
    scanf("%lf %lf %lf", &sv1.toan, &sv1.tin, &sv1.anh);

    printf("Nhap du lieu cho sv2:
");
    printf("MSV: "); fflush(stdin);
    gets(sv2.MSV);
    printf("Ho ten: "); fflush(stdin);
    gets(sv2.hoten);
    printf("Diem toan, tin, anh: "); fflush(stdin);
    scanf("%lf %lf %lf", &sv2.toan, &sv2.tin, &sv2.anh);

    printf("
 --------- Thong tin sinh vien -----
");
    printf("%-20s %-30s %-7s %-7s %-7s
", "MSV", "Ho ten", "Toan", "Tin", "Anh");
    printf("%-20s %-30s %-7.2lf %-7.2lf %-7.2lf
", sv1.MSV, sv1.hoten, sv1.toan, sv1.tin, sv1.anh);
    printf("%-20s %-30s %-7.2lf %-7.2lf %-7.2lf
", sv2.MSV, sv2.hoten, sv2.toan, sv2.tin, sv2.anh);

    return 0;
}

Kết quả:

Nhap du lieu cho sv1:
MSV: DTC1
Ho ten: Pham Thi Ha
Diem toan, tin, anh: 9 9 8
Nhap du lieu cho sv2:
MSV: DTC2
Ho ten: Nguyen Van Quan
Diem toan, tin, anh: 9 9 8

 --------- Thong tin sinh vien -----
MSV                  Ho ten                         Toan    Tin     Anh
DTC1                 Pham Thi Ha                    9.00    9.00    8.00
DTC2                 Nguyen Van Quan                9.00    9.00    8.00

Ở VD mở đầu này, chúng ta có rất nhiều điểu phải bàn

0