用c语言:本题:补充函数 sortByChoose()的剩余部分,其要求是利用选择排序算法根据学生成绩(score)实现对结构体数组元素降序排序。 函数接口定义: void sortByChoose(struct Student *pData,int n); 裁判测试程序样例: #include<stdio.h> #include<stdlib.h> #define N 10 struct Student { int num; int score; }; void sortByChoose(struct Student *pData,int n); int main(void) { struct Student data[10],*p; int i; for(p=data,i=0;i<N;i++) { scanf("%d %d",&p->num,&p->score); p++; } sortByChoose(data,N); for (p=data,i=0;i<N;i++) { printf("%2d-%-5d", p->num, p->score); p++; } return 0; } void sortByChoose(struct Student *pData,int n) { struct Student *p1,*p2,*p; int num, score,i,j; for(p1=pData;p1<pData+n-1;p1++) { /* 请在这里填写答案 */ } } 输入样例: 29 90 15 80 87 55 65 84 35 80 33 55 44 79 99 80 89 80 41 55 输出样例: 29-90 65-84 15-80 35-80 99-80 89-80 44-79 87-55 33-55 41-55
时间: 2024-01-15 22:03:46 浏览: 65
计算机二级c语言上机练习题
下面是 sortByChoose 函数的代码实现:
```c
void sortByChoose(struct Student *pData, int n) {
struct Student *p1, *p2, *p;
int num, score, i, j;
for (p1 = pData; p1 < pData + n - 1; p1++) {
p = p1;
for (p2 = p1 + 1; p2 < pData + n; p2++) {
if (p2->score > p->score) {
p = p2;
}
}
if (p != p1) {
num = p1->num;
score = p1->score;
p1->num = p->num;
p1->score = p->score;
p->num = num;
p->score = score;
}
}
}
```
排序算法是选择排序,首先选择一个元素作为当前最小值,然后将其与剩余的元素依次比较,如果找到比它小的元素,则将当前最小值更新为该元素。最后,将当前最小值与当前位置的元素交换。经过一轮比较后,最小的元素已经被放到了第一个位置。然后从第二个位置开始重复这个过程,直到所有元素都被排序。在本题中,我们需要将学生成绩按照降序排序,因此需要将比较运算符改为大于号。
阅读全文