import java.util.*;
import java.io.*;
public class huixuan{
public static void main(String[] arg) throws NumberFormatException, IOException
{
System.out.println("请输入N:");
BufferedReader read = new BufferedReader(new InputStreamReader(System.in));
int x = Integer.parseInt(read.readLine());
int count = (x / 2) + 1;
int k = x;
int[][] a = new int[k][k];
for( int i = 1; i <= count; i++ )
{
for( int n = i - 1; n <= k - i; n++ )
{
if( i == 1 && n == 0 )
a[i-1][n] = 1;
else
a[i-1][n] = a[i-1][n-1] + 1;
} for( int n = i; n <= k - i; n++ )
{
a[n][k-i] = a[n-1][k-i] + 1;
} for( int n = k - i - 1; n >= i - 1; n-- )
{
a[k-i][n] = a[k-i][n+1] + 1;
} for( int n = k - i - 1; n >= i; n-- )
{
a[n][i-1] = a[n+1][i-1] + 1;
}
}
for( int i = 0; i < k; i++ )
{
for( int j = 0; j < k; j++ )
{
if( a[i][j] <= 9 )
{
System.out.print(" "+a[i][j]);
}
else
System.out.print(" "+a[i][j]);
}
System.out.println();
}
}
}
import java.io.*;
public class huixuan{
public static void main(String[] arg) throws NumberFormatException, IOException
{
System.out.println("请输入N:");
BufferedReader read = new BufferedReader(new InputStreamReader(System.in));
int x = Integer.parseInt(read.readLine());
int count = (x / 2) + 1;
int k = x;
int[][] a = new int[k][k];
for( int i = 1; i <= count; i++ )
{
for( int n = i - 1; n <= k - i; n++ )
{
if( i == 1 && n == 0 )
a[i-1][n] = 1;
else
a[i-1][n] = a[i-1][n-1] + 1;
} for( int n = i; n <= k - i; n++ )
{
a[n][k-i] = a[n-1][k-i] + 1;
} for( int n = k - i - 1; n >= i - 1; n-- )
{
a[k-i][n] = a[k-i][n+1] + 1;
} for( int n = k - i - 1; n >= i; n-- )
{
a[n][i-1] = a[n+1][i-1] + 1;
}
}
for( int i = 0; i < k; i++ )
{
for( int j = 0; j < k; j++ )
{
if( a[i][j] <= 9 )
{
System.out.print(" "+a[i][j]);
}
else
System.out.print(" "+a[i][j]);
}
System.out.println();
}
}
}
package com.walkman.test;import java.io.*;
/**
*
* @author: yanzhne
* @date: 2012-3-7
*/
public class Test {
public static void main(String args[]) {
System.out.println("请输入N:");
BufferedReader read = new BufferedReader(new InputStreamReader(
System.in));
int x = 0;
try {
x = Integer.parseInt(read.readLine());
} catch (NumberFormatException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
int count = (x / 2) + 1; // 矩阵的中间数
int k = x;
int[][] a = new int[k][k];
// 构建一个回旋矩阵
for (int i = 1; i <= count; i++) {
// 输出第一个回旋的前四个数字,第一次设定1,2,3,4(5行/列矩阵为例)
for (int n = i - 1; n <= k - i; n++) {
if (i == 1 && n == 0)
a[i - 1][n] = 1;
else
a[i - 1][n] = a[i - 1][n - 1] + 1;
} // 输出第一个回旋的右侧数列,第一次设定为5,6,7,8
for (int n = i; n <= k - i; n++) {
a[n][k - i] = a[n - 1][k - i] + 1;
} // 输出第一个回旋的底部数列,第一次设定为9,10,11,12
for (int n = k - i - 1; n >= i - 1; n--) {
a[k - i][n] = a[k - i][n + 1] + 1;
} // 输出第一个回旋的左侧数列,第一次设定为13,14,15,16
for (int n = k - i - 1; n >= i; n--) {
a[n][i - 1] = a[n + 1][i - 1] + 1;
}
}
// 输出回旋矩阵
for (int i = 0; i < k; i++) {
for (int j = 0; j < k; j++) {
if (a[i][j] <= 9) {
System.out.print(" " + a[i][j]);
} else
System.out.print(" " + a[i][j]);
}
System.out.println();
}
}}这种复杂的程序可以分解循环,从循环体的第一个数字开始计算,虽说麻烦点,也没有更好的方法。
一个练脑子的程序,当年就没想出方法来。写程序的人数学功底不错。