#include <iomanip>
#include <iostream>
const int N = 5;
int arr[N][N];
int main()
{
int var = N;
int count = 0;
int i = 0;
int j = 0;
int k = 0;
while(var > 0)
{
for(k=0; k<var; k++)
{
arr[i][j++] = ++count;
}
var--;
j--;
for(k=0; k<var; k++)
{
arr[++i][j] = ++count;
}
for(k=0; k<var; k++)
{
arr[i][--j] = ++count;
}
var--;
for(k=0; k<var; k++)
{
arr[--i][j] = ++count;
}
j++;
}
for(i=0; i<N; i++)
{
for(j=0; j<N; j++)
{
cout<<setw(2)<<arr[i][j]<<" ";
}
cout<<endl;
}
return 0;
}
结果如下:
类似的另外一种实现:
const int N = 6;
int a[N][N];
int main()
{
int i = 0;
int j = 0;
int count = 0;
int num = (N+1) / 2;
int numin = N-1;
int x = 0;
int y = 0;
for(i=0; i<num; i++)
{
for(j=0; j<numin; j++)
{
a[x][y++] = ++count;
}
for(j=0; j<numin; j++)
{
a[x++][y] = ++count;
}
for(j=0; j<numin; j++)
{
a[x][y--] = ++count;
}
for(j=0; j<numin; j++)
{
a[x--][y] = ++count;
}
x++;
y++;
numin -= 2;
if(numin == 0)
{
a[x][y] = ++count;
break;
}
}
for(i=0; i<N; i++)
{
for(j=0; j<N; j++)
{
printf("%2d ", a[i][j]);
}
printf("\n");
}
return 0;
}