定义一个函数,用于计算任意数量的浮点值的平均值。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