1 2 3 4 5 16 17 18 19 6 15 24 25 20 7 14 23 22 21 8 13 12 11 10 9怎样用数组实现

 我来答
百度网友fb38a9c
推荐于2016-12-01 · 超过26用户采纳过TA的回答
知道答主
回答量:52
采纳率:0%
帮助的人:68.5万
展开全部
代码有点丑陋,但能够解决你需要的问题:
运行环境:
g++

#include <iostream>
#include <iomanip>

using namespace std;

#define ARRAYSIZE 5

int array[ARRAYSIZE][ARRAYSIZE] = {0};

void setArray()
{
int r = 0;
int c = 0;
int cnt = 1;
int dir = 0; // 0:右;1:下;2:左; 3:上
while( true ) {
if(cnt > ARRAYSIZE*ARRAYSIZE)
break;
if( r >= 0 && r < ARRAYSIZE
&& c >= 0 && c < ARRAYSIZE
&& array[r][c] ==0 ) {
array[r][c] = cnt;
cnt ++;
}else {
switch(dir) {
case 0:
c --;
break;
case 1:
r --;
break;
case 2:
c ++;
break;
case 3:
r ++;
break;
}
dir ++;
dir %=4;
}
switch(dir) {
case 0:
c ++;
break;
case 1:
r ++;
break;
case 2:
c --;
break;
case 3:
r --;
break;
}

}
}

void output()
{
for(int i=0; i < ARRAYSIZE; ++i ) {
for(int j=0; j < ARRAYSIZE; ++j ) {
cout<<setw(4)<<array[i][j];
}
cout<<endl;
}
}

int main()
{
setArray();
output();
return 0;
}

结果:
1 2 3 4 5
16 17 18 19 6
15 24 25 20 7
14 23 22 21 8
13 12 11 10 9
诺坚ci
2011-08-31 · TA获得超过403个赞
知道答主
回答量:109
采纳率:0%
帮助的人:101万
展开全部
二维数组记录数字,没数字的记为0。
用两个变量做标记,从[0][0]往左移,遇到0就记录数字,不是0或越界就顺时针转90度。

不知道你用什么语言……
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式