本题要求编写程序,根据输入学生的成绩,统计并输出学生的平均成绩、最高成绩和最低成绩。建议使用动态内存分配来实现。
输入格式:
输入第一行首先给出一个正整数 N,表示学生的个数。接下来一行给出 N 个学生的成绩,数字间以空格分隔。
输出格式:
按照以下格式输出:
average = 平均成绩
max = 最高成绩
min = 最低成绩
结果均保留两位小数。
输入样例:
3
85 90 95
输出样例:
average = 90.00
max = 95.00
min = 85.00
来源:
来源:PTA | 程序设计类实验辅助教学平台
链接:https://pintia.cn/problem-sets/13/exam/problems/550
提交:
题解:
#include<stdio.h>
#include<stdlib.h>
int main(void) {
int N;
scanf("%d", &N);
double *p = (double *) malloc(sizeof(double) * N);
// 内存分配失败
if (p == NULL) {
exit(1);
}
// 数组名为数组首地址,指针变量 p 为分配到的内存的首地址,故可如操作数组般操作指针
for (int i = 0; i < N; i++) {
scanf("%lf", p + i);
}
// 先假设第一个分数即为最高分和最低分,在后续比较过程中进行更新
double max = p[0];
double min = p[0];
double sum = 0;
for (int i = 0; i < N; i++) {
// 更新最低分
min = p[i] < min ? p[i] : min;
// 更新最高分
max = p[i] > max ? p[i] : max;
// 分数累加求和
sum += p[i];
}
printf("average = %.2lf\nmax = %.2lf\nmin = %.2lf", sum / N, max, min);
free(p);
return 0;
}