【问题描述】用结构体数组和函数对10个同学成绩和学号按分数从高到低排序,输出排序后的学号和分数 【输入形式】 struct student stu[N]={{2019001,78},{2019002,67},{2019003,45},{2019004,89}, {2019005,90},{2019006,65},{2019007,76},{2019008,80},{2019009,70},{2019010,63}}; 【输出形式】 for(i=0;i<N;i++) printf("%d,%4.1f\n",......);
时间: 2023-09-19 13:07:11 浏览: 132
好的,这是一个关于结构体数组和函数的排序问题,我来给你讲解一下具体的做法。
首先,我们需要定义一个结构体,包含学号和分数两个成员变量,如下所示:
```c
struct student {
int id; // 学号
float score; // 分数
};
```
接着,我们可以定义一个结构体数组,其中存放着10个同学的学号和分数:
```c
#define N 10 // 定义学生人数
struct student stu[N] = {
{2019001, 78},
{2019002, 67},
{2019003, 45},
{2019004, 89},
{2019005, 90},
{2019006, 65},
{2019007, 76},
{2019008, 80},
{2019009, 70},
{2019010, 63}
};
```
接下来,我们需要编写一个函数,用于对结构体数组进行排序。这里使用冒泡排序,按分数从高到低排序。排序函数的具体实现如下:
```c
void sort(struct student stu[], int n) {
int i, j;
struct student temp;
for (i = 0; i < n - 1; i++) {
for (j = 0; j < n - 1 - i; j++) {
if (stu[j].score < stu[j + 1].score) {
temp = stu[j];
stu[j] = stu[j + 1];
stu[j + 1] = temp;
}
}
}
}
```
最后,我们在主函数中调用排序函数,并输出排序后的学号和分数:
```c
int main() {
int i;
sort(stu, N);
for (i = 0; i < N; i++) {
printf("%d, %4.1f\n", stu[i].id, stu[i].score);
}
return 0;
}
```
输出结果如下:
```
2019005, 90.0
2019004, 89.0
2019008, 80.0
2019001, 78.0
2019007, 76.0
2019009, 70.0
2019002, 67.0
2019006, 65.0
2019010, 63.0
2019003, 45.0
```
这样就完成了对结构体数组的排序,并输出了排序后的学号和分数。希望能对你有所帮助!