Hiển thị thông tin của n sinh viên trong mảng trên n dòng liên tiếp (Đã được sắp theo thứ tự MASV giảm dần)

Mọi người giúp em với ạ, em chỉ nhập được MASV và Tên của sinh viên rồi sau đó chương trình kết thúc luôn chứ không cho nhập thêm gì nữa ạ. Em cảm ơn mọi người

#include <iomanip>
#include <iostream>
#include <stdio.h>
using namespace std;
#define MAXN 300
struct SinhVien
{
    char MASV[10];
    char HoTen[100];
    char NgaySinh[12];
    char GioiTinh;
    float DiemToan, DiemLy, DiemHoa, DTB;
};
void Swap(int &a, int &b)
{
    int temp = a;
    a = b;
    b = temp;
}
void Nhap(SinhVien A[], int n)
{
    for (int i = 0; i < n; i++)
    {
        cin.getline(A[i].MASV, 10);
        fflush(stdin);
        cin.getline(A[i].HoTen, 100);
        cin.getline(A[i].NgaySinh, 12);
        cin >> A[i].GioiTinh;
        cin >> A[i].DiemToan >> A[i].DiemLy >> A[i].DiemHoa;
        A[i].DTB = (A[i].DiemToan + A[i].DiemLy + A[i].DiemHoa) / 3;
    }
}
void SapXepGiamTheoMASV(SinhVien A[], int n)
{
    for (int i = 0; i < n; i++)
    {
        for (int j = i + 1; j < n; j++)
        {
            if (A[i].MASV < A[j].MASV)
            {
                swap(A[i], A[j]);
            }
        }
    }
}
void Xuat(SinhVien A[], int n)
{
    for (int i = 0; i < n; i++)
        cout << A[i].MASV << '\t' << A[i].HoTen << '\t' << A[i].NgaySinh << '\t' << A[i].GioiTinh << '\t' << A[i].DiemToan << '\t' << A[i].DiemLy << '\t' << A[i].DiemHoa << '\t' << setprecision(3) << A[i].DTB << endl;
}
int main()
{
    SinhVien A[MAXN];
    int n;
    Nhap(A, n);
    SapXepGiamTheoMASV(A, n);
    Xuat(A, n);
    return 0;
}
  1. Hàm Swap bạn viết nhằm mục đích gì? Bạn không hề dùng đến nó.
  2. fflush(stdin) để làm gì vậy?
  3. Bạn có chắc là chương trình kết thúc? Vì sao bạn biết nó kết thúc?
2 Likes
83% thành viên diễn đàn không hỏi bài tập, còn bạn thì sao?