跳至主要內容

指针赋值计算函数

酷丁2025年2月11日小于 1 分钟

题目:编写一个函数,计算一组数的最大值、最小值和平均值,并且必须使用指针变量将结果直接传回给调用该函数的主函数中的变量。

#include <stdio.h>

void calc_stats(float *arr, int n, float *max, float *min, float *avg) {
    *max = *min = arr[0];
    *avg = 0.0f;

    for (int i = 0; i < n; i++) {
        if (arr[i] > *max) *max = arr[i];
        if (arr[i] < *min) *min = arr[i];
        *avg += arr[i];
    }

    *avg /= n;
}

int main() {
    float arr[] = {1.2, 3.4, 0.5, 7.8, 4.6};
    int n = sizeof(arr) / sizeof(arr[0]);
    float max, min, avg;

    calc_stats(arr, n, &max, &min, &avg);

    printf("Max: %.2f\n", max);
    printf("Min: %.2f\n", min);
    printf("Avg: %.2f\n", avg);

    return 0;
}

代码解释:

  1. calc_stats函数接收一个浮点数组arr,数组长度n,以及三个指针maxminavg
  2. 通过遍历数组,计算最大值、最小值和平均值,并将结果直接赋值给指针所指向的变量。
  3. main函数中调用calc_stats,并将结果打印出来。

输出:

Max: 7.80
Min: 0.50
Avg: 3.50