sort函数 c语言 数据结构 指针

实现sort函数,并在主程序中调用sort函数,并确认是否按身高排序。
函数定义:void sort(STUDENTS a[ ], int n):对长度为n的结构数组a中,按结构数组中数据元素身高进行排序;
STUDENTS a[ ]:存放结构数组的指针
int n:结构数组的长度

img

img

img

sort函数:

void sort(STUDENTS s[], int n)
{
    int i, j;
    STUDENTS t;
    for (i = 0; i < n-1; i++)
    {
        for (j = 0; j < n - 1 - i; j++)
        {
            if (s[j].student_height > s[j + 1].student_height) //按身高从小到大排序,如果是从大到小排序,就把>改成 <
            {
                t = s[j];
                s[j] = s[j + 1];
                s[j + 1] = t;
            }
        }
    }
}

【以下回答由 GPT 生成】

#include <stdio.h>

typedef struct {
    char name[20];
    int height;
} STUDENT;

void sort(STUDENT a[], int n) {
    int i, j;
    STUDENT temp;

    // 使用冒泡排序算法对结构数组进行排序
    for (i = 0; i < n - 1; i++) {
        for (j = 0; j < n - 1 - i; j++) {
            // 如果前一个学生的身高大于后一个学生的身高,则交换它们
            if (a[j].height > a[j + 1].height) {
                temp = a[j];
                a[j] = a[j + 1];
                a[j + 1] = temp;
            }
        }
    }
}

int main() {
    int i;
    STUDENT students[] = {
        {"Alice", 170},
        {"Bob", 160},
        {"Charlie", 180},
        {"David", 165},
        {"Eve", 175}
    };
    int n = sizeof(students) / sizeof(students[0]);

    sort(students, n);

    printf("按照身高排序后的学生列表:\n");
    for (i = 0; i < n; i++) {
        printf("姓名:%s 身高:%d\n", students[i].name, students[i].height);
    }

    return 0;
}

这个程序中,我们首先定义了一个结构体类型 STUDENT ,包含了学生姓名和身高两个字段。

然后,在 sort 函数中,我们使用了冒泡排序算法对结构数组 a 进行排序。冒泡排序算法通过多次比较和交换来对数组元素进行排序,将较大的元素逐步向后移动,从而实现排序。

在主函数 main 中,我们定义了一个结构数组 students ,并初始化了其中的元素。然后,我们调用 sort 函数对结构数组进行排序。

最后,我们通过循环遍历结构数组,并按照指定格式输出每个学生的姓名和身高。

运行该程序,将输出按照身高排序后的学生列表。



【相关推荐】



如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^您好,我是有问必答小助手,您的问题已经有小伙伴帮您解答,感谢您对有问必答的支持与关注!
PS:问答VIP年卡 【限时加赠:IT技术图书免费领】,了解详情>>> https://vip.csdn.net/askvip?utm_source=1146287632