java简单问题

QuickPai 2009-04-20 06:43:52
1 2 3 4 5
16 17 18 19 6
15 24 25 20 7
14 17 18 19 8
13 12 11 10 9

Java 中怎么用2维数组把这些
数字按顺序打印出来呀。
这其中有什么规律哦。
有人在吗 帮忙看一下
怎么按照规律输出这些数
...全文
59 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
QuickPai 2009-04-20
  • 打赏
  • 举报
回复
还是没人帮我啊 哎。。。。
我还是自己写吧 上网查了资料 很像螺旋矩阵 所以就简单了
代码如下:

//生成n阶螺旋方阵(0<n<20)

#include "stdio.h"
#define n 5
void Matrix(int arr[][n])
{
int row = 0, col = 0; // 当前位置所在的行列
int left = -1, right = n, top = -1, bottom = n; // 当前的边界
int irow = 0, icol = 1; // 当前的前进方向(初始时往右)
//int arr[20][20];

for(int i=0; i<n*n; ++i)
{
arr[row][col] = i+1;

// 根据当前的前进方向获得下一个位置的行列号
row += irow;
col += icol;

if(col == right)
{
// 下一个位置是右边界时,往下。
irow = 1;
icol = 0;

// 此时,顶边界往下一格
top += 1;

// 改变下一个位置
row += 1;
col -= 1;
}
if(row == bottom)
{
// 下一个位置是底边界时,往左。
irow = 0;
icol = -1;

// 此时,右边界往左一格
right -= 1;

// 改变下一个位置
row -= 1;
col -= 1;
}
if(col == left)
{
// 下一个位置是左边界时,往上。
irow = -1;
icol = 0;

// 此时,底边界往上一格
bottom -= 1;

// 改变下一个位置
row -= 1;
col += 1;
}
if(row == top)
{
// 下一个位置是顶边界时,往右。
irow = 0;
icol = 1;

// 此时,左边界往右一格
left += 1;

// 改变下一个位置
row += 1;
col += 1;
}
}
}
void main()
{
int arr[n][n];
Matrix(arr);

for(int k=1; k<n-1; ++k)
arr[n-2][k]=arr[1][k];

for(int i=0; i<n; ++i)
{
for(int j=0; j<n; ++j)
printf("%4d", arr[i][j]);
printf("\n");
}
printf("\n");
}
QuickPai 2009-04-20
  • 打赏
  • 举报
回复
呵呵 想想嘛 应该会的
不要谦虚啊 请赐教
我是初学者
Despereaux 2009-04-20
  • 打赏
  • 举报
回复
不会

23,404

社区成员

发帖
与我相关
我的任务
社区描述
Java 非技术区
社区管理员
  • 非技术区社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧