30/09/2018, 16:28
bài tập về kiểu dữ liệu struct
Các anh chị giúp em,em nhập dươc diem của từng môn toán,lí,hóa rồi
Nhưng lại không nhập được họ tên của từng người.
#include <conio.h>
#include <stdlib.h>
#include <stdio.h>
typedef struct
{
char ht[20];
float dt;
float dl;
float dh;
float tb;
}
hocsinh;
void inra(hocsinh *hs,int n)
{
int i;
printf("
hoten dimtoan diemly diemhoa diemtb
");
for(i=0;i<n;i++)
{
printf("ho ten thu %d",i);
printf("
%s %.3f %4.0f %2.0f %2.1f
",hs[i].ht,hs[i].dt,hs[i].dl,hs[i].dh,hs[i].tb);
}
}
void nhap(hocsinh *hs,int n)
{
int i;
for(i=0;i<n;i++)
{
printf("ho ten nguoi thu %d",i);
//fflush(stdin);
gets(hs[i].ht);
printf("
diem toan:");
scanf("%f",&hs[i].dt);
printf("
diem hoa:");
scanf("%f",&hs[i].dh);
printf("
diem li:");
scanf("%f",&hs[i].dl);
hs[i].tb=(hs[i].dt+hs[i].dh+hs[i].dl)/3;
}
}
void sapxep(hocsinh *hs,int n)
{
int i,j;
hocsinh tam;
for(i=0;i<n-1;i++)
{
for(j=i+1;j<n;j++)
{
if(hs[i].tb < hs[j].tb)
{
tam=hs[i];
hs[i]=hs[j];
hs[j]=tam;
}
}
}
}
int main()
{
hocsinh *hsinh;
int n;
do
{
printf("
nhap vao danh sach");
scanf("%d",&n);
}
while(n<=0);
hsinh=(hocsinh*)malloc(n*sizeof(hocsinh));
nhap(hsinh,n);
system("cls");//xoa man hinh
//printf("
danh sach vua nhap");
//inra(hsinh,n);
sapxep(hsinh,n);
printf("danh sach da xu li");
inra(hsinh,n);
free(hsinh);
}
Bài liên quan
trong trường hợp này nên sử dụng gets nhé (vì giữa họ tên có khoảng trắng)
sử dụng thêm fflush trước gets luôn
nhập chuỗi ký tự thì cứ fflush(stdin); gets(ch); mà nhập