题目描述:
输入整数N,输出一个N阶的二维数组。 数组的形式参照样例。
输入格式:
输入包含多行,每行包含一个整数N。 当输入行为N=0时,表示输入结束,且该行无需作任何处理。
输出格式:
对于每个输入整数N,输出一个满足要求的N阶二维数组。 每个数组占N行,每行包含N个用空格隔开的整数。 每个数组输出完毕后,输出一个空行。
数据范围:
0≤N≤100
方法一:向右向下延伸
import java.util.Scanner;
public class Main{
static int N = 110;
static int[][] a = new int[N][N];
public static void main(String[] args) {
Scanner read = new Scanner(System.in);
int n;
while(true) {
n = read.nextInt();
if(n == 0) break;
for(int i = 0;i < n;i++ ) {
for(int j = i,k = 1;j<n;j++,k++) {
a[i][j] = k; //向右延伸
a[j][i] = k;//向下延伸
}
}
for(int i = 0;i < n;i++) {
for(int j = 0; j < n;j++) {
System.out.print(a[i][j] + " ");
}
System.out.print("\n");
}
System.out.print("\n");
}
}
}
方法二:分两部分,按行输出
import java.util.Scanner;
public class Main{
static int N = 110;
public static void main(String[] args) {
Scanner read = new Scanner(System.in);
int n;
while(true) {
n = read.nextInt();
if(n == 0) break;
for(int i = 1; i <= n; i++){//按行输出
for(int j = i;j >= 1; j--) System.out.print(j + " "); //从大到小
for(int j = i + 1; j <= n; j++) System.out.print((j - i + 1) + " "); //从小到大
System.out.print("\n");
}
System.out.print("\n");
}
}
}