fork download
  1. #include <stdio.h>
  2. #include <string.h>
  3.  
  4. // Câu 2: Định nghĩa cấu trúc dữ liệu
  5. typedef struct {
  6. int tt;
  7. char hoTen[50];
  8. float heSo1;
  9. float heSo2;
  10. float heSo3;
  11. float diemTB;
  12. char xepLoai[20];
  13. char khenThuong[20];
  14. } HocSinh;
  15.  
  16. int main() {
  17. int n = 7; // Số lượng học sinh theo bảng trong ảnh
  18. HocSinh ds[100];
  19.  
  20. // Khởi tạo dữ liệu mẫu dựa trên bảng trong đề bài
  21. char names[][50] = {"Nguyen Van A", "Tran Thi B", "Le Van C", "Hoang Thi D", "Vu Van E", "Ngo Thi D", "Thai Van B"};
  22. float h1[] = {6, 7, 6, 3, 6, 2.5, 9};
  23. float h2[] = {5, 8, 4.5, 5, 5, 3, 8};
  24. float h3[] = {8, 9.5, 7, 7, 6, 4, 9};
  25.  
  26. // Câu 3: Điền các cột trống theo quy tắc
  27. int countKha = 0, countGioi = 0, countYeu = 0;
  28.  
  29. for (int i = 0; i < n; i++) {
  30. ds[i].tt = i + 1;
  31. strcpy(ds[i].hoTen, names[i]);
  32. ds[i].heSo1 = h1[i];
  33. ds[i].heSo2 = h2[i];
  34. ds[i].heSo3 = h3[i];
  35.  
  36. // Tính Điểm TB (Giả sử hệ số bằng nhau hoặc trung bình cộng)
  37. ds[i].diemTB = (ds[i].heSo1 + ds[i].heSo2 + ds[i].heSo3) / 3.0;
  38.  
  39. // Xếp loại học tập
  40. if (ds[i].diemTB < 5) {
  41. strcpy(ds[i].xepLoai, "Yeu");
  42. countYeu++;
  43. } else if (ds[i].diemTB < 6.5) {
  44. strcpy(ds[i].xepLoai, "Trung binh");
  45. } else if (ds[i].diemTB < 8) {
  46. strcpy(ds[i].xepLoai, "Kha");
  47. countKha++;
  48. } else {
  49. strcpy(ds[i].xepLoai, "Gioi");
  50. countGioi++;
  51. }
  52.  
  53. // Khen thưởng
  54. if (strcmp(ds[i].xepLoai, "Kha") == 0) {
  55. strcpy(ds[i].khenThuong, "Khen loai I");
  56. } else if (strcmp(ds[i].xepLoai, "Gioi") == 0) {
  57. strcpy(ds[i].khenThuong, "Khen loai II");
  58. } else {
  59. strcpy(ds[i].khenThuong, "-");
  60. }
  61. }
  62.  
  63. // Câu 4: In bảng thông kê
  64. printf("\n%-5s | %-15s | %-5s | %-5s | %-5s | %-7s | %-10s | %-12s\n",
  65. "TT", "Ho ten", "HS1", "HS2", "HS3", "DiemTB", "Xep loai", "Khen");
  66. printf("------------------------------------------------------------------------------------\n");
  67. for (int i = 0; i < n; i++) {
  68. printf("%-5d | %-15s | %-5.1f | %-5.1f | %-5.1f | %-7.2f | %-10s | %-12s\n",
  69. ds[i].tt, ds[i].hoTen, ds[i].heSo1, ds[i].heSo2, ds[i].heSo3,
  70. ds[i].diemTB, ds[i].xepLoai, ds[i].khenThuong);
  71. }
  72.  
  73. // Tính tỉ lệ phần trăm
  74. printf("\nTi le xep loai Kha: %.2f%%", (float)countKha / n * 100);
  75. printf("\nTi le xep loai Gioi: %.2f%%", (float)countGioi / n * 100);
  76. printf("\nTi le xep loai Yeu: %.2f%%", (float)countYeu / n * 100);
  77.  
  78. return 0;
  79. }
  80.  
Success #stdin #stdout 0s 5316KB
stdin
Standard input is empty
stdout
TT    | Ho ten          | HS1   | HS2   | HS3   | DiemTB  | Xep loai   | Khen        
------------------------------------------------------------------------------------
1     | Nguyen Van A    | 6.0   | 5.0   | 8.0   | 6.33    | Trung binh | -           
2     | Tran Thi B      | 7.0   | 8.0   | 9.5   | 8.17    | Gioi       | Khen loai II
3     | Le Van C        | 6.0   | 4.5   | 7.0   | 5.83    | Trung binh | -           
4     | Hoang Thi D     | 3.0   | 5.0   | 7.0   | 5.00    | Trung binh | -           
5     | Vu Van E        | 6.0   | 5.0   | 6.0   | 5.67    | Trung binh | -           
6     | Ngo Thi D       | 2.5   | 3.0   | 4.0   | 3.17    | Yeu        | -           
7     | Thai Van B      | 9.0   | 8.0   | 9.0   | 8.67    | Gioi       | Khen loai II

Ti le xep loai Kha: 0.00%
Ti le xep loai Gioi: 28.57%
Ti le xep loai Yeu: 14.29%