输入一个正整数n(1<n≤10),再输入n个整数(<=999),将最小值与第一个数交换,最大值与最后一个数交换,然后输出交换后的n个数 c语言
时间: 2024-09-30 15:02:14 浏览: 27
c代码-输入十个数,判断其中最大数和最小数
在C语言中,你可以通过以下步骤实现这个功能:
1. 首先,创建一个函数`swapMinMax(int arr[], int n)`,它接受一个整数数组`arr[]`和它的长度`n`作为参数。
2. 初始化两个变量`min`和`max`,分别记录数组中的最小值和最大值。假设初始最小值和最大值都设为数组的第一个元素`arr[0]`。
3. 使用一个循环遍历数组,从第二个元素开始,更新`min`和`max`如果找到更小或更大的数。
4. 当找到所有元素后,再遍历一次数组,找到对应的位置`first`和`last`,它们分别是`min`和`max`所在的位置。
5. 使用`swap`函数(可以自定义或者使用标准库提供的`std::swap`)将数组的第一个元素(原最小值)和`first`位置的元素交换,将数组的最后一个元素(原最大值)和`last`位置的元素交换。
6. 最后返回数组`arr[]`,表示已经进行了交换。
以下是简单的示例代码:
```c
#include <stdio.h>
// 自定义交换函数,也可以使用库函数
void swap(int* a, int* b) {
int temp = *a;
*a = *b;
*b = temp;
}
int findMinMax(int arr[], int n, int* min_index, int* max_index) {
*min_index = 0; // 初始化最小值索引
*max_index = 0; // 初始化最大值索引
int min = arr[0], max = arr[0];
for (int i = 1; i < n; i++) {
if (arr[i] < min) {
min = arr[i];
*min_index = i;
}
if (arr[i] > max) {
max = arr[i];
*max_index = i;
}
}
return min, max;
}
int main() {
int n;
printf("Enter the number of integers (1<n<=10): ");
scanf("%d", &n);
int arr[n];
printf("Enter %d integers (<=999): ", n);
for (int i = 0; i < n; i++) {
scanf("%d", &arr[i]);
}
int first, last;
int min, max;
findMinMax(arr, n, &first, &last);
swap(&arr[0], &arr[first]); // 交换最小值
swap(&arr[n - 1], &arr[last]); // 交换最大值
printf("Array after swapping: ");
for (int i = 0; i < n; i++) {
printf("%d ", arr[i]);
}
return 0;
}
```
阅读全文