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怎样用数组实现
展开全部
代码有点丑陋,但能够解决你需要的问题:
运行环境:
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
运行环境:
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
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询