题目描述
输入10个整数,将其中最小的数与第一个数对换,把最大的数与最后一个数对换。写三个函数; ①输入10个数;②进行处理;③输出10个数。
输入
10个整数
输出
整理后的十个数,每个数后跟一个空格(注意最后一个数后也有空格)
样例输入
2 1 3 4 5 6 7 8 10 9
样例输出
1 2 3 4 5 6 7 8 9 10
1. 不知道这题跟队列有啥关系。。。
2. 本题看着简单,但是有个坑:
先替换最小数与第一个数:
如果最大的数就是第一个数,而先替换了最小的数与第一个数,也即现在第一个数是最小数,接着交换最大的数(求得在第一个位置)与最后一个数,就相当于把最小数弄到了最后一个位置上。
同理先替换最大数与最后一个数:相当于把最大数交换到了第一个位置上
#include<bits/stdc++.h>
using namespace std;
void swap(int &a,int &b){
int temp;
temp=a;
a=b;
b=temp;
}
int main(){
int num[10];
for(int i=0;i<10;i++){
cin>>num[i];
}
int max=0,min=0;
for(int i=0;i<10;i++){
if(num[i]>num[max]) max=i;
if(num[i]<num[min]) min=i;
}
if(max==0){//如果最大数在第一个位置上,先交换这两个数再交换最小数与第一个位置上已变换的数
swap(num[9],num[max]);
swap(num[0],num[min]);
}
else{//不是上述情况
swap(num[0],num[min]);
swap(num[9],num[max]);
}
for(int i=0;i<10;i++){
printf("%d ",num[i]);
}
cout<<endl;
return 0;
}