结构体数组的超简单应用

定义4个学生,完成按成绩升序排序

问题1:如何存储4个学生的信息?
通过结构体数组实现
问题2:如何输入或输出4个学生的信息?
通过循环实现对数组中所有成员结构体的遍历,可以遍历到每个成员,那么我们就可以对每个成员的信息进行修改,赋值。
问题3:如何对4个学生信息进行排序?排序如何进行交换?
因为排序是根据学生的成绩进行排序,所以,我们也是通过冒泡排序,每次需要交换时,需要交换的是整个结构体而不是对单个成员进行交换
结构体成员可以直接进行赋值。

#include

int main(void)
{
    struct student{
        int id;
        char name[30];
        double score;
    }a[4],tmp;
    printf("按以下格式输入(学号 姓名 成绩):\n");
    int i = 0;
    for(i = 0;i < 4;i++){
        printf("请输入%d个学生:",i + 1);
        scanf("%d %s %lf",&a[i].id,a[i].name,&a[i].score);
    }
    printf("***排序前***\n");
    for(i = 0;i < 4;i++){
        printf("%d %s %.2lf\n",a[i].id,a[i].name,a[i].score);
    }
    printf("***排序后***\n");

    int j = 0;
    struct tmp{};
    for(i = 0;i < 3;i++){
        for(j = 0 ; j < 3 - i ; j++){
            if(a[j].score > a[j + 1].score){
                tmp = a[j];
                a[j] = a[j + 1];
                a[j + 1] = tmp;
            }
        }
    }
    for(i = 0;i < 4;i++){
        printf("NO:%d\t姓名: %s\t成绩: %.2lf\n",a[i].id,a[i].name,a[i].score);
    }
    return 0;
}

效果图
按以下格式输入(学号 姓名 成绩):
请输入1个学生:1 zhang 15
请输入2个学生:2 li 86
请输入3个学生:3 wang 99
请输入4个学生:4 luo 100
排序前
1 zhang 15.00
2 li 86.00
3 wang 99.00
4 luo 100.00
排序后
NO:1 姓名: zhang 成绩: 15.00
NO:2 姓名: li 成绩: 86.00
NO:3 姓名: wang 成绩: 99.00
NO:4 姓名: luo 成绩: 100.00

你可能感兴趣的:(嵌入式题目)