Cấu trúc kiểu dữ liệu sinh viên

11
20070

Bài toán:

Cho thông tin điểm các môn học sau: NNLT, Tin học, Toán A1. Hãy khai báo một cấu trúc mô tả điểm các môn học của 1 sinh viên. Sau đó viết hàm thực hiện các chức năng sau:

Nhập, xuất thông tin điểm của 1 sinh viên.
Tính điểm trung bình 3 môn.
Xếp loại cho sinh viên đó theo điều kiện:

Xuất sắc: ĐTB>=9
Giỏi với: 8.0<=ĐTB<9
Khá với: 6.5<=ĐTB<8.0
Trung bình: 5.0<=ĐTB<6.5
Yếu: ĐTB<5

Xử lý bài toán:

Khai báo thư viện

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

Khai báo struct sinh viên gồm:

Họ tên

Mã số sinh viên

Lớp

Năm sinh

Điểm ngôn ngữ lập trình

Điểm tin học

Điểm toán a1

struct SinhVien
{
	char hoten[30],MSSV[20],lop[10];
	float DiemNNLT,Tinhoc,ToanA1;
	int namsinh;
};
typedef SinhVien sinhvien;

Khai báo các hàm cần sử dụng

void nhap1sv(sinhvien &sv);
void xuat1sv(sinhvien sv);
float DiemTB(sinhvien sv);
char* XepLoai(sinhvien sv);

Viết hàm nhập

void nhap1sv(sinhvien &sv)
{
	printf("\nNhap vao ho va ten sinh vien: ");
	fflush(stdin);
	gets(sv.hoten);
	printf("Nhap vao ma so sinh vien: ");
	fflush(stdin);
	gets(sv.MSSV);
	printf("Nhap vao lop cua sinh vien ");
	fflush(stdin);
	gets(sv.lop);
	printf("\nNam sinh cua sinh vien: ");
	scanf("%d",&sv.namsinh);
	do
	{
		printf("\nNhap vao diem mon NNLT ");
		scanf("%f",&sv.DiemNNLT);
		if(sv.DiemNNLT>10 || sv.DiemNNLT<0)
			printf("\nDiem tu 0 den 10!\nVui long kiem tra lai");
	}while(sv.DiemNNLT < 0 || sv.DiemNNLT > 10);
	do
	{
		printf("\nNhap vao diem mon tin hoc ");
		scanf("%f",&sv.Tinhoc);
		if(sv.Tinhoc > 10 || sv.Tinhoc < 0)
			printf("\nDiem tu 0 den 10!\nVui long kiem tra lai");
	}while(sv.Tinhoc > 10 || sv.Tinhoc < 0);
	do
	{
		printf("\nNhap vao diem mon toan A1 ");
		scanf("%f",&sv.ToanA1);
		if(sv.ToanA1 > 10 || sv.ToanA1 < 0)
			printf("\nDiem tu 0 den 10!\nVui long kiem tra lai");
	}while(sv.ToanA1 < 0 || sv.ToanA1 > 10);
}

Viết hàm xuất

void xuat1sv(sinhvien sv)
{
	printf("\nHo va ten sinh vien: %s",sv.hoten);
	printf("\nMa so sinh vien: %s",sv.MSSV);
	printf("\nLop hoc: %s",sv.lop);
	printf("\nNam sinh: %d",sv.namsinh);
	printf("\nDiem mon NNLT: %8.2f",sv.DiemNNLT);
	printf("\nDiem mon tin hoc: %8.2f",sv.Tinhoc);
	printf("\nDiem mon toan A1: %8.2f",sv.ToanA1);
	printf("\nDiem trung binh: %8.2f",DiemTB(sv));
	printf("\nXep loai: %s",XepLoai(sv));
}

Viết hàm tính trung bình

float DiemTB(sinhvien sv)
{
	float tb;
	tb=(sv.DiemNNLT +sv.Tinhoc +sv.ToanA1)/3;
	return tb;
}

Viết hàm xếp loại

char*XepLoai(sinhvien sv)
{
	float tb=DiemTB(sv);
	if(tb>=9)
		return "Xuat sac";
	else if(tb>=8 && tb<9)
		return "Gioi";
	else if(tb>=6.5 && tb<8)
		return "Kha";
	else if(tb>=5 && tb<6.5)
			return "Trung binh";
	else
		return "Yeu";
}

Viết hàm main

void main()
{
	sinhvien sv;
	nhap1sv(sv);
	xuat1sv(sv);
	getch();
}

Mình chia sẽ code này đê các bạn tham khảo các vấn đề tương tự. Tuy nhiên các bạn nên tự làm lại, đừng nên copy. Nếu gặp vấn đề gì khó khăn, hoặc thắc mắc gì, các bạn có thể đặt câu hỏi ở cuối bài. Mình sẽ giải đáp.

Chúc các bạn thành công!

11 COMMENTS

  1. AD biết cách khai báo mảng cấu trúc để lưu trữ danh sách SV và đọc nội dung file lưu vào mảng cấu trúc. Mình đọc đề không hiểu . AD giúp em câu này nhé

  2. Chào anh chị.
    Em mới học phần lập trình C cơ bản mong anh, chị chỉ giúp.
    Làm sao để điểm trung bình sau khi tính xong nó trả về a.dtb để in ra màn hình được ạ
    #include
    int i;
    typedef struct Diem
    {
    float t,l,h;
    };

    typedef struct Hsinh
    {
    char ten[30],msv[20];
    Diem tlh;
    float dtb;
    };

    void Nhap ( Hsinh a[] , int n)
    {
    int i;
    for (i=1;i<=n;i++)
    {
    fflush(stdin);
    printf("sinh vien thu %d ten : ",i);
    gets(a[i].ten);
    printf(" lop: ");
    gets(a[i].msv);
    printf("diem mon toan : ");
    scanf("%f",&a[i].tlh.t);
    printf("diem mon ly : ");
    scanf("%f",&a[i].tlh.l);
    printf("diem mon hoa : ");
    scanf("%f",&a[i].tlh.h);
    }
    }
    void DTB ( Hsinh a[] , int n , Hsinh a[].dtb)
    {
    float t;
    for(i=1;i<=n;i++)
    t=((a[i].tlh.t) + (a[i.tlh.l) +(a[i].tlh.h))/3 ;
    }

    void Xuat (Hsinh a[], int n)
    {
    int i;

    for (i=1;i<=n;i++)
    printf("%25s | %10s |%.3f\n",a[i].ten,a[i].msv,a[i].dtb);
    }
    main()
    {
    Hsinh a[100];
    int n;
    printf("nhap vao vo phan tu : ");
    scanf("%d",&n);
    Nhap(a,n);
    printf (" \ndanh sach la :\n ");
    Xuat(a,n);
    }

This site uses Akismet to reduce spam. Learn how your comment data is processed.