数据的交换输出
Time Limit:2000/1000 MS
Memory Limit:65536/32768 K
Problem Description
输入n(n<100)个数,找出其中最小的数,将它与最前面的数交换后输出这些数。
Input
输入数据有多组,每组占一行,每行的开始是一个整数n,表示这个测试实例的数值的个数,跟着就是n个整数。n=0表示输入的结束,不做处理。
Output
对于每组输入数据,输出交换后的数列,每组输出占一行。
Sample Input
4 2 1 3 4
5 5 4 3 2 1
0
Sample Output
1 2 3 4
1 4 3 2 5
分析
这个问题很简单也没什么好分析的,主要就是比较大小找出最小的数和它的位置,因为最后还要全部输出,因此要将输入的数据记录到数组中。因为程序运行时并不知道要输入多少个数,所以可以直接设一个大小为100的数组,或者用new进行动态分配空间(本程序就是此方法)。最后要养成习惯,记得delete。
#include <iostream>
using namespace std;
int main()
{
int n,min,temp,j;
while (cin>>n&&n!=0)
{
int *p=new int[n];//定义指针并指向用new动态分配大小为n的空间
for (int i=0;i<n;i++)
{
cin>>p[i];
if (i==0)
{
min=p[0];
j=0;
}
else
{
if (p[i]<min)
{
min=p[i];
j=i;
}
}
}
temp=p[0];
p[0]=min;
p[j]=temp;
for (int i=0;i<n;i++)
{
if (i!=0)
{
cout<<" ";//数与数之间用空格分开
}
cout<<p[i];
}
cout<<endl;
delete p;//记着delete释放空间
}
return 0;
}