C语言:输入学生人数后输入每个学生的成绩,最后输出学生的平均成绩、最高成绩和最低成绩。要求使用动态内存分配来实现。试编写相应程序。
时间: 2023-12-11 22:12:51 浏览: 122
好的,以下是实现该功能的 C 语言代码:
```c
#include <stdio.h>
#include <stdlib.h>
int main() {
int n, i, max, min;
float sum = 0, avg;
printf("请输入学生人数:");
scanf("%d", &n);
int *scores = (int *)malloc(n * sizeof(int)); // 动态分配内存
printf("请输入每个学生的成绩:");
for (i = 0; i < n; i++) {
scanf("%d", &scores[i]);
}
max = min = scores[0];
for (i = 0; i < n; i++) {
sum += scores[i];
if (scores[i] > max) {
max = scores[i];
}
if (scores[i] < min) {
min = scores[i];
}
}
avg = sum / n;
printf("学生的平均成绩为:%.2f\n", avg);
printf("学生的最高成绩为:%d\n", max);
printf("学生的最低成绩为:%d\n", min);
free(scores); // 释放内存
return 0;
}
```
首先,我们通过 `scanf` 函数获取学生人数 `n`,然后通过 `malloc` 函数动态分配 `n` 个整数大小的内存空间,存放每个学生的成绩。接着,使用 `for` 循环读入每个学生的成绩,并计算平均成绩、最高成绩和最低成绩。最后,使用 `printf` 函数输出结果,并通过 `free` 函数释放动态分配的内存。
需要注意的是,动态分配的内存需要在不需要使用时通过 `free` 函数释放,否则会导致内存泄漏。
阅读全文