Mình có bài lập trình về Struct trong C. Có thắc mắc về phần hiển thị mảng Struct. Debug ko báo lỗi. Mà khi mình thực hiện 2 lệnh in mảng Struct thì chỉ được 1, đến lệnh hiển thị tiếp theo thì ko hiển thị mà báo lỗi ko chạy tiếp. Mong mọi người chỉ giúp. Thanks all!!!
#include"conio.h"
#include"stdio.h"
struct NhanVien
{
char HoTen[100];
int NamSinh;
float HSL;
};
void InNV(struct NhanVien a[], int n)
{
printf("%-20s %10s %15s %-10s\n", "Ho ten", "Nam sinh", "He so luong");
for (int i = 1; i <= n; i++)
{
printf("%-20s %10d %15.2f\n", a[i].HoTen, a[i].NamSinh, a[i].HSL);
}
}
int main()
{
struct NhanVien a[100];
int n, i;
// Nhap n nhan vien
printf("Nhap so luong nhan vien: "); scanf("%d", &n);
while (n <= 1 )
{
printf("Nhap lai so luong nhan vien > 1: "); scanf("%d", &n);
}
for (i = 1; i <= n; i++)
{
#define nv a[i]
printf("Nhap du lieu cho sinh vien thu %d:\n", i);
printf("Ho ten: ");
// gets(nv.HoTen);
scanf("%s", &nv.HoTen);
fflush(stdin);
printf("Nam sinh: ");
scanf("%d", &nv.NamSinh);
printf("He so luong: ");
scanf("%f", &nv.HSL);
}
// Hien thi danh sach nhan vien co HSL duoi 3.67
printf("------Danh sach nhan vien co he so luong duoi 3.67: \n");
printf("%-20s %10s %15s %-10s\n", "Ho ten", "Nam sinh", "He so luong");
for (i = 1; i <= n; i++)
{
#define nv a[i]
if (nv.HSL < 3.67)
printf("%-20s %10d %15.2f\n", nv.HoTen, nv.NamSinh, nv.HSL);
}
// Thay doi thong tin nhan vien thu k
int k;
struct NhanVien s;
printf("Nhap thu tu nhan vien can chinh sua thong tin (tu 1 den %d): ",n);
scanf("%d", &k);
while (k <= 0|| k > n)
{
printf("Nhap lai thu tu nhan vien can chinh sua thong tin: ");
scanf("%d", &k);
}
printf("Nhap thong tin moi cho nhan vien thu %d: \n", k);
fflush(stdin);
printf("Ho ten: ");
//gets(nvs.HoTen);
scanf("%s", &s.HoTen);
fflush(stdin);
printf("Nam sinh: ");
scanf("%d", &s.NamSinh);
printf("He so luong: ");
scanf("%f", &s.HSL);
a[k] = s;
// Sap xep danh sach nhan vien theo nam sinh tang dan va hien thi
fflush(stdin);
struct NhanVien tg;
for(i = 1; i < n; i ++)
for(int j = i+1; j <= n; j ++)
{
if(a[i].NamSinh > a[j].NamSinh)
{
tg = a[i];
a[i] = a[j];
a[j] = tg;
}
}
printf("Danh sach da sap xep la:\n");
InNV(a,n);
getch();
return 0;
}