数据的交换输出
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
#include <stdio.h>
#include <string.h>
int main() {
int n,m;
int x,y;
int a[100]; //数组存放输入的整数
while(scanf("%d",&n) != EOF){
int t = 0;
int min = 0;
int z = 0; //z用来控制空格的输出
if(n == 0){
break;
}
for(m = 0;m < n;m++){ //将输入的数存入数组
scanf("%d",&x);
a[m] = x;
}
for(y = 0;y < n;y++){ //遍历数组,找到最小值的下标
if(a[y] < a[t]){
t = y;
}
}
min = a[t]; //交换数组第一个数和最小数
a[t] = a[0];
a[0] = min;
for(m = 0;m < n;m++){
if(z > 0){
printf(" ");
}
printf("%d",a[m]);
z++;
}
printf("\n");
}
return -1;
}