c语言从键盘输入1门课程3位同学成绩,从高到低进行排序,用数组函数的方式。
时间: 2023-12-14 13:36:41 浏览: 25
下面是一个示例代码,用来实现从键盘输入3位同学的成绩并进行排序:
```c
#include <stdio.h>
#include <stdlib.h>
int cmp(const void *a, const void *b) {
return *(int*)b - *(int*)a; // 从高到低排序
}
int main() {
int scores[3];
printf("请输入3位同学的成绩:\n");
for (int i = 0; i < 3; i++) {
scanf("%d", &scores[i]);
}
qsort(scores, 3, sizeof(int), cmp); // 调用qsort函数进行排序
printf("排序后的成绩为:\n");
for (int i = 0; i < 3; i++) {
printf("%d ", scores[i]);
}
printf("\n");
return 0;
}
```
上述代码中,我们先定义了一个整型数组`scores`,用于存储3位同学的成绩。然后通过`scanf`函数从键盘输入3位同学的成绩,并将其存储到数组`scores`中。
接着,我们调用了`qsort`函数对数组`scores`进行排序。`qsort`函数是C语言标准库中的一个快速排序函数,它的用法如下:
```c
void qsort(void *base, size_t nmemb, size_t size, int (*compar)(const void *, const void *));
```
其中,`base`参数表示待排序数组的首地址,`nmemb`表示数组中元素的个数,`size`表示每个元素的大小,`compar`表示用于比较两个元素的函数指针。
在本例中,我们自定义了一个比较函数`cmp`,用于比较两个成绩的大小,并按照从高到低的顺序排序。最后,我们通过循环遍历数组`scores`,并使用`printf`函数输出已经排序好的成绩。