c 语言去掉数组最大最小值代码
时间: 2024-09-23 07:03:28 浏览: 51
在C语言中,要去掉数组中的最大值和最小值,你可以先遍历整个数组找到最大值和最小值,然后创建一个新的数组,将除了这两个值之外的所有元素复制过去。以下是简单的示例:
```c
#include <stdio.h>
// 定义新数组的大小,这里假设原数组有n个元素
#define NEW_SIZE (n - 2)
void removeMinMax(int arr[], int n, int new_arr[]) {
// 初始化最大值和最小值为第一个元素
int max = arr[0], min = arr[0];
// 遍历数组找到最大值和最小值
for (int i = 1; i < n; i++) {
if (arr[i] > max) {
max = arr[i];
}
if (arr[i] < min) {
min = arr[i];
}
}
// 填充新数组,跳过最大值和最小值
int index = 0;
for (int i = 0; i < n; i++) {
if (arr[i] != max && arr[i] != min) {
new_arr[index++] = arr[i];
}
}
}
int main() {
int original[] = {5, 2, 9, 1, 7};
int size = sizeof(original) / sizeof(original[0]);
int reduced[size]; // 新数组
removeMinMax(original, size, reduced);
printf("Original array: ");
for (int i = 0; i < size; i++) {
printf("%d ", original[i]);
}
printf("\nNew array without max and min: ");
for (int i = 0; i < NEW_SIZE; i++) {
printf("%d ", reduced[i]);
}
return 0;
}
```
这个代码首先找到数组的最大值和最小值,然后创建新数组并忽略它们。注意,新数组的大小减去了2(因为要去掉两个值),所以在`main`函数中也需要调整。
阅读全文