Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> Lập Trình C

Chương trình C quản lý thông tin cầu thủ cricket dùng struct


Đề bài

Lưu thông tin cầu thủ cricket (tên, tuổi, trận đấu, trung bình điểm) vào struct, sắp xếp theo trung bình điểm, hiển thị dạng bảng.

Giải pháp

Nhập thông tin cầu thủ tại runtime dùng struct. Sắp xếp tăng dần theo điểm trung bình (average runs) để dễ so sánh.

Logic sắp xếp (Bubble Sort)

for(i = 0; i < 2; i++) {
    for(j = i+1; j < 2; j++) {
        if(c[i].avrn > c[j].avrn) {
            temp1 = c[i];
            c[i] = c[j];
            c[j] = temp1;
        }
    }
}

Chương trình hoàn chỉnh

#include <stdio.h>
#include <string.h>

struct cricketer {
    char name[50];
    int age;
    int match;
    float avrn;
    char temp;  // Đọc \n
};

struct cricketer c[20], temp1;

void main() {
    int i, j;
    
    for(i = 0; i < 2; i++) {
        printf("Nhập dữ liệu cầu thủ %d\n", i+1);
        printf("Tên: ");
        gets(c[i].name);
        printf("Tuổi: ");
        scanf("%d", &c[i].age);
        printf("Số trận: ");
        scanf("%d", &c[i].match);
        printf("Điểm trung bình: ");
        scanf("%f", &c[i].avrn);
        scanf("%c", &c[i].temp);  // Đọc \n
    }
    
    // Sắp xếp theo điểm trung bình tăng dần
    for(i = 0; i < 2; i++) {
        for(j = i+1; j < 2; j++) {
            if(c[i].avrn > c[j].avrn) {
                temp1 = c[i];
                c[i] = c[j];
                c[j] = temp1;
            }
        }
    }
    
    printf("\nDanh sách đã sắp xếp:\n");
    for(i = 0; i < 2; i++) {
        printf("%d\t%s\t%d\t%d\t%.2f\n\n", 
               i+1, c[i].name, c[i].age, c[i].match, c[i].avrn);
    }
}

Kết quả chạy

Nhập dữ liệu cầu thủ 1
Tên: Dhoni
Tuổi: 39
Số trận: 150
Điểm trung bình: 200

Nhập dữ liệu cầu thủ 2
Tên: Virat
Tuổi: 36
Số trận: 135
Điểm trung bình: 190

Danh sách đã sắp xếp:
1   Virat   36  135  190.00
2   Dhoni   39  150  200.00