用c语言实现,功能是将10个学生成绩从高分到低分排序,并统计优秀与不及格的人数。函数形式为: int fun(int s[],int *x); /*s为学生成绩数组,*x为不及格人数,返回优秀的人数*/
时间: 2024-03-24 12:42:01 浏览: 26
好的,这是一个经典的排序问题,可以使用冒泡排序法实现。以下是实现代码:
```
int fun(int s[], int *x) {
int excellent = 0; // 优秀人数
*x = 0; // 不及格人数
// 冒泡排序
for (int i = 0; i < 9; i++) {
for (int j = 0; j < 9 - i; j++) {
if (s[j] < s[j+1]) {
int temp = s[j];
s[j] = s[j+1];
s[j+1] = temp;
}
}
}
// 统计优秀和不及格人数
for (int i = 0; i < 10; i++) {
if (s[i] >= 90) {
excellent++;
} else if (s[i] < 60) {
(*x)++;
}
}
return excellent;
}
```
在主函数中调用该函数即可实现排序和统计人数的功能。例如:
```
int main() {
int scores[10] = {87, 65, 93, 78, 56, 89, 91, 72, 83, 69};
int failNum, excellentNum;
excellentNum = fun(scores, &failNum);
printf("优秀人数:%d\n", excellentNum);
printf("不及格人数:%d\n", failNum);
printf("排序后的成绩:");
for (int i = 0; i < 10; i++) {
printf("%d ", scores[i]);
}
return 0;
}
```
输出结果为:
```
优秀人数:3
不及格人数:2
排序后的成绩:93 91 89 87 83 78 72 69 65 56
```
阅读全文