c语言找出一维数组最小的两个数,输入n(n≤20)个数放在一维数组中,找出其中最小的数,将它与数组最前面的数交换后输出这些数
时间: 2024-12-15 11:22:53 浏览: 71
在C语言中,为了找出一维数组中最小的两个数并将较小的一个与数组的第一个元素交换,你可以采用以下步骤:
1. **输入数组**: 先获取用户输入的数组大小`n`,然后创建一个能容纳`n`个整数的一维数组`arr[]`。
2. **初始化**: 初始化数组并假设第一个元素为最大值(因为我们要找的是最小值)。同时,初始化一个辅助数组`temp[]`,用于保存前两个最小的数。
3. **查找最小值**: 遍历整个数组,对于每一个元素,比较其值与`temp[0]`和`temp[1]`。如果当前元素小于`temp[0]`,则把`temp[1]`的值赋给`temp[0]`,将当前元素赋给`temp[1]`。如果当前元素介于两者之间,则只替换较大的那个值。
4. **交换最小值**:当遍历结束后,`temp[0]`将包含数组中的最小值,`temp[1]`将包含第二小的值。如果`temp[0]`不是第一个元素,我们需要将它与`arr[0]`交换。
5. **输出结果**: 交换后,打印数组中的元素,包括原来的最小值和现在位于第一个位置的小数值。
下面是一个简单的示例代码:
```c
#include <stdio.h>
void find_min_two(int arr[], int n, int temp[]) {
temp[0] = arr[0];
temp[1] = arr[0];
for (int i = 1; i < n; i++) {
if (arr[i] < temp[0]) {
temp[1] = temp[0];
temp[0] = arr[i];
} else if (arr[i] < temp[1]) {
temp[1] = arr[i];
}
}
if (temp[0] != arr[0]) {
int temp_swap = arr[0];
arr[0] = temp[0];
temp[0] = temp_swap;
}
}
int main() {
int n;
printf("请输入数组元素的数量(1-%d): ", 20);
scanf("%d", &n);
int arr[n];
for (int i = 0; i < n; i++) {
scanf("%d", &arr[i]);
}
int temp[2];
find_min_two(arr, n, temp);
printf("数组元素: ");
for (int i = 0; i < n; i++) {
printf("%d ", arr[i]);
}
printf("\n");
return 0;
}
```
阅读全文
相关推荐

















