#include <stdio.h>
#include <string.h>
// Câu 2: Định nghĩa cấu trúc dữ liệu
typedef struct {
int tt;
char hoTen[50];
float heSo1;
float heSo2;
float heSo3;
float diemTB;
char xepLoai[20];
char khenThuong[20];
} HocSinh;
int main() {
int n = 7; // Số lượng học sinh theo bảng trong ảnh
HocSinh ds[100];
// Khởi tạo dữ liệu mẫu dựa trên bảng trong đề bài
char names[][50] = {"Nguyen Van A", "Tran Thi B", "Le Van C", "Hoang Thi D", "Vu Van E", "Ngo Thi D", "Thai Van B"};
float h1[] = {6, 7, 6, 3, 6, 2.5, 9};
float h2[] = {5, 8, 4.5, 5, 5, 3, 8};
float h3[] = {8, 9.5, 7, 7, 6, 4, 9};
// Câu 3: Điền các cột trống theo quy tắc
int countKha = 0, countGioi = 0, countYeu = 0;
for (int i = 0; i < n; i++) {
ds[i].tt = i + 1;
strcpy(ds
[i
].
hoTen, names
[i
]); ds[i].heSo1 = h1[i];
ds[i].heSo2 = h2[i];
ds[i].heSo3 = h3[i];
// Tính Điểm TB (Giả sử hệ số bằng nhau hoặc trung bình cộng)
ds[i].diemTB = (ds[i].heSo1 + ds[i].heSo2 + ds[i].heSo3) / 3.0;
// Xếp loại học tập
if (ds[i].diemTB < 5) {
countYeu++;
} else if (ds[i].diemTB < 6.5) {
strcpy(ds
[i
].
xepLoai, "Trung binh"); } else if (ds[i].diemTB < 8) {
countKha++;
} else {
strcpy(ds
[i
].
xepLoai, "Gioi"); countGioi++;
}
// Khen thưởng
if (strcmp(ds
[i
].
xepLoai, "Kha") == 0) { strcpy(ds
[i
].
khenThuong, "Khen loai I"); } else if (strcmp(ds
[i
].
xepLoai, "Gioi") == 0) { strcpy(ds
[i
].
khenThuong, "Khen loai II"); } else {
strcpy(ds
[i
].
khenThuong, "-"); }
}
// Câu 4: In bảng thông kê
printf("\n%-5s | %-15s | %-5s | %-5s | %-5s | %-7s | %-10s | %-12s\n", "TT", "Ho ten", "HS1", "HS2", "HS3", "DiemTB", "Xep loai", "Khen");
printf("------------------------------------------------------------------------------------\n"); for (int i = 0; i < n; i++) {
printf("%-5d | %-15s | %-5.1f | %-5.1f | %-5.1f | %-7.2f | %-10s | %-12s\n", ds[i].tt, ds[i].hoTen, ds[i].heSo1, ds[i].heSo2, ds[i].heSo3,
ds[i].diemTB, ds[i].xepLoai, ds[i].khenThuong);
}
// Tính tỉ lệ phần trăm
printf("\nTi le xep loai Kha: %.2f%%", (float)countKha
/ n
* 100); printf("\nTi le xep loai Gioi: %.2f%%", (float)countGioi
/ n
* 100); printf("\nTi le xep loai Yeu: %.2f%%", (float)countYeu
/ n
* 100);
return 0;
}
I2luY2x1ZGUgPHN0ZGlvLmg+CiNpbmNsdWRlIDxzdHJpbmcuaD4KCi8vIEPDonUgMjogxJDhu4tuaCBuZ2jEqWEgY+G6pXUgdHLDumMgZOG7ryBsaeG7h3UKdHlwZWRlZiBzdHJ1Y3QgewogICAgaW50IHR0OwogICAgY2hhciBob1Rlbls1MF07CiAgICBmbG9hdCBoZVNvMTsKICAgIGZsb2F0IGhlU28yOwogICAgZmxvYXQgaGVTbzM7CiAgICBmbG9hdCBkaWVtVEI7CiAgICBjaGFyIHhlcExvYWlbMjBdOwogICAgY2hhciBraGVuVGh1b25nWzIwXTsKfSBIb2NTaW5oOwoKaW50IG1haW4oKSB7CiAgICBpbnQgbiA9IDc7IC8vIFPhu5EgbMaw4bujbmcgaOG7jWMgc2luaCB0aGVvIGLhuqNuZyB0cm9uZyDhuqNuaAogICAgSG9jU2luaCBkc1sxMDBdOwoKICAgIC8vIEto4bufaSB04bqhbyBk4buvIGxp4buHdSBt4bqrdSBk4buxYSB0csOqbiBi4bqjbmcgdHJvbmcgxJHhu4EgYsOgaQogICAgY2hhciBuYW1lc1tdWzUwXSA9IHsiTmd1eWVuIFZhbiBBIiwgIlRyYW4gVGhpIEIiLCAiTGUgVmFuIEMiLCAiSG9hbmcgVGhpIEQiLCAiVnUgVmFuIEUiLCAiTmdvIFRoaSBEIiwgIlRoYWkgVmFuIEIifTsKICAgIGZsb2F0IGgxW10gPSB7NiwgNywgNiwgMywgNiwgMi41LCA5fTsKICAgIGZsb2F0IGgyW10gPSB7NSwgOCwgNC41LCA1LCA1LCAzLCA4fTsKICAgIGZsb2F0IGgzW10gPSB7OCwgOS41LCA3LCA3LCA2LCA0LCA5fTsKCiAgICAvLyBDw6J1IDM6IMSQaeG7gW4gY8OhYyBj4buZdCB0cuG7kW5nIHRoZW8gcXV5IHThuq9jCiAgICBpbnQgY291bnRLaGEgPSAwLCBjb3VudEdpb2kgPSAwLCBjb3VudFlldSA9IDA7CgogICAgZm9yIChpbnQgaSA9IDA7IGkgPCBuOyBpKyspIHsKICAgICAgICBkc1tpXS50dCA9IGkgKyAxOwogICAgICAgIHN0cmNweShkc1tpXS5ob1RlbiwgbmFtZXNbaV0pOwogICAgICAgIGRzW2ldLmhlU28xID0gaDFbaV07CiAgICAgICAgZHNbaV0uaGVTbzIgPSBoMltpXTsKICAgICAgICBkc1tpXS5oZVNvMyA9IGgzW2ldOwoKICAgICAgICAvLyBUw61uaCDEkGnhu4NtIFRCIChHaeG6oyBz4butIGjhu4cgc+G7kSBi4bqxbmcgbmhhdSBob+G6t2MgdHJ1bmcgYsOsbmggY+G7mW5nKQogICAgICAgIGRzW2ldLmRpZW1UQiA9IChkc1tpXS5oZVNvMSArIGRzW2ldLmhlU28yICsgZHNbaV0uaGVTbzMpIC8gMy4wOwoKICAgICAgICAvLyBY4bq/cCBsb+G6oWkgaOG7jWMgdOG6rXAKICAgICAgICBpZiAoZHNbaV0uZGllbVRCIDwgNSkgewogICAgICAgICAgICBzdHJjcHkoZHNbaV0ueGVwTG9haSwgIllldSIpOwogICAgICAgICAgICBjb3VudFlldSsrOwogICAgICAgIH0gZWxzZSBpZiAoZHNbaV0uZGllbVRCIDwgNi41KSB7CiAgICAgICAgICAgIHN0cmNweShkc1tpXS54ZXBMb2FpLCAiVHJ1bmcgYmluaCIpOwogICAgICAgIH0gZWxzZSBpZiAoZHNbaV0uZGllbVRCIDwgOCkgewogICAgICAgICAgICBzdHJjcHkoZHNbaV0ueGVwTG9haSwgIktoYSIpOwogICAgICAgICAgICBjb3VudEtoYSsrOwogICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgIHN0cmNweShkc1tpXS54ZXBMb2FpLCAiR2lvaSIpOwogICAgICAgICAgICBjb3VudEdpb2krKzsKICAgICAgICB9CgogICAgICAgIC8vIEtoZW4gdGjGsOG7n25nCiAgICAgICAgaWYgKHN0cmNtcChkc1tpXS54ZXBMb2FpLCAiS2hhIikgPT0gMCkgewogICAgICAgICAgICBzdHJjcHkoZHNbaV0ua2hlblRodW9uZywgIktoZW4gbG9haSBJIik7CiAgICAgICAgfSBlbHNlIGlmIChzdHJjbXAoZHNbaV0ueGVwTG9haSwgIkdpb2kiKSA9PSAwKSB7CiAgICAgICAgICAgIHN0cmNweShkc1tpXS5raGVuVGh1b25nLCAiS2hlbiBsb2FpIElJIik7CiAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgc3RyY3B5KGRzW2ldLmtoZW5UaHVvbmcsICItIik7CiAgICAgICAgfQogICAgfQoKICAgIC8vIEPDonUgNDogSW4gYuG6o25nIHRow7RuZyBrw6oKICAgIHByaW50ZigiXG4lLTVzIHwgJS0xNXMgfCAlLTVzIHwgJS01cyB8ICUtNXMgfCAlLTdzIHwgJS0xMHMgfCAlLTEyc1xuIiwgCiAgICAgICAgICAgIlRUIiwgIkhvIHRlbiIsICJIUzEiLCAiSFMyIiwgIkhTMyIsICJEaWVtVEIiLCAiWGVwIGxvYWkiLCAiS2hlbiIpOwogICAgcHJpbnRmKCItLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiIpOwogICAgZm9yIChpbnQgaSA9IDA7IGkgPCBuOyBpKyspIHsKICAgICAgICBwcmludGYoIiUtNWQgfCAlLTE1cyB8ICUtNS4xZiB8ICUtNS4xZiB8ICUtNS4xZiB8ICUtNy4yZiB8ICUtMTBzIHwgJS0xMnNcbiIsCiAgICAgICAgICAgICAgIGRzW2ldLnR0LCBkc1tpXS5ob1RlbiwgZHNbaV0uaGVTbzEsIGRzW2ldLmhlU28yLCBkc1tpXS5oZVNvMywgCiAgICAgICAgICAgICAgIGRzW2ldLmRpZW1UQiwgZHNbaV0ueGVwTG9haSwgZHNbaV0ua2hlblRodW9uZyk7CiAgICB9CgogICAgLy8gVMOtbmggdOG7iSBs4buHIHBo4bqnbiB0csSDbQogICAgcHJpbnRmKCJcblRpIGxlIHhlcCBsb2FpIEtoYTogJS4yZiUlIiwgKGZsb2F0KWNvdW50S2hhIC8gbiAqIDEwMCk7CiAgICBwcmludGYoIlxuVGkgbGUgeGVwIGxvYWkgR2lvaTogJS4yZiUlIiwgKGZsb2F0KWNvdW50R2lvaSAvIG4gKiAxMDApOwogICAgcHJpbnRmKCJcblRpIGxlIHhlcCBsb2FpIFlldTogJS4yZiUlIiwgKGZsb2F0KWNvdW50WWV1IC8gbiAqIDEwMCk7CgogICAgcmV0dXJuIDA7Cn0K