Ôn tập: struct dữ liệu học sinh
Thuộc phần Logic và luồng điều khiển trong hành trình C của Coddy. Bài học 43 trên 63.
Thử thách
DễTạo một chương trình C minh họa toàn bộ quy trình sử dụng struct trong hệ thống quản lý sinh viên. Chương trình của bạn cần:
- Định nghĩa một
structcó tênStudentvới các thành viên sau:- Một số nguyên
idđể lưu mã số sinh viên - Một số thực
gradeđể lưu điểm của sinh viên
- Một số nguyên
- Trong hàm main, tạo một biến
Studentcó tênstudent1 - Đọc mã số và điểm của sinh viên từ đầu vào bằng
scanf:- Đọc một số nguyên làm mã số và lưu vào
student1.id - Đọc một số thực làm điểm và lưu vào
student1.grade
- Đọc một số nguyên làm mã số và lưu vào
- Sau khi đọc đầu vào, thực hiện các bước kiểm tra và tính toán sau:
- Nếu điểm lớn hơn 100.0, đặt điểm thành 100.0
- Nếu điểm nhỏ hơn 0.0, đặt điểm thành 0.0
- Tính điểm thưởng bằng cách cộng 5.0 vào điểm hiện tại, sau khi kiểm tra
- Nếu điểm thưởng vượt quá 100.0, đặt điểm thưởng thành 100.0
- In thông tin sinh viên theo đúng định dạng sau:
Student Information:ID: [id]Original Grade: [grade]Bonus Grade: [bonus_grade]Grade Status: [status]
- Xác định trạng thái điểm như sau:
- Nếu điểm ban đầu từ 90.0 trở lên:
Excellent - Nếu điểm ban đầu từ 80.0 đến 89.9:
Good - Nếu điểm ban đầu từ 70.0 đến 79.9:
Average - Nếu điểm ban đầu dưới 70.0:
Needs Improvement
- Nếu điểm ban đầu từ 90.0 trở lên:
Thử thách này kiểm tra mức độ hiểu của bạn về cách định nghĩa struct, tạo biến, truy cập thành viên bằng toán tử dấu chấm, xử lý đầu vào bằng scanf và dùng logic điều kiện để kiểm tra, xử lý dữ liệu. Bạn sẽ luyện tập toàn bộ quy trình làm việc với struct trong một tình huống thực tế.
Tự làm thử
#include <stdio.h>
// TODO: Định nghĩa struct Student tại đây
int main() {
// TODO: Tạo biến Student tên là student1
// Đọc đầu vào
int id;
float grade;
scanf("%d", &id);
scanf("%f", &grade);
// TODO: Lưu các giá trị đầu vào vào các thành viên của struct
// TODO: Kiểm tra tính hợp lệ của điểm và tính điểm thưởng
// TODO: Xác định trạng thái điểm
// In ra kết quả
printf("Student Information:\n");
printf("ID: %d\n", /* TODO: In ra ID của sinh viên */);
printf("Original Grade: %.1f\n", /* TODO: In ra điểm ban đầu */);
printf("Bonus Grade: %.1f\n", /* TODO: In ra điểm thưởng */);
printf("Grade Status: %s\n", /* TODO: In ra trạng thái điểm */);
return 0;
}Tất cả bài học trong Logic và luồng điều khiển
1Nền tảng về con trỏ
Con trỏ là gì?Khai báo con trỏToán tử lấy địa chỉ (&)Toán tử giải tham chiếu (*)Con trỏ NULLÔn tập: kiến thức cơ bản về con trỏ4Dự án: Công cụ xử lý văn bản đơn giản
Tổng quan dự ánĐếm ký tự7Cấu trúc (struct)
Struct là gì?Khai báo structTạo biến structTruy cập thành viên của structKhởi tạo structÔn tập: struct dữ liệu học sinh2Con trỏ và mảng
Tên mảng dưới dạng con trỏPhần tử mảng và con trỏPhép toán con trỏSo sánh con trỏÔn tập: duyệt mảng bằng con trỏ5Con trỏ và hàm
Truyền theo giá trịTruyền con trỏ vào hàmSửa đổi biến qua con trỏVí dụ kinh điển: hoán đổiTruyền mảng vào hàmÔn tập: đối số con trỏ hàm3Mảng ký tự và chuỗi
Chuỗi dưới dạng mảng charKý tự kết thúc nullNhập chuỗi bằng scanfDùng strlen()Dùng strcpy()Dùng strcat()Dùng strcmp()Ôn tập: các hàm xử lý chuỗi cơ bản6Quản lý bộ nhớ
Bộ nhớ ngăn xếp và bộ nhớ heapCấp phát động với malloc()Dùng sizeof() để cấp phátKiểm tra lỗi cấp phátGiải phóng bộ nhớ với free()Cấp phát với calloc()Ôn tập: Mảng động9Dự án: Nhập thông tin liên hệ đơn giản
Định nghĩa struct ContactHàm tạo liên hệTự luyện tập: Trình biên dịch C online