问题遇到的现象和发生背景
输入n个不同的正整数,把最大元素与最小的元素交换,其它数位置不变,最后并输出数组。
用C++实现
我的解答思路和尝试过的方法
应该是要用max和min
我想要达到的结果
输入:
5
2 6 1 9 7
输出:
2 6 9 1 7
(1和9换了位置,因为一是这里面最小的,9是最大的,最大&最小互换位置)
输入n个不同的正整数,把最大元素与最小的元素交换,其它数位置不变,最后并输出数组。
用C++实现
应该是要用max和min
输入:
5
2 6 1 9 7
输出:
2 6 9 1 7
(1和9换了位置,因为一是这里面最小的,9是最大的,最大&最小互换位置)
#include <iostream>
using namespace std;
int max(int a[],int n){
int m = a[0],index = 0;
for(int i = 0;i < n;i++){
if(a[i] > m){
m = a[i];
index = i;
}
}
return index;
}
int min(int a[],int n){
int m = a[0],index = 0;
for(int i = 0;i < n;i++){
if(a[i] < m){
m = a[i];
index = i;
}
}
return index;
}
int main()
{
int n;
cin >> n;
int a[n];
for(int i = 0;i < n;i++){
cin >> a[i];
}
int maxIndex = max(a,n), minIndex = min(a,n);
int temp = a[maxIndex];
a[maxIndex] = a[minIndex];
a[minIndex] = temp;
for(int i = 0;i < n;i++){
cout << a[i] << " ";
}
return 0;
}