:输入某班(人数不定)的C语言成绩(浮点型),编程存储到一维数组中, 对数组元素进行递减排序,将排序结果输出,每行存放5个数据。
时间: 2024-12-02 19:16:19 浏览: 13
在C语言中,你可以通过以下几个步骤来实现这个功能:
1. 首先,你需要创建一个动态的一维数组,其大小取决于班级的人数。由于人数不定,可以使用`size_t`类型来表示动态数组长度,并用`malloc()`函数分配内存。
```c
#include <stdio.h>
#include <stdlib.h>
size_t get_num_students() {
// 获取学生人数,这里假设用户输入
printf("请输入班级人数:");
return scanf("%zu", &num_students);
}
double* create_array(size_t num_students) {
double* scores = (double*) malloc(num_students * sizeof(double));
if (!scores) {
perror("Memory allocation failed.");
exit(EXIT_FAILURE);
}
printf("请输入每个学生的成绩:\n");
for (size_t i = 0; i < num_students; ++i) {
scanf("%lf", &scores[i]);
}
return scores;
}
void sort_and_output(double* arr, size_t size, int rows_per_line) {
qsort(arr, size, sizeof(double), compare_descending);
// 输出按行显示,每行5个数据
for (size_t i = 0; i < size; i += rows_per_line) {
for (size_t j = 0; j < rows_per_line && i+j < size; j++) {
printf("%.2f ", arr[i + j]);
}
printf("\n");
}
}
int compare_descending(const void* a, const void* b) {
return (*(double*)b - *(double*)a); // 比较降序
}
int main() {
size_t num_students = get_num_students();
double* scores = create_array(num_students);
sort_and_output(scores, num_students, 5);
free(scores);
return 0;
}
```
在这个程序中,首先获取学生人数并创建数组,然后使用`qsort()`函数对数组进行降序排序,最后按照每行5个数据的格式输出。记得在完成操作后释放动态分配的内存。
阅读全文