输入n(n<100)个数,找出其中最小的数,将它与最前面的数交换后输出这些数。
Input输入数据有多组,每组占一行,每行的开始是一个整数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
本题的思路核心就是如何找出最小的数所在的位置,自己所用的方法是利用一个变量j。
#include <iostream>
using namespace std;
int main()
{
int m,num[100],j,i;
while(cin>>m)
{
if(m==0)
break;
else
{
for(i=0;i<m;i++)
{
cin>>num[i];
}
int min=num[0];
j=0;
for(i=0;i<m;i++)//找出输入的最小的数
{
if(min>num[i])
{min=num[i];j=i;}//知晓数的位置
}
if (j!=0)
{
int temp;
temp=num[0];
num[0]=num[j];
num[j]=temp;//交换数据
}
for(i=0;i<m;i++)
{
if(i==m-1) cout<<num[i];
else cout<<num[i]<<" ";
}//输出
cout<<endl;
}
}
}