问题描述
输入 n(n<100)个数,找出其中最小的数,将它与最前面的数交换后输出这些数。
输入
输入数据有多组,每组占一行,每行的开始是一个整数 n,表示这个测试实例的数值的个 数,跟着就是 n 个整数。n=0 表示输入的结束,不做处理。
输出量
对于每组输入数据,输出交换后的数列,每组输出占一行。
样本输入
4 2 1 3 4
5 5 4 3 2 1
0
样本输出
1 2 3 4
1 4 3 2 5
代码
#include <iostream>
#include <algorithm>
#include <vector>
using namespace std;
int main(){
int n,t,min,m;
while(cin>>n,n){
vector<int> vt;
for (int i = 0; i <n ; ++i) { //记录n个元素
cin>>t;
vt.push_back(t);
}
min=vt[0];
m=0;
for (int i = 0; i < n; ++i) { //找到最小元素的位置
if(vt[i]<min){
min=vt[i];
m=i;
}
}
swap(vt[0],vt[m]); //交换
for (int i = 0; i < n; ++i) { //依次输出元素
cout<<vt[i]<<" ";
}
cout<<endl;
}
return 0;
}