问题描述
体育课上,有一个班级的同学站成了一队,体育老师请最高的和最矮的两位同学调换一下位置,其余的同学不要动,请编程实现!(假设所有人的高矮都是不一样的)
输入
第一行有一个整数 𝑛n 代表该班级的总人数( 𝑛≤100);
第二行有 𝑛 个数,代表每个人的身高。
输出
调换位置后的结果。
附参考代码:
#include<iostream>
using namespace std;
int main()
{
int n,max,min,x,y,temp;
cin>>n;
if(n<=100)
{
int arr[n];
for(int i=0;i<n;i++)
{
cin>>arr[i];
}
max=0;
min=arr[0];
for(int j=0;j<n;j++)//先通过循环找出最大值
{
if(max<arr[j])
max=arr[j];
}
for(int j=0;j<n-1;j++)//通过循环找出最小值
{
if(min>arr[j+1])
min=arr[j+1];
}
for(int i=0;i<n;i++)//再次通过循环找出最大值和最小值所在数组的具体位置
{
if(max==arr[i])
{
x=i;//最大值所在位置
}
}
for(int j=n-1;j>=0;j--)
{
if(min==arr[j])
{
y=j;//最小值所在位置
}
}
temp=arr[x];//通过杯子换水法交换2个数据
arr[x]=arr[y];
arr[y]=temp;
for(int i=0;i<n;i++)//最后重新打印更改后的数组
cout<<arr[i]<<" ";
}
return 0;
}