实现sort函数,并在主程序中调用sort函数,并确认是否按身高排序。
函数定义:void sort(STUDENTS a[ ], int n):对长度为n的结构数组a中,按结构数组中数据元素身高进行排序;
STUDENTS a[ ]:存放结构数组的指针
int n:结构数组的长度
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
函数对结构数组进行排序。
最后,我们通过循环遍历结构数组,并按照指定格式输出每个学生的姓名和身高。
运行该程序,将输出按照身高排序后的学生列表。
【相关推荐】