01/10/2018, 10:24
Danh sách chỉ hiện 2 người
ai tìm giúp mình lỗi sai của bài này với. lúc hiện chỉ hiện ra danh sách có 2 người thôi
#include"stdio.h"
#include"conio.h"
#include<string.h>
struct sinhvien
{
char masv[5];
char hoten[30];
int namsinh;
char gioitinh[5];
float diemtb;
};
void Nhap(sinhvien ds[], int n)
{
int i,namsinh;
float diemtb;
printf("
Nhap so sinh vien: "); scanf("%d",&n);
for(i=0;i<n;i++)
{
fflush(stdin);
printf("
Sinh vien thu %d",i+1);
printf("
Nhap ma sinh vien: "); gets(ds[i].masv);
fflush(stdin);
printf("
Nhap ho va ten sinh vien: "); gets(ds[i].hoten);
fflush(stdin);
printf("
Nhap Nam sinh: "); scanf("%d",&ds[i].namsinh);
fflush(stdin);
printf("
Nhap gioi tinh: "); gets(ds[i].gioitinh);
fflush(stdin);
printf("
Nhap diem trung binh: "); scanf("%f",&ds[i].diemtb);
fflush(stdin);
}
//return n;
}
void Hien(sinhvien ds[], int n)
{
int i;
printf("
%10s %20s %10s %8s %10s ","MaSV","Ho Ten","Nam Sinh","Gioi tinh","Diem trung binh");
for(i=0;i<n;i++)
{
printf("
%10s %20s %10d %8s %10f",ds[i].masv,ds[i].hoten,ds[i].namsinh,ds[i].gioitinh,ds[i].diemtb);
}
}
int main()
{
int n;
sinhvien ds[50];
Nhap(ds,n);
Hien(ds,n);
// timnu(ds,n);
// dem(ds,n);
}
Bài liên quan





Biến
nbạn khai báo ở hàmmainchưa có giá trị. Do đó bạn đưa vào hàmNhapđể yêu cầu người dùng nhập vào và dựa vào biếnnnày bạn nhập danh sách học sinh. Và đương nhiên nó cũng thành công. Tuy nhiên một điều là biếnnở đây bạn vừa mới nhập cho nó giá trị thì nó chỉ có giá trị trong hàmNhapthôi. Khi kết thúc hàmNhapvà trở về hammainbiến n của bạn vẫn là một biến với giá trị rác. Và sau đó khi bạn đi hàmHienthì nó là một số n như thuở ban đầu ở hàmmainchứ không phải là biếnnở hàm NhậpDo đó việc bạn không hiên một chuẩn xác được số lượng sinh viên là điều đươn nhiên.
Edit: Để khắc phục được điều này, bạn phải dùng con trỏ để có thể giữ được giá trị của mình khi nhập trong hàm
Nhaphoặc một cách đơn giản hơn đó chính là đưa việc nhậpnra ở hàmmainMình cảm ơn nhé. loay hoay tìm mãi k ra
Thớt về ôn lại tham trị với tham biến