马上就学期末了,老师给了科代表小明一个任务:用C语言开发一个小程序,该程序可以: ①从键盘输入班级所有同学的C语言成绩 ②将成绩从高到低排序 ③将成绩输出到屏幕。 任务要求用指针和函数实现所有功能。
时间: 2024-02-26 15:57:53 浏览: 72
好的,这是一个典型的使用指针和函数的排序问题。首先,我们需要编写一个函数来进行排序,然后通过指针来交换元素的位置。下面是一个可能的解决方案:
```c
#include <stdio.h>
#define MAX_STUDENTS 100
void sort(int *grades, int n);
int main() {
int grades[MAX_STUDENTS];
int n, i;
printf("请输入学生人数: ");
scanf("%d", &n);
printf("请输入%d个学生成绩: ", n);
for (i = 0; i < n; i++) {
scanf("%d", &grades[i]);
}
sort(grades, n);
printf("排序后的成绩为: ");
for (i = 0; i < n; i++) {
printf("%d ", grades[i]);
}
printf("\n");
return 0;
}
void sort(int *grades, int n) {
int i, j;
int temp;
for (i = 0; i < n - 1; i++) {
for (j = i + 1; j < n; j++) {
if (grades[i] < grades[j]) {
temp = grades[i];
grades[i] = grades[j];
grades[j] = temp;
}
}
}
}
```
这个程序使用了一个 `sort` 函数来进行排序,该函数接受一个整型指针和一个整数作为参数,分别表示待排序数组的首地址和元素个数。在函数内部,我们使用了双重循环来比较和交换数组元素的位置,以实现从高到低的排序。
在 `main` 函数中,我们首先读入学生人数和成绩,然后调用 `sort` 函数进行排序,最后输出排序后的成绩。
需要注意的是,本程序没有对输入的数据进行任何的合法性检查。在实际开发中,需要考虑各种异常情况,例如输入的成绩不是整数、数组越界等等。
阅读全文