30/09/2018, 18:48

Lỗi xuất ra ký tự lạ, quản lý sinh viên bằng mảng

void nhaptungsinhvien(sinhvien&x,int n){
	sinhvien M[n];
	for (int i=0;i<n;i++){
		printf("
Nhap sinh vien thu %d: ",i+1);
		fflush(stdin);
		printf("
Nhap ho va ten: ");
				gets (M[i].hoten);
		//printf("
Ma SV: ");
		//		gets(x.ma);
		//printf("
Gioi tinh (1=nam,0=nu): ");
		//scanf("%d",&x.gioitinh);
		//printf("
Nam sinh: ");
		//scanf("%d",&x.namsinh);
		printf("
Diem so: ");
		scanf("%f",&M[i].diem);
	}
}
void xuatSV(sinhvien&x, int n){
	sinhvien M[n];
	for (int i=0;i<n;i++){
		puts(M[i].hoten);
		//puts(x.ma);
		//if(x.gioitinh==1) puts("Nam");
		//else puts("Nu");
		//printf("%d",x.namsinh);
		printf("
%g

",M[i].diem);
	}
}

Em làm bài quản lý sinh viên bằng mảng. Nhập thì ok nhưng khi xuất thì nó lại in ra ký tự lạ . Ở đây em chỉ cho nhập, xuất tên và điểm thôi

Nguyen Ca viết 20:55 ngày 30/09/2018

sinhvien M[n];

là local variable mà

17XGOD viết 20:54 ngày 30/09/2018

vậy làm sao để xuất được mảng SV ra anh? Lúc đầu em làm nhập 3 người, nó cũng xuất ra 3 người nhưng cùng tên cùng điểm

Nguyen Ca viết 20:54 ngày 30/09/2018

em cho mảng làm tham số ấy &nhanvien[]
em tham khảo bài này

//  Nguyen Huu Ca
//    Lop DCT-1081


#include <stdio.h>
#include <string.h>
#include <conio.h>

typedef struct NhanVien
{
    char mnv[8];
    char hoTen[20];    
    int namSinh;
    char phongBan[10];
    int luongCoBan;
    int thuong;
    int thucLanh;
    
};
typedef struct list
{
    NhanVien nv[100];
    int  sl;
};
void Nhap(list &l);
void Xuat(list l);
void XuatNhanVien(NhanVien a);
int TongThucLanh(list l);
void ThucLanh(list &l);
void NhanVienLuongThap(list l);
int DemNhanvien(list l);
int MinLuong(list l);
void SapXep(list &l);
void CapNhatLuong(list &l);
void HoanVi(NhanVien &a,NhanVien &b);
 main()
{
    list l;
    Nhap(l);
    printf("--DANH SACH NHAN VIEN DA NHAP--\n\n");
    Xuat(l);
    printf("nhan vien luong thap:\n\n");
    NhanVienLuongThap(l);
    printf("tong tien  phai tra cho nhan vien:%d\n\n",TongThucLanh(l));
    printf("so luong nhan vien co luong >12000 la %d\n\n",DemNhanvien(l));
    printf("--CAP NHAP LUONG  TANG 5%%--\n\n");
    CapNhatLuong(l);
    Xuat(l);
    printf("--SAP XEP--\n\n");
    SapXep(l);
    Xuat(l);
    getch();
}
int TongThucLanh(list l)
{
    int i;
    int tongTien=0;
    for(i=0;i<l.sl;i++)
    tongTien=tongTien+l.nv[i].thucLanh;
    
    return tongTien;
    
}
void ThucLanh(list &l)
{
    int i;
    for(i=0;i<l.sl;i++)
        l.nv[i].thucLanh=l.nv[i].luongCoBan+l.nv[i].thuong;
}
int MinLuong(list l)
{
    int i;
    int min=l.nv[0].luongCoBan;
    for(i=1;i<l.sl;i++)
        if(l.nv[i].luongCoBan<min)
            min=l.nv[i].luongCoBan;
    
    return min;
    
    
}
void XuatNhanVien(NhanVien a)
{

    printf("%-6s %-10s %-10d %-8s %-8d  %-8d  %8d",a.mnv,a.hoTen,a.namSinh,a.phongBan,a.luongCoBan,a.thuong,a.thucLanh) ;
    printf("\n\n");
}
void NhanVienLuongThap(list l)
{
    int i;
    int kq=MinLuong(l);
    printf("MNV-----HT---------NS-------PB--------LCB-------Thuong---------TL\n\n");
    for(i=0;i<l.sl;i++)
        if(l.nv[i].luongCoBan==kq)
            XuatNhanVien(l.nv[i]);
        
}
int DemNhanvien(list l)
{
    int dem=0;
    int i;
    for(i=0;i<l.sl;i++)
        if(l.nv[i].thuong>12000)
            dem++;
    return dem;
}
void HoanVi(NhanVien &a,NhanVien &b)
{
    NhanVien tam;
    tam=a;
    a=b;
    b=tam;
}
void SapXep(list &l)
{
    int i,j;
    for(i=0;i<l.sl-1;i++)
    for(j=i+1;j<l.sl;j++)
        if(stricmp(l.nv[i].phongBan,l.nv[j].phongBan)>0)
            HoanVi(l.nv[i],l.nv[j]);
        else
            if(stricmp(l.nv[i].phongBan,l.nv[j].phongBan)==0)
                if(stricmp(l.nv[i].mnv,l.nv[j].mnv)<0)
                    HoanVi(l.nv[i],l.nv[j]);
}
void CapNhatLuong(list &l)
{
    int i;
    for(i=0;i<l.sl;i++)
        l.nv[i].luongCoBan=(int)(l.nv[i].luongCoBan*(1+0.05));
        ThucLanh(l);
}
void Nhap(list &l)
{
    int i;
    printf("nhap so luong:");
    scanf("%d",&l.sl);
    fflush(stdin);
    for(i=0;i<l.sl;i++)
    {
        printf("nhap ma nhan vien:");
        gets(l.nv[i].mnv);
        printf("nhap ho ten:");
        gets(l.nv[i].hoTen);
        printf("nhap phong ban:");
        gets(l.nv[i].phongBan);
        fflush(stdin);
        printf("nam sinh:");
        scanf("%d",&l.nv[i].namSinh);
        printf("luong co bang:");
        scanf("%d",&l.nv[i].luongCoBan);
        printf("thuong :");
        scanf("%d",&l.nv[i].thuong);
        fflush(stdin);
    }
    ThucLanh(l);
    printf("\n");
}
void Xuat(list l)
{
    int i;
    printf("MNV-----HT---------NS-------PB--------LCB-------Thuong---------TL\n\n");
    for(i=0;i<l.sl;i++)
        XuatNhanVien(l.nv[i]);
    printf("\n");
        
}


17XGOD viết 20:54 ngày 30/09/2018

Okay anh để em xem

17XGOD viết 20:51 ngày 30/09/2018

Anh có thể viết cho em code nhập xuất bài của em cho em tham khảo được không em làm nãy giờ mà không được

Bài liên quan
0