Code:
#include "stdio.h"
#include "conio.h"
#include "string.h"
typedef struct NgayThang{
unsigned char Ngay;
unsigned char Thang;
unsigned int Nam;
};
typedef struct SinhVien{
char MSSV[10];
char HoTen[40];
NgayThang NgaySinh;
int Phai;
char DiaChi[40];
};
//nhap sinh vien
SinhVien Nhap(){
SinhVien sV;
printf("\tMSSV: ");
gets(sV.MSSV);
printf("\tHo ten: ");
gets(sV.HoTen);
printf("\tNgay sinh: ");
scanf("%d",&sV.NgaySinh.Ngay);
printf("\tThang: ");
scanf("%d",&sV.NgaySinh.Thang);
printf("\tNam sinh: ");
scanf("%d",&sV.NgaySinh.Nam);
printf("\tGioi tinh (0:Nu,1:Nam): ");
scanf("%d",&sV.Phai);
flushall();
printf("\tDia chi:");
gets(sV.DiaChi);
return sV;
}
//nhap n sinh vien
SinhVien * Nhap(unsigned int n) {
SinhVien *temp = new SinhVien[n];
for(int i = 0; i<n; i++)
{
printf("Nhap sinh vien thu %d\n",i+1);
temp[i] = Nhap();
}
return temp;
}
//xuat 1 sinh vien
void Xuat(SinhVien sv) {
printf("%s", sv.MSSV);
printf("\t%s\t",sv.HoTen);
if(sv.Phai == 1)
printf("\tNam");
else
printf("\tNu");
printf("\t%d-%d-%d\t",sv.NgaySinh.Ngay,sv.NgaySinh.Thang,sv.NgaySinh.Nam);
printf("\t%s\n",sv.DiaChi);
}
//xuat n sinh vien ra man hinh
void Xuat(SinhVien *sv, unsigned int n) {
printf("\nMSSV\tHo ten\t\tPhai\tNgay sinh\tDia vhi\n");
for(int i =0; i<n; i++)
Xuat(sv[i]);
}
//sap xep danh sach sinh vien tang dan theo Nam sinh
void BubbleSort(SinhVien * sv,unsigned int n) {
for(unsigned int i=0; i<n-1; i++)
for(unsigned int j=n-1; j>i; j--)
if(sv[j].NgaySinh.Nam>sv[j-1].NgaySinh.Nam)
{
SinhVien temp = sv[j];
sv[j] = sv[j-1];
sv[j-1] = temp;
}
}
//chuong trinh chinh
void main() {
clrscr();
unsigned int n;
SinhVien *sv;
printf("Nhap vao so sinh vien:");
scanf("%d",&n);
flushall();
sv = Nhap(n);
BubbleSort(sv,n);
Xuat(sv,n);
getch();
}