Bài tập struct sinh viên cơ bản chạy không báo lỗi cũng không in ra gì cả

Mọi người xem giúp em hàm void XuatSinhVien(SINHVIEN a[], int n); sai chỗ nào mà sao khi chạy thì nó không báo lỗi và cũng không in ra gì hết. :sweat:

#include <stdio.h>
#define MAX 100

struct DIEM
{
    float toan;
    float ly;
    float hoa;
};
struct SINHVIEN
{
    char mssv[10];
    char ten[30];
    char ns[20];
    DIEM diem;
};

void NhapMotSinhVien(SINHVIEN sv);
void NhapSinhVien(SINHVIEN a[], int &n);
void XuatSinhVien(SINHVIEN a[], int n);
void NhapDiem(DIEM &d);

int main()
{
    int n;
    SINHVIEN a[MAX];
    NhapSinhVien(a, n);
    XuatSinhVien(a,n);
    return 0;
}

void NhapDiem(DIEM &d)
{
    printf("diem toan: ");
    scanf("%f", &d.toan);
    printf("diem hoa: ");
    scanf("%f", &d.hoa);
    printf("diem hoa: ");
    scanf("%f", &d.hoa);
}

void NhapMotSinhVien(SINHVIEN sv)
{
    fflush(stdin);
    printf("Ma so sinh vien: ");
    gets(sv.mssv);
    printf("Ho va Ten: ");                      fflush(stdin);
    gets(sv.ten);
    printf("Ngay sinh: ");                      fflush(stdin);
    gets(sv.ns);
    NhapDiem(sv.diem);
}

void NhapSinhVien(SINHVIEN a[], int &n)
{
    printf("Nhap so luong sinh vien: ");
    scanf("%d", &n);
    for(int i=0; i<n; i++)
    {
        printf("Nhap Thong tin sinh vien thu: %d\n", i+1);
        NhapMotSinhVien(a[i]);
    }
}

void XuatSinhVien(SINHVIEN a[], int n)
{
    printf("\t\t----------------THONG TIN SINH VIEN-------------------\n");
    printf("%-10s %-25s %-15s %7s %7s %7s\n", "MSSV", "Ho va Ten", "Ngay Sinh", "Toan", "Ly", "Hoa");
    for(int i=0; i<n; i++)
    {
        printf("%-10s %-25s %-15s ", a[i].mssv, a[i].ten, a[i].ns);
        printf("%7.2f %7.2f %7.2f\n", a[i].diem.toan, a[i].diem.ly, a[i].diem.hoa);
    }
}
#include <stdio.h>
#define MAX 100

struct DIEM
{
    float toan;
    float ly;
    float hoa;
};
struct SINHVIEN
{
    char mssv[10];
    char ten[30];
    char ns[20];
    DIEM diem;
};

void NhapMotSinhVien(SINHVIEN sv);
void NhapSinhVien(SINHVIEN a[], int &n);
void XuatSinhVien(SINHVIEN a[], int n);
void NhapDiem(DIEM &d);

int main()
{
    int n;
    SINHVIEN a[MAX];
    NhapSinhVien(a, n);
    XuatSinhVien(a, n);
    return 0;
}

void NhapDiem(DIEM &d)
{
    printf("diem toan: ");
    scanf("%f", &d.toan);
    printf("diem hoa: ");
    scanf("%f", &d.hoa);
    printf("diem hoa: ");
    scanf("%f", &d.hoa);
}

void NhapMotSinhVien(SINHVIEN *sv)
{
    fflush(stdin);
    printf("Ma so sinh vien: ");
    gets(sv->mssv);
    printf("Ho va Ten: ");                      fflush(stdin);
    gets(sv->ten);
    printf("Ngay sinh: ");                      fflush(stdin);
    gets(sv->ns);
    NhapDiem(sv->diem);
}

void NhapSinhVien(SINHVIEN a[], int &n)
{
    printf("Nhap so luong sinh vien: ");
    scanf("%d", &n);
    for (int i = 0; i < n; i++)
    {
        printf("Nhap Thong tin sinh vien thu: %d\n", i + 1);
        NhapMotSinhVien(&a[i]);
    }
}

void XuatSinhVien(SINHVIEN a[], int n)
{
    printf("\t\t----------------THONG TIN SINH VIEN-------------------\n");
    printf("%-10s %-25s %-15s %7s %7s %7s\n", "MSSV", "Ho va Ten", "Ngay Sinh", "Toan", "Ly", "Hoa");
    for (int i = 0; i < n; i++)
    {
        printf("%-10s %-25s %-15s ", a[i].mssv, a[i].ten, a[i].ns);
        printf("%7.2f %7.2f %7.2f\n", a[i].diem.toan, a[i].diem.ly, a[i].diem.hoa);
    }
}

p/s: code C này compile bằng VC++ thì được. Nhưng compile bằng gcc thì sai nhé.

83% thành viên diễn đàn không hỏi bài tập, còn bạn thì sao?