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);
}
Minh Hoàng viết 18:37 ngày 30/09/2018

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

Tuấn Nguyễn viết 18:34 ngày 30/09/2018

nhập chuỗi ký tự thì cứ fflush(stdin); gets(ch); mà nhập

Bài liên quan
0