马上就学期末了,老师给了科代表小明一个任务:用C语言开发一个小程序,该程序可以: ①从键盘输入班级所有同学的C语言成绩 ②将成绩从高到低排序 ③将成绩输出到屏幕。 任务要求用指针和函数实现所有功能。 步骤 1)定义可保存所有同学成绩的数组 2)定义指针并指向成绩数组 3) 使用指针变量从键盘循环输入成绩 4) 使用冒泡排序算法对成绩进行排序 5) 成绩输出 6) 测试(多输入几个数据,看看能否实现输入、排序和输出功能)
时间: 2024-02-26 15:57:54 浏览: 63
今天给大家分享一个C语言环境下开发的学生成绩管理系统 这个系统原理很简单:成绩的录入,输出,修改,排序,删除等等
好的,按照您的步骤,下面是一个可能的解决方案:
```c
#include <stdio.h>
#define MAX_STUDENTS 100
void sort(int *grades, int n);
int main() {
int grades[MAX_STUDENTS];
int *p = grades;
int n, i;
printf("请输入学生人数: ");
scanf("%d", &n);
printf("请输入%d个学生成绩: ", n);
for (i = 0; i < n; i++) {
scanf("%d", p + i);
}
sort(grades, n);
printf("排序后的成绩为: ");
for (i = 0; i < n; i++) {
printf("%d ", *(p + 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 = 0; j < n - i - 1; j++) {
if (*(grades + j) < *(grades + j + 1)) {
temp = *(grades + j);
*(grades + j) = *(grades + j + 1);
*(grades + j + 1) = temp;
}
}
}
}
```
在这个解决方案中,我们首先定义了一个整型数组 `grades`,用来保存所有同学的成绩。然后,我们定义了一个指针 `p`,并让它指向 `grades` 数组的首地址。接着,我们使用 `p` 指针从键盘输入每个同学的成绩。
在排序函数 `sort` 中,我们使用了冒泡排序算法,对成绩进行从高到低的排序。需要注意的是,在程序中我们使用指针来访问数组元素,可以使用 `*(grades + i)` 来访问第 `i` 个元素。
最后,我们在 `main` 函数中输出排序后的成绩,也是通过指针来访问数组元素。需要注意的是,`p + i` 和 `*(p + i)` 是等价的,它们都可以用来访问数组元素。
阅读全文