Tương tự như với phiên bản 2, chúng ta sẽ thử với giả định 2 hàm nhập đã làm tròn phận sự.
Chúng ta sẽ tạo sẵn một mảng cấu trúc.
struct SinhVien sv[3] = {
{"Tran Van A", "tranvanA@email.com","123 HV Da Nang", "CNTT", 6.80},
{"Le Van B", "levanB@email.com","456 HV Da Nang", "CNTT", 7.80},
{"Nguyen Thi C", "nguyenthiC@email.com","789 HV Da Nang", "CNTT", 8.80}
};
Chúng ta có thể thay bằng SinhVien sv[3] = {....cũng được. Bấm Run để chạy thử
Muốn in thông tin của 1 sinh viên ta sẽ định nghĩa hàm xuat(SinhVien x) như sau
void xuat(SinhVien x){
printf("Ho ten : %s\n", x.hoten);
printf("Email : %s\n", x.email);
printf("Dia chi : %s\n", x.diaChi);
printf("Chuyen nganh : %s\n", x.chuyenNganh);
printf("Diem trung binh : %.2lf\n", x.diemTrungBinh);
}
Để chạy thử với 1 sinh viên, giả sử ta muốn in sinh viên đầu tiên tức là in thông tin của sv[0], ta sẽ khai báo một biến x như sau
SinhVien x = sv[0];
Sau đó đơn giản ta gọi hàm xuat(SinhVien x) như sau
xuat(x);
Bây giờ chương trình của chúng ta sẽ thế này
#include "stdio.h"
struct SinhVien{
char hoten[50];
char email[50];
char diaChi[60];
char chuyenNganh[40];
double diemTrungBinh;
};
//Thay struct SinhVien = SinhVien
typedef struct SinhVien SinhVien;
void nhap(SinhVien x);
void nhapSinhVien(SinhVien a[], int n);
void xuat(SinhVien x);
void xuatSinhVien(SinhVien a[], int n);
int main(){
struct SinhVien sv[3] = {
{"Tran Van A", "tranvanA@email.com","123 HV Da Nang", "CNTT", 6.80},
{"Le Van B", "levanB@email.com","456 HV Da Nang", "CNTT", 7.80},
{"Nguyen Thi C", "nguyenthiC@email.com","789 HV Da Nang", "CNTT", 8.80}
};
SinhVien x = sv[0];
xuat(x);
return 0;
}
void nhap(SinhVien x){
}
void nhapSinhVien(SinhVien a[], int n){
}
void xuat(SinhVien x){
printf("Ho ten : %s\n", x.hoten);
printf("Email : %s\n", x.email);
printf("Dia chi : %s\n", x.diaChi);
printf("Chuyen nganh : %s\n", x.chuyenNganh);
printf("Diem trung binh : %.2lf\n", x.diemTrungBinh);
}
void xuatSinhVien(SinhVien a[], int n){
}
Bấm Run để chạy thử, mọi thứ rất ổn.
Hàm xuatSinhVien(SinhVien a[], int n) cũng sẽ được viết theo phong cách...tào lao giống phiên bản 2. Chúng ta tạm cho biến int n là một số cho sẵn, ví dụ 3, sau đó chúng ta sử dụng vòng lặp For để duyệt qua mảng cấu trúc đã cho sẵn, mỗi vòng sẽ gọi hàm xuat(SinhVien x) một lần để in thông tin từng sinh viên. Hình dạng của hàm sẽ rất đơn giản.
void xuatSinhVien(SinhVien a[], int n){
for(int i = 0; i < n; i++){
printf("Thong tin sinh vien thu %d :\n", i + 1);
xuat(a[i]);
}
}
Bấm Run để chạy chương trình
Bây giờ chúng ta sẽ xóa hai dòng lệnh sau
//SinhVien x = sv[0];
//xuat(x);
Để thử 2 hàm xuất thông tin vừa viết, chúng ta tạm coi đã có thông tin từ hàm nhập, đó là mảng cấu trúc SinhVien sv[3].
Trong main(), chúng ta sẽ gọi hàm xuatSinhVien(SinhVien a[], int n) với tham số n sẽ tạm cho bằng 3 và tham số đầu sẽ là sv.
Chương trình sẽ như sau
#include "stdio.h"
struct SinhVien{
char hoten[50];
char email[50];
char diaChi[60];
char chuyenNganh[40];
double diemTrungBinh;
};
//Thay struct SinhVien = SinhVien
typedef struct SinhVien SinhVien;
void nhap(SinhVien x);
void nhapSinhVien(SinhVien a[], int n);
void xuat(SinhVien x);
void xuatSinhVien(SinhVien a[], int n);
int main(){
struct SinhVien sv[3] = {
{"Tran Van A", "tranvanA@email.com","123 HV Da Nang", "CNTT", 6.80},
{"Le Van B", "levanB@email.com","456 HV Da Nang", "CNTT", 7.80},
{"Nguyen Thi C", "nguyenthiC@email.com","789 HV Da Nang", "CNTT", 8.80}
};
xuatSinhVien(sv, 3);
//SinhVien x = sv[0];
//xuat(x);
return 0;
}
void nhap(SinhVien x){
}
void nhapSinhVien(SinhVien a[], int n){
}
void xuat(SinhVien x){
printf("Ho ten : %s\n", x.hoten);
printf("Email : %s\n", x.email);
printf("Dia chi : %s\n", x.diaChi);
printf("Chuyen nganh : %s\n", x.chuyenNganh);
printf("Diem trung binh : %.2lf\n", x.diemTrungBinh);
}
void xuatSinhVien(SinhVien a[], int n){
for(int i = 0; i < n; i++){
printf("Thong tin sinh vien thu %d :\n", i + 1);
xuat(a[i]);
}
}
Bấm Run để chạy chương trình
Mọi thứ đều ổn, nhưng thông tin các sinh viên không tách biệt, vì vậy chúng ta sửa lại hàm xuat(SinhVien x) như sau:
void xuat(SinhVien x){
printf("------------------------\n");
printf("Ho ten : %s\n", x.hoten);
printf("Email : %s\n", x.email);
printf("Dia chi : %s\n", x.diaChi);
printf("Chuyen nganh : %s\n", x.chuyenNganh);
printf("Diem trung binh : %.2lf\n", x.diemTrungBinh);
printf("------------------------\n");
}
Bây giờ nếu chạy lại chương trình, mọi thứ đã rõ ràng hơn.
Chúng ta sẽ tiếp tục với hàm Nhập trong phần sau
Không có nhận xét nào:
Đăng nhận xét