import java.util.Scanner; public class Rotate { public static void main(String[] args) { Scanner input = new Scanner(System.in); System.out.println("请输入阶数(正整数):"); int n = input.nextInt(); if(n <= 0) { System.out.println("阶数为正整数!"); System.exit(0); }
int[][] num = new int[n][n]; for(int i=0; i<num.length; i++) { for(int j=0; j<num[i].length; j++) { num[i][j] = 0; } } //如果是偶数阶的话,就从[n-1,0]开始按照先右再上,然后左,最后下的顺序循环 //如果是奇数阶的话,就从[0,n-1]开始按照先左再下,然后右,最后上的顺序循环 //值从n*n依次减1 int i,j; int circle = 0;//循环的圈数 int max = n * n; if(n % 2 == 0) { i = n - 1; j = 0; while(circle <= n / 2) { for(; j<n-circle; j++) num[i][j] = max--; for(j--,i--; i>=circle; i--) num[i][j] = max--; for(i++,j--; j>=circle; j--) num[i][j] = max--; for(i++,j++; i<n-circle-1; i++) num[i][j] = max--; j++; i--; circle ++; } } else { i = 0; j = n - 1; while(circle <= n / 2) { for(; j>=circle; j--) num[i][j] = max--; for(j++,i++; i<n-circle; i++) num[i][j] = max--; for(i--,j++; j<n-circle; j++) num[i][j] = max--; for(j--,i--; i>=circle+1; i--) num[i][j] = max--; i++; j--; circle ++; } }
int len = String.valueOf(n * n).length();//最大的数的位数 String format = "%" + len + "d ";//每个数都按最大数的位数格式化 for(i=0; i<num.length; i++) { for(j=0; j<num.length; j++) { System.out.format(format, num[i][j]); } System.out.println(); } } }
public class ATests { public static void main(String[] args) { //设置行列数 m--行 n--列 随意设置 自己修改或者键盘录入 int m = 4; int n = 4;
int[][] a = new int[m][n];
int c = (m>n?n:m+1)/2; int i = 0; int j = 0; int max_i = 0; int max_j = 0; int value = m*n;
import java.util.Scanner;
public class Rotate {
public static void main(String[] args) {
Scanner input = new Scanner(System.in);
System.out.println("请输入阶数(正整数):");
int n = input.nextInt();
if(n <= 0) {
System.out.println("阶数为正整数!");
System.exit(0);
}
int[][] num = new int[n][n];
for(int i=0; i<num.length; i++) {
for(int j=0; j<num[i].length; j++) {
num[i][j] = 0;
}
} //如果是偶数阶的话,就从[n-1,0]开始按照先右再上,然后左,最后下的顺序循环
//如果是奇数阶的话,就从[0,n-1]开始按照先左再下,然后右,最后上的顺序循环
//值从n*n依次减1
int i,j;
int circle = 0;//循环的圈数
int max = n * n;
if(n % 2 == 0) {
i = n - 1;
j = 0;
while(circle <= n / 2) {
for(; j<n-circle; j++)
num[i][j] = max--;
for(j--,i--; i>=circle; i--)
num[i][j] = max--;
for(i++,j--; j>=circle; j--)
num[i][j] = max--;
for(i++,j++; i<n-circle-1; i++)
num[i][j] = max--;
j++;
i--;
circle ++;
}
} else {
i = 0;
j = n - 1;
while(circle <= n / 2) {
for(; j>=circle; j--)
num[i][j] = max--;
for(j++,i++; i<n-circle; i++)
num[i][j] = max--;
for(i--,j++; j<n-circle; j++)
num[i][j] = max--;
for(j--,i--; i>=circle+1; i--)
num[i][j] = max--;
i++;
j--;
circle ++;
}
}
int len = String.valueOf(n * n).length();//最大的数的位数
String format = "%" + len + "d ";//每个数都按最大数的位数格式化
for(i=0; i<num.length; i++) {
for(j=0; j<num.length; j++) {
System.out.format(format, num[i][j]);
}
System.out.println();
}
}
}
{
public static void main(String[] args)
{
//设置行列数 m--行 n--列 随意设置 自己修改或者键盘录入
int m = 4;
int n = 4;
int[][] a = new int[m][n];
int c = (m>n?n:m+1)/2;
int i = 0;
int j = 0;
int max_i = 0;
int max_j = 0;
int value = m*n;
for (int k = 0; k < c; k++)
{
i = k;
j = k;
max_i = m-k;
max_j = n-k;
if(k!=m-k-1)
{
for(;j<max_j;j++)
{
a[max_i-1][j] = value--;
}
for(max_i=max_i-2;max_i>=i;max_i--)
{
a[max_i][j-1] = value--;
}
for(j=max_j-2;j>=k;j--)
{
a[i][j] = value--;
} for(i=i+1;i<m-k-1;i++)
{
a[i][k] = value--;
}
}
else
{
for(;j<max_j;j++)
{
a[max_i-1][j] = value--;
}
}
}
for(int h=0;h<a.length;h++)
{
for(int g=0;g<a[h].length;g++)
{
System.out.print(a[h][g]+"\t");
}
System.out.println();
}
}
}
public class ATests
{
public static void main(String[] args)
{
//设置行列数 m--行 n--列 随意设置 自己修改或者键盘录入
int m = 4;
int n = 4;
int[][] a = new int[m][n];
int c = (m>n?n:m+1)/2;
int i = 0;
int j = 0;
int max_i = 0;
int max_j = 0;
int value = m*n;
for (int k = 0; k < c; k++)
{
i = k;
j = k;
max_i = m-k;
max_j = n-k;
if(k!=m-k-1)
{
for(;j<max_j;j++)
{
a[max_i-1][j] = value--;
}
for(max_i=max_i-2;max_i>=i;max_i--)
{
a[max_i][j-1] = value--;
}
for(j=max_j-2;j>=k;j--)
{
a[i][j] = value--;
} for(i=i+1;i<m-k-1;i++)
{
a[i][k] = value--;
}
}
else
{
for(;j<max_j;j++)
{
a[max_i-1][j] = value--;
}
}
}
for(int h=0;h<a.length;h++)
{
for(int g=0;g<a[h].length;g++)
{
System.out.print(a[h][g]+"\t");
}
System.out.println();
}
}
}
for (int i = 0; i < size * size; ++i) {
if (i % size == 0 && i != 0) {
std::cout << std::endl;
} printf("%-4d", m[i]);
}
}/*
82 81 80 79 78 77 76 75 74 73
83 50 49 48 47 46 45 44 43 72
84 51 26 25 24 23 22 21 42 71
85 52 27 10 9 8 7 20 41 70
86 53 28 11 2 1 6 19 40 69
87 54 29 12 3 4 5 18 39 68
88 55 30 13 14 15 16 17 38 67
89 56 31 32 33 34 35 36 37 66
90 57 58 59 60 61 62 63 64 65
91 92 93 94 95 96 97 98 99 100
*/
void matrix_2(const int size) {
int *ns = new int[size * size];
int x = size - 1, y = size - 1;
int count = size * size; ns[size * size - 1] = count--;
int circle = 0;
while (count > 0) {
while (x - 1 >= circle) {
ns[y * size + (--x)] = count--;
} // left
while (y - 1 >= circle) {
ns[(--y) * size + x] = count--;
} // top
while (x + 1 < size - circle) {
ns[y * size + (++x)] = count--;
} // right
while (y + 1 < size - circle - 1) {
ns[(++y) * size + x] = count--;
} // down ++circle;
} printMatrix(ns, size);
delete[] ns;
}