输入n个整数,输出其中与平均值最接近的元素的值及下标。 要求定义下面功能函数,并在main函数中调用这些函数实现题目要求的功能: 1.double getAvg(int a[],int n) 功能:求数组a中n个数的平均值。 2.int getIndex(int a[],int n, double x) 功能:获取与x的值最接近的数组元素的下标。
时间: 2023-03-24 09:03:11 浏览: 183
两数之和:在该数组中找出和为目标值的那两个整数,并返回他们的数组下标
我可以回答这个问题。
以下是实现题目要求的代码:
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
double getAvg(int a[], int n);
int getIndex(int a[], int n, double x);
int main()
{
int n, i, index;
double avg, minDiff, diff;
int *a;
printf("请输入整数的个数n:");
scanf("%d", &n);
a = (int*)malloc(n * sizeof(int));
printf("请输入%d个整数:", n);
for (i = ; i < n; i++)
{
scanf("%d", &a[i]);
}
avg = getAvg(a, n);
printf("平均值为:%.2f\n", avg);
minDiff = fabs(a[] - avg);
index = ;
for (i = 1; i < n; i++)
{
diff = fabs(a[i] - avg);
if (diff < minDiff)
{
minDiff = diff;
index = i;
}
}
printf("与平均值最接近的元素的值为:%d,下标为:%d\n", a[index], index);
free(a);
return ;
}
double getAvg(int a[], int n)
{
int i;
double sum = ;
for (i = ; i < n; i++)
{
sum += a[i];
}
return sum / n;
}
int getIndex(int a[], int n, double x)
{
int i, index = ;
double minDiff = fabs(a[] - x), diff;
for (i = 1; i < n; i++)
{
diff = fabs(a[i] - x);
if (diff < minDiff)
{
minDiff = diff;
index = i;
}
}
return index;
}
阅读全文