30/09/2018, 16:16
Bài tập cấu trúc dữ liệu(Làm sao nhập được N sinh viên)
Phần này chưa học, nên muốn tìm hiểu trước. Code trên là của người khác
Đề thi là như thế này:
Cho một danh sách sinh viên được mô tả chi tiết như sau:
- Danh sách sinh viên gồm n sinh viên. với n được nhập bất kỳ.
- Thông tin một sinh viên bao gồm: Số thứ tự, Mã số sinh viên, Họ tên sinh viên, Điểm Nhập môn lập trình, Môn toán A1, Môn toán A2, Môn Vật lý kỹ thuật, Môn anh văn, Điểm trung bình tích lũy, Xếp loại (xuất sắc, giỏi, khá, trung bình, yếu).
- Thông tin môn học bao gồm: Mã môn, Tên môn, Số tín chỉ, Điểm.
Thực hiện các yêu cầu sau:
a) Hãy thiết kế và xây dựng các cấu trúc (struct) phù hợp cho bài toán (3 điểm).
b) Xây dựng một chương trình hoàn chỉnh cho một lớp học đảm bảo các thao tác sau: - Hàm nhập xuất danh sách sinh viên (2 điểm).
- Tìm một sinh viên thông qua mã số sinh viên hoặc qua tên sinh viên (1 điểm)
- Tìm sinh viên có điểm trung bình cao nhất (1 điểm)
- Liệt kê danh sách các sinh viên thuộc một loại bất kỳ (1 điểm)
- Thêm, xóa một sinh viên ra khỏi danh sách (2 điểm)
- Sắp xếp danh sách sinh viên tăng dần (1 điểm).
- Theo điểm trung bình tích lũy
- Hoặc Theo tên theo thứ tự ABC …
Lưu ý:
- ĐTBTC là trung bình cộng của tất cả các môn dựa trên điểm số và số tín chỉ.
- Lưu ý: Xếp loại được tính như sau:
- Xuất sắc: ĐTBTL>=9
- Giỏi với: 8.0<=ĐTBTL<9
- Khá với: 6.5<=ĐTBTL<8.0
- Trung bình: 5.0<=ĐTBTL<6.5
- Yếu: ĐTBTL<5
#include <stdio.h>
#include <conio.h>
#pragma pack(1) // Tránh bị làm tròn bộ nhớ.
// Khai báo cấu trúc dữ liệu sinh viên.
struct SinhVien
{
char MaSo[30];
float DiemToan, DiemLy, DiemHoa;
};
typedef struct SinhVien SINHVIEN; // Đổi "struct SinhVien" thành "SINHVIEN"
void NhapDuLieu(SINHVIEN &);
void XuatSinhVien(SINHVIEN);
float TinhDiemTrungBinh(SINHVIEN);
// Hàm nhập dữ liệu sinh viên.
void NhapDuLieu(SINHVIEN &x) // Chú ý: Phải có &: Tham chiếu.
{
fflush(stdin); // Xóa bộ nhớ đệm.
printf("
Nhap vao ho ten: ");
gets(x.MaSo);
// Nhập điểm toán.
do{
printf("
Nhap vao diem toan: ");
scanf("%f", &x.DiemToan);
if(x.DiemToan < 0 || x.DiemToan > 10)
{
printf("
Diem toan khong hop le. Xin kiem tra lai !");
}
}while(x.DiemToan < 0 || x.DiemToan > 10);
// Nhập điểm lý.
do{
printf("
Nhap vao diem ly: ");
scanf("%f", &x.DiemLy);
if(x.DiemLy < 0 || x.DiemLy > 10)
{
printf("
Diem ly khong hop le. Xin kiem tra lai !");
}
}while(x.DiemLy < 0 || x.DiemLy > 10);
// Nhập điểm hóa.
do{
printf("
Nhap vao diem hoa: ");
scanf("%f", &x.DiemHoa);
if(x.DiemHoa < 0 || x.DiemHoa > 10)
{
printf("
Diem hoa khong hop le. Xin kiem tra lai !");
}
}
while(x.DiemHoa < 0 || x.DiemHoa > 10);
}
// Hàm xuất sinh viên.
void XuatSinhVien(SINHVIEN x)
{
printf("
Ma so: %s", x.MaSo);
printf("
Diem toan: %f", x.DiemToan);
printf("
Diem ly: %f", x.DiemLy);
printf("
Diem hoa: %f", x.DiemHoa);
printf("
Diem trung binh la: %f", TinhDiemTrungBinh(x));
}
// Tính điểm trung bình của sinh viên.
float TinhDiemTrungBinh(SINHVIEN x)
{
return (x.DiemToan + x.DiemLy + x.DiemHoa) / 3;
}
void main()
{
SINHVIEN x;
NhapDuLieu(x);
XuatSinhVien(x);
printf("
sizeof = %d", sizeof(x));
getch();
}
Bài liên quan
Em viết cái đề cụ thể ra đi @Kelvin_Nguy_n? Em trình bày khó hiểu quá
có gì mà ko nhập được n sinh viên. mình mới tạo 1 struct với danh sách học sinh trong lớp học. bạn tìm khoá wiki có j ko hiểu hỏi mình
Phần này chưa học, nên muốn tìm hiểu trước. Code trên là của người khác
Đề thi là như thế này:
Cho một danh sách sinh viên được mô tả chi tiết như sau:
Thực hiện các yêu cầu sau:
a) Hãy thiết kế và xây dựng các cấu trúc (struct) phù hợp cho bài toán (3 điểm).
b) Xây dựng một chương trình hoàn chỉnh cho một lớp học đảm bảo các thao tác sau:
Lưu ý:
quá dễ. đầu tiên bạn hãy tạo các thông tin cho 1 sinh viên đi. sau đó là bao nhiêu sinh viên chẳng được. làm từng bước nhỏ trc tránh sai xót. có j cứ lên đây hỏi ok
Theo mình là bạn có thể dùng danh sách liên kết hoặc dùng mảng cũng được,nhưng dùng danh sách liên kết có vẻ thú vị hơn đấy.Bạn có thể tham khảo các video về danh sách liên kết của anh Đạt đấy.
đề yêu cầu dùng struct mà hehe
Không nên hỏi chèn vào topic của người khác @Nhanh_Lan_R_ng, em có topic riêng của em rồi mà.
I moved a post to an existing topic: Off-topics will be moved here
Dùng mảng hoặc biến con trỏ để lưu dữ liệu sinh viên
Tìm một sinh viên thông qua mã số sinh viên hoặc qua tên sinh viên thi lam như thế nào?
Tìm 1 số có ở trong mảng không thì bạn làm thế nào?
Viết 1 hàm tìm mã hoặc tên
Kiểu cấu trúc struct trong C
Bạn có thể tham khảo những video này. Ngoài ra đang quay lại video cấu trúc struct C++ có những câu hỏi trên của bạn .
2 posts were split to a new topic: Thắc mắc bài tập struct