1.输入n(n<100)个数,找出其中最小的数,将它与最前面的数交换后输出这些数。输入数据有多组,每组占一行,每行的开始是一个整数n,表示这个测试实例的数值的个数,跟着就是n个整数。n=0表示输入的结束,不做处理。
2.思路:讲所有数据放在数组中,找到最小数的位置跟值:
int a[] = null; // 定义一个空的数组
a = new int[n];
for (int i = 0; i < n; i++) {
m = cin.nextInt(); // 每一个数都放在数组中按顺序排好
a[i] = m;
if (a[i] < min) { // 寻找最小的数据,在那之前需要给min一个值100.
min = a[i];
flag = i; // 获取最小值的位置
}
}
3.交换第一个跟最小的那个的位置,控制输出时候空格的位置:
for (int i = 0; i < a.length; i++) {
if (i == 0) {
j = a[0];
a[0] = min;
}
if (i == flag) {
a[i] = j;
}
if (t==1) {
System.out.print(a[0]);
t++;
}else {
System.out.print(" "+a[i]);
}
}
最后换行:
System.out.println("");
AC代码:
import java.util.Scanner;
public class Main{
public static void main(String[] args) {
Scanner cin = new Scanner(System.in);
while (cin.hasNext()) {
int n = cin.nextInt();
int m = 0, min = 100, flag = 0, j = 0, t = 1;
int a[] = null;
a = new int[n];
if (n == 0) {
break ;
}
for (int i = 0; i < n; i++) {
m = cin.nextInt();
a[i] = m;
if (a[i] < min) {
min = a[i];
flag = i;
}
}
for (int i = 0; i < a.length; i++) {
if (i == 0) {
j = a[0];
a[0] = min;
}
if (i == flag) {
a[i] = j;
}
if (t==1) {
System.out.print(a[0]);
t++;
}else {
System.out.print(" "+a[i]);
}
}
System.out.println("");
}
}
}