编写函数,求一组数中的最大值、最小值和平均值。 函数接口定义: float statistics(int *a, int n, int *max, int *min);
时间: 2023-08-28 19:14:01 浏览: 110
好的,我来为您编写这个函数。以下是函数的实现:
```c++
float statistics(int *a, int n, int *max, int *min) {
if (n <= 0 || !a || !max || !min) {
return 0;
}
float sum = 0;
*max = *min = a[0];
for (int i = 0; i < n; ++i) {
if (a[i] > *max) {
*max = a[i];
}
if (a[i] < *min) {
*min = a[i];
}
sum += a[i];
}
return sum / n;
}
```
函数的参数说明如下:
- `a`:指向一组整数的指针。
- `n`:整数数组中的元素个数。
- `max`:指向最大值的指针,由函数输出。
- `min`:指向最小值的指针,由函数输出。
函数返回值为整数数组的平均值。如果传递给函数的参数有任何问题,函数将返回0。
相关问题
1、从键盘输入若干数据整数(零表示结束),统计出数据个数,以及最大值、最小值和平均值。 用一个函数实现数据输入的功能,其首部为: int input(int s[]) input的参数为输入的数据,函数返回值大于0表示该行输入的数据个数,0表示输入结束。 用一个函数实现求最大值、最小值和平均值的功能,首部为: void statistics(int n, int s[], int *max, int *min, float *avg) 1 2 3 4 5 0 Max=5 Min=1 Avg=3.000
以下是代码实现:
```c
#include <stdio.h>
int input(int s[]) {
int n = 0;
do {
scanf("%d", &s[n]);
n++;
} while (s[n-1] != 0);
return n-1;
}
void statistics(int n, int s[], int *max, int *min, float *avg) {
*max = s[0];
*min = s[0];
int sum = 0;
for (int i=0; i<n; i++) {
if (s[i] > *max) {
*max = s[i];
}
if (s[i] < *min) {
*min = s[i];
}
sum += s[i];
}
*avg = (float)sum / n;
}
int main() {
int s[100];
int n = input(s);
int max, min;
float avg;
statistics(n, s, &max, &min, &avg);
printf("Max=%d Min=%d Avg=%.3f", max, min, avg);
return 0;
}
```
输入数据后,调用 input 函数读取数据并返回数据个数 n。然后调用 statistics 函数计算最大值、最小值和平均值,并将结果存储在传递进函数的指针变量中。最后,输出最大值、最小值和平均值。
一维实型数组 编写函数计算一维实型数组前n个元素的最大值、最小值和平均值。数组、n、最大值、最小值和平均值均作为函数形参,函数无返回值;在主函数中输入数据,调用函数得到结果。(要求用指针方法实现)
### 回答1:
这是一个用指针方法实现的C语言代码:
```
#include <stdio.h>
void get_statistics(float *array, int n, float *max, float *min, float *avg) {
*max = *min = *array;
float sum = 0;
for (int i = 0; i < n; i++) {
if (array[i] > *max) {
*max = array[i];
}
if (array[i] < *min) {
*min = array[i];
}
sum += array[i];
}
*avg = sum / n;
}
int main() {
int n;
printf("请输入数组元素个数:");
scanf("%d", &n);
float array[n];
printf("请输入%d个实数:\n", n);
for (int i = 0; i < n; i++) {
scanf("%f", &array[i]);
}
float max, min, avg;
get_statistics(array, n, &max, &min, &avg);
printf("前%d个元素的最大值:%.2f\n", n, max);
printf("前%d个元素的最小值:%.2f\n", n, min);
printf("前%d个元素的平均值:%.2f\n", n, avg);
return 0;
}
```
代码中,get_statistics函数计算一维实型数组前n个元素的最大值、最小值和平均值,并将结果通过指针传回主函数中。在主函数中,用户首先输入数组元素个数,然后输入数组中的实数,最后调用get_statistics函数并输出结果。
### 回答2:
首先,定义一个函数,用于计算一维实型数组前n个元素的最大值、最小值和平均值,并将结果存储在形参中。函数的定义如下:
void calculate(float *arr, int n, float *maxValue, float *minValue, float *average) {
*maxValue = *minValue = arr[0];
float sum = 0;
for (int i = 0; i < n; i++) {
if (arr[i] > *maxValue) {
*maxValue = arr[i];
}
if (arr[i] < *minValue) {
*minValue = arr[i];
}
sum += arr[i];
}
*average = sum / n;
}
在主函数中,先声明一个一维实型数组,然后输入数组的长度n和n个元素的值。接着,声明变量来保存计算的结果,并通过调用函数来计算出最大值、最小值和平均值。最后,输出结果。
示例代码如下:
#include <iostream>
using namespace std;
void calculate(float *arr, int n, float *maxValue, float *minValue, float *average) {
*maxValue = *minValue = arr[0];
float sum = 0;
for (int i = 0; i < n; i++) {
if (arr[i] > *maxValue) {
*maxValue = arr[i];
}
if (arr[i] < *minValue) {
*minValue = arr[i];
}
sum += arr[i];
}
*average = sum / n;
}
int main() {
int n;
cout << "请输入数组的长度:";
cin >> n;
float *arr = new float[n];
cout << "请输入数组的元素值:";
for (int i = 0; i < n; i++) {
cin >> arr[i];
}
float maxValue, minValue, average;
calculate(arr, n, &maxValue, &minValue, &average);
cout << "最大值:" << maxValue << endl;
cout << "最小值:" << minValue << endl;
cout << "平均值:" << average << endl;
delete[] arr;
return 0;
}
通过运行以上代码,就可以输入一维实型数组的长度和元素值,然后得到数组前n个元素的最大值、最小值和平均值的计算结果。
### 回答3:
这里是一个用指针方法实现的计算一维实型数组前n个元素的最大值、最小值和平均值的函数。
```c
#include <stdio.h>
void computeArray(float* array, int n, float* max, float* min, float* avg) {
float sum = 0.0;
*max = array[0]; // 将第一个元素的值赋给最大值
*min = array[0]; // 将第一个元素的值赋给最小值
for (int i = 0; i < n; i++) {
if (array[i] > *max) {
*max = array[i]; // 如果当前元素大于最大值,则更新最大值
}
if (array[i] < *min) {
*min = array[i]; // 如果当前元素小于最小值,则更新最小值
}
sum += array[i]; // 累加每个元素的值到sum中
}
*avg = sum / n; // 平均值为 sum / n
}
int main() {
int n;
printf("请输入数组的长度n:");
scanf("%d", &n);
float array[n];
printf("请输入数组的%d个元素:", n);
for (int i = 0; i < n; i++) {
scanf("%f", &array[i]);
}
float max, min, avg;
computeArray(array, n, &max, &min, &avg);
printf("最大值:%f\n", max);
printf("最小值:%f\n", min);
printf("平均值:%f\n", avg);
return 0;
}
```
在主函数中,我们首先输入数组的长度n,并声明一个大小为n的一维实型数组array,用于存储输入的n个元素。然后,我们输入这n个元素的值。接下来,我们调用computeArray函数,并将数组array的地址、n的值以及存储最大值、最小值和平均值的变量的地址作为参数传递给函数。在computeArray函数中,我们使用指针访问数组元素,并在遍历数组过程中记录最大值、最小值和累加数组元素的和。最后,我们将计算得到的最大值、最小值和平均值打印出来。
阅读全文