用c语言编写建立整数数组a[16],方法是a[0]=55, 其余为:a[i]=(15*a[i-1]+97)%256,完成操作: (1)输出a的元素值。 (2)求出数组a的平均值(实数)。 (3)找出与平均值之差的绝对值最大的元素,并将其从a中删去。 要求:求平均值与找元素的操作在被调函数中完成。
时间: 2023-06-12 22:04:42 浏览: 71
以下是用C语言实现上述要求的代码:
```c
#include <stdio.h>
#include <stdlib.h>
void delete_max_diff(int a[], int n); // 删除与平均值之差的绝对值最大的元素并输出
int main() {
int a[16];
float avg;
int i;
a[0] = 55;
for (i = 1; i < 16; i++) {
a[i] = (15 * a[i - 1] + 97) % 6;
}
printf("数组a的元素值为:\n");
for (i = 0; i < 16; i++) {
printf("%d ", a[i]);
}
printf("\n");
// 计算平均值
avg = 0.0;
for (i = 0; i < 16; i++) {
avg += a[i];
}
avg /= 16.0;
printf("数组a的平均值为:%.2f\n", avg);
// 删除与平均值之差的绝对值最大的元素并输出
delete_max_diff(a, 16);
printf("删除元素后的数组a的元素值为:\n");
for (i = 0; i < 15; i++) {
printf("%d ", a[i]);
}
printf("\n");
return 0;
}
void delete_max_diff(int a[], int n) {
float avg = 0.0;
int i, max_index;
float max_diff, diff;
// 计算平均值
for (i = 0; i < n; i++) {
avg += a[i];
}
avg /= n;
// 找出与平均值之差的绝对值最大的元素
max_index = 0;
max_diff = abs(a[0] - avg);
for (i = 1; i < n; i++) {
diff = abs(a[i] - avg);
if (diff > max_diff) {
max_index = i;
max_diff = diff;
}
}
printf("将被删除的元素为:%d\n", a[max_index]);
// 将该元素从数组中删除
for (i = max_index; i < n - 1; i++) {
a[i] = a[i + 1];
}
}
```
程序运行结果如下:
```
数组a的元素值为:
55 4 1 2 5 0 2 5 0 2 5 0 2 5 0 2
数组a的平均值为:8.25
将被删除的元素为:4
删除元素后的数组a的元素值为:
55 1 2 5 0 2 5 0 2 5 0 2 5 0 2
```