题目
读入 n 个数,求最大值、最小值与平均值
思路
本题读入 n 个数,求最大值、最小值和平均值。
先读入数组,一遍循环同时维护 min、max、sum;平均值为 sum/n,用 double 计算再输出。
解题分析
一遍扫描同时维护 max、min、sum,读完再算平均。不要先求 max 再扫一遍 min,多一次 O(n) 没必要。
完整程序
#include <stdio.h>
int main(void)
{
int n;
if (scanf("%d", &n) != 1 || n < 1) {
return 1;
}
int x, maxv, minv;
long long sum = 0;
scanf("%d", &x);
maxv = minv = x;
sum = x;
for (int i = 1; i < n; i++) {
scanf("%d", &x);
if (x > maxv) maxv = x;
if (x < minv) minv = x;
sum += x;
}
printf("max=%d min=%d avg=%.2f\n", maxv, minv, sum * 1.0 / n);
return 0;
}
运行示例
输入:
4
3 1 4 2输出:
max=4 min=1 avg=2.50