题目

读入 n 个数,求最大值、最小值与平均值

思路

本题读入 n 个数,求最大值、最小值和平均值。

先读入数组,一遍循环同时维护 minmaxsum;平均值为 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