去掉数组中最大最小值c语言
时间: 2024-09-26 07:18:00 浏览: 131
在C语言中,如果你想要去掉数组中的最大值和最小值,一种常见的做法是遍历整个数组,并记录下最大值和最小值,然后分别替换这两个值为某个特定值(如数组的第一个元素),最后再移除它们所在的位置。以下是简单的步骤:
1. 初始化两个变量`max_val`和`min_val`,分别为数组的第一个元素和数组本身,假设数组名为`arr`,长度为`n`。
2. 遍历数组从第二个元素开始(防止一开始就修改最大值和最小值):
```c
for (int i = 1; i < n; i++) {
if (arr[i] > max_val) {
max_val = arr[i];
}
if (arr[i] < min_val) {
min_val = arr[i];
}
}
```
3. 找到最大值和最小值在数组中的索引,通常通过另一个循环或`bsearch`函数来完成。找到后,可以将它们设置为第一个元素(或其他特殊值),并跳过这两个位置:
```c
int max_index = -1;
int min_index = -1;
// ...找到最大值和最小值的索引...
// 例如,将最大值和最小值替换为0
arr[max_index] = arr[min_index] = 0;
// 然后跳过这两个元素
max_index++;
min_index++;
```
4. 最后,更新数组的大小,减去2(因为要去掉两个元素):
```c
n -= 2;
```
5. 你可能需要创建一个新的数组或者对原数组截断来保留去掉这两个元素后的部分。
请注意,这个过程会改变原始数组。如果不想改变原数组,建议复制一份后再操作。
阅读全文