Tạo hàm thông tin sinh viên bằng struct trong C

1. Sắp xếp danh sách họ tên, điểm trung bình sinh viên theo thứ tự tăng dần.

#include <stdio.h>
#include <string.h>
struct sinhvien{
char mssv[30];
char hoten[30];
float dtb;
};
typedef struct sinhvien sv;
void soluongmang(int &n){
do{
printf(“So luong sinh vien: “);
scanf(“%d”,&n);
}while(n<=0);
}void nhap1sv(sv &b){
fflush(stdin);
printf(“Nhap ten sinh vien: “);
gets(b.hoten);
printf(“MSSV: “);
gets(b.mssv);
printf(“DTB: “);
scanf(“%f”,&b.dtb);
}
void nhapmangsinhvien(sv a[], int n){
for(int i=0; i<n;i++){
printf(“Sinh vien[%d]\n”,i);
nhap1sv(a[i]);
}
}
void xuat1sinhvien(sv b){
printf(“%s, %s, %0.1f \n”,b.hoten,b.mssv,b.dtb);
}
void xuatmangsinhvien(sv a[], int n){
for(int i=0; i<n;i++){
xuat1sinhvien(a[i]);
}

}
void sapxephoten(sv a[], int n){
sv tam;
for(int i=0; i<n-1;i++){
for(int j=i+1; j<n;j++){
if(strcmp(a[i].hoten,a[j].hoten) > 0){
tam=a[i];
a[i]=a[j];
a[j]=tam;
}

}
}

}
void sapxepdtb(sv a[], int n){
sv tam;
for(int i=0; i<n-1; i++){
for(int j=i+1; j<n;j++){
if(a[i].dtb > a[j].dtb){
tam=a[i];
a[i]=a[j];
a[j]=tam;
}
}

}

}
int main(){
int n;
sv a[100],b;
soluongmang(n);
nhapmangsinhvien(a,n);
xuatmangsinhvien(a,n);
printf(“\nDanh sach sinh vien sap xep theo ho ten \n”);
sapxephoten(a,n);
xuatmangsinhvien(a,n);
printf(“\nDanh sach sinh vien sap xep theo diem trung binh \n”);
sapxepdtb(a,n);
xuatmangsinhvien(a,n);
return 0;
}