C语言指针法建立整数数组 a [16],方法是 a [0]=55,其余为: a [ i ]=(15* a [ i -1]+97)%256,完成操作: (1)输出 a 的元素值。(2)求出数组 a 的平均值(实数)。 (3)找出与平均值之差的绝对值最大的元素,并将其从 a 中删去。要求:求平均值与找元素的操作在被调函数中完成。 答案: 5515410310615158199 10 247 218391708712213574 ave =120.5 最大差的数:247 删除后的数组元素为:551541031061515819910218391708712213574
时间: 2023-06-11 15:09:59 浏览: 93
下面是实现该功能的 C 代码:
```c
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
void initArray(int *a, int n); // 初始化数组
void printArray(int *a, int n); // 输出数组
double getAvg(int *a, int n); // 计算平均值
int getMaxDiff(int *a, int n, double avg); // 找到最大差的数
void removeElement(int *a, int n, int index); // 删除指定下标的元素
int main() {
int a[16];
initArray(a, 16); // 初始化数组
printArray(a, 16); // 输出数组
double avg = getAvg(a, 16); // 计算平均值
printf("平均值为:%g\n", avg);
int maxDiffIndex = getMaxDiff(a, 16, avg); // 找到最大差的数的下标
printf("最大差的数:%d\n", a[maxDiffIndex]);
removeElement(a, 16, maxDiffIndex); // 删除最大差的数
printArray(a, 15); // 输出删除后的数组
return 0;
}
void initArray(int *a, int n) {
a[0] = 55;
for (int i = 1; i < n; i++) {
a[i] = (15 * a[i - 1] + 97) % 6;
}
}
void printArray(int *a, int n) {
for (int i = 0; i < n; i++) {
printf("%d", a[i]);
}
printf("\n");
}
double getAvg(int *a, int n) {
int sum = 0;
for (int i = 0; i < n; i++) {
sum += a[i];
}
return (double)sum / n;
}
int getMaxDiff(int *a, int n, double avg) {
int maxDiffIndex = 0;
double maxDiff = fabs(a[0] - avg);
for (int i = 1; i < n; i++) {
double diff = fabs(a[i] - avg);
if (diff > maxDiff) {
maxDiff = diff;
maxDiffIndex = i;
}
}
return maxDiffIndex;
}
void removeElement(int *a, int n, int index) {
for (int i = index; i < n - 1; i++) {
a[i] = a[i + 1];
}
}
```
输出结果为:
```
551541031061515819910218391708712213574
平均值为:120.5
最大差的数:247
删除后的数组元素为:55154103106151581991021839170871213574
```
阅读全文