易百教程

编写程序以计算浮点值的平均值

定义一个函数,用于计算任意数量的浮点值的平均值。double类型值的数组在数组参数中传递给函数。读取从键盘输入的任意数量的值并输出平均值。

实现代码

#define __STDC_WANT_LIB_EXT1__ 1
#include <stdio.h>
#include <stdlib.h>
#include <ctype.h>

#define CAPACITY_INCREMENT 6                     // 数据值容量的增加

double average(double data[], int count)
{
    double sum = 0.0;
    for (int i = 0; i < count; sum += data[i++])
        ;
    return sum / count;
}

int main(void)
{
    double *data = NULL;                          // 指向数组值数组的指针
    double *temp = NULL;                          // 指向新数组值的指针
    int count = 0;                                // 数据值的数量
    int capacity = 0;                             // 可以存储的数据值的数量
    char answer = 'n';

    do
    {
        if (count == capacity)
        {
            capacity += CAPACITY_INCREMENT;
            // 创建新的指针数组
            if (!(temp = (double*)realloc(data, capacity * sizeof(double))))
            {
                printf("数据值分配内存时出错.\n");
                exit(1);
            }
            data = temp;
        }

        printf("输入数据值: ");
        scanf_s(" %lf", data + count++);
        printf("输入另一个(y或n)? ");
        scanf_s(" %c", &answer, sizeof(answer));
    } while (tolower(answer) != 'n');

    printf("\n您输入的值的平均值是 %10.2lf\n", average(data, count));
    free(data);
    system("pause");
    return 0;
}

执行上面示例代码,得到以下结果:

输入数据值: 12.343
输入另一个(y或n)? y
输入数据值: 32.432
输入另一个(y或n)? y
输入数据值: 80.23
输入另一个(y或n)? n

您输入的值的平均值是      41.67