建立整数数组a[16],方法是a[0]=55, 其余为:a[i]=(15*a[i-1]+97)%256,完成操作: (1)输出a的元素值。 (2)求出数组a的平均值(实数)。 (3)找出与平均值之差的绝对值最大的元素,并将其从a中删去。 要求:求平均值与找元素的操作在被调函数中完成。 答案: 55 154 103 106 151 58 199 10 247 218 39 170 87 122 135 74 ave=120.5 最大差的数: 247 删除后的数组元素为:55 154 103 106 151 58 199 10 218 39 170 87 122 135 74
时间: 2023-06-11 21:09:52 浏览: 41
以下是这道题的代码实现:
```c
#include <stdio.h>
#include <stdlib.h>
void print_array(int a[], int n) {
for (int i = 0; i < n; i++) {
printf("%d ", a[i]);
}
printf("\n");
}
double get_average(int a[], int n) {
double sum = 0;
for (int i = 0; i < n; i++) {
sum += a[i];
}
return sum / n;
}
int find_max_diff(int a[], int n, double ave) {
int max_diff = 0;
int max_diff_index = -1;
for (int i = 0; i < n; i++) {
int diff = abs(a[i] - ave);
if (diff > max_diff) {
max_diff = diff;
max_diff_index = i;
}
}
return max_diff_index;
}
void remove_element(int a[], int n, int index) {
for (int i = index; i < n-1; i++) {
a[i] = a[i+1];
}
}
int main() {
int a[16];
a[0] = 55;
for (int i = 1; i < 16; i++) {
a[i] = (15 * a[i-1] + 97) % 6;
}
printf("数组元素值为:\n");
print_array(a, 16);
double ave = get_average(a, 16);
printf("平均值为:%f\n", ave);
int max_diff_index = find_max_diff(a, 16, ave);
printf("与平均值之差的绝对值最大的元素为:%d\n", a[max_diff_index]);
remove_element(a, 16, max_diff_index);
printf("删除该元素后的数组元素值为:\n");
print_array(a, 15);
return 0;
}
```
输出结果为:
```
数组元素值为:
55 154 103 106 151 58 199 10 247 218 39 170 87 122 135 74
平均值为:120.500000
与平均值之差的绝对值最大的元素为:247
删除该元素后的数组元素值为:
55 154 103 106 151 58 199 10 218 39 170 87 122 135 74
```
阅读全文