Quản lí sinh viên

#include <stdio.h>
#include <string.h>
struct NamSinh
{
	int ngay;
	int thang;
	int nam;
};
struct Diem
{
	int toan;
	int ly;
	int hoa;
	float dtb;
};
struct SinhVien
{
	char mssv[30];
	char HoTen[50];
	NamSinh Date;
	Diem DiemHs;
};
void nhap(SinhVien A[], int &n);
void nhap1sv(SinhVien &x);
void xuatallmang(SinhVien A[], int n);
void xuat1sv(SinhVien x);
void timsinhviencodiemtbcaonhat(SinhVien A[], int n);
void sapxepdanhsachtheothutudiemtb(SinhVien A[], int n);
void sapxepanhsachtheothutudiemtoan(SinhVien A[], int n);
void timsinhviencodtblonhon5vakocomonnaoduoi3(SinhVien A[], int n);
void Sinhvienlontuoinhat(SinhVien A[], int n);
void inthongtinsinhvienduocnhap(SinhVien A[], int n);
void xuattensv(char A[50]);
void main()
{
	SinhVien A[30];
	int n;
	nhap(A,n);
	xuatallmang(A,n);
	timsinhviencodiemtbcaonhat(A,n);
	sapxepdanhsachtheothutudiemtb(A,n);
	sapxepanhsachtheothutudiemtoan(A,n);
	timsinhviencodtblonhon5vakocomonnaoduoi3(A,n);
	Sinhvienlontuoinhat(A,n);
	inthongtinsinhvienduocnhap(A,n);
}
void nhap(SinhVien A[], int &n)
{
	scanf("%d", &n);
	for(int i=0;i<n;i++)
		nhap1sv(A[i]);
}
void nhap1sv(SinhVien &x)
{
	fflush(stdin);
	gets(x.mssv);
	gets(x.HoTen);
	int a,b,c;
	scanf("%d%d%d", &a, &b, &c);
	x.Date.ngay=a;
	x.Date.thang=b;
	x.Date.nam=c;
	int d,e,f;
	scanf("%d%d%d", &d, &e, &f);
	x.DiemHs.toan=d;
	x.DiemHs.ly=e;
	x.DiemHs.hoa=f;
	x.DiemHs.dtb=float(d+e+f)/3;
}
void xuatallmang(SinhVien A[], int n)
{
	for(int i=0;i<n;i++)
		xuat1sv(A[i]);
}
void xuat1sv(SinhVien x)
{
	printf("%s\n%s\n%d %d %d\n%d %d %d %f\n", x.mssv, x.HoTen, x.Date.ngay, x.Date.thang, x.Date.nam, x.DiemHs.toan, x.DiemHs.ly,x.DiemHs.hoa, x.DiemHs.dtb);
}
void timsinhviencodiemtbcaonhat(SinhVien A[], int n)
{
	int max=0;
	for(int i=0;i<n-1;i++)
		if(A[i].DiemHs.dtb<A[i+1].DiemHs.dtb)
			max=i+1;
	for(i=0;i<n;i++)
		if(max==i)
		{
			xuattensv(A[i].HoTen);
			break;
		}
}
void sapxepdanhsachtheothutudiemtb(SinhVien A[], int n)
{
	SinhVien tam;
	for(int i=0;i<n-1;i++)
		for(int j=i+1;i<n;j++)
			if(A[i].DiemHs.dtb>A[j].DiemHs.dtb)
			{
				tam=A[i];
				A[i]=A[j];
				A[j]=tam;
			}
	xuatallmang(A,n);
}
void sapxepanhsachtheothutudiemtoan(SinhVien A[], int n)
{
	SinhVien tam;
	for(int i=0;i<n-1;i++)
		for(int j=i+1;j<n;j++)
			if(A[i].DiemHs.toan<A[j].DiemHs.toan)
			{
				tam=A[i];
				A[i]=A[j];
				A[j]=tam;
			}
	xuatallmang(A,n);
}
void timsinhviencodtblonhon5vakocomonnaoduoi3(SinhVien A[], int n)
{
	for(int i=0;i<n;i++)
		if(A[i].DiemHs.dtb>5 && A[i].DiemHs.toan>=3 && A[i].DiemHs.ly>=3 && A[i].DiemHs.hoa>=3)
			xuattensv(A[i].HoTen);
}
void Sinhvienlontuoinhat(SinhVien A[], int n)
{
	SinhVien max;
	max.Date.nam=A[0].Date.nam;
	max.Date.thang=A[0].Date.thang;
	max.Date.ngay=A[0].Date.ngay;
	for(int i=1;i<n;i++)
		if(max.Date.nam>A[i].Date.nam)
			max=A[i];
		else if(max.Date.nam==A[i].Date.nam)
			if(max.Date.thang>A[i].Date.thang)
				max=A[i];
			else if(max.Date.thang==A[i].Date.thang)
				if(max.Date.ngay>A[i].Date.ngay)
					max=A[i];
	xuattensv(max.HoTen);
}
void inthongtinsinhvienduocnhap(SinhVien A[], int n)
{
	char tam[50];
	gets(tam);
	for(int i=0;i<n;i++)
		if(strcmp(tam,A[i].HoTen)==0)
		{
			xuat1sv(A[i]);
			break;
		}
}
void xuattensv(char A[])
{
	printf("%s", A);
}

Bài này em chạy nó in ra được 1 nửa rồi ngưng ko in nữa mọi người giúp em với.

Gỡ lỗi - Debug! Tìm hiểu nó!
Đưa cả tá lên thì ai mà biết trả lời cho bạn.

2 Likes

Kiểm soát lại từng hàm một đi bạn. Bạn cho chạy từng hàm một xem nó có vấn đề từ hàm nào

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