代码如下:
#include
using namespace ::std;
#define N 10
int a[N][N];
void InitSeq( int n )
{
int value = 1;
int i, j;
for( i = 0; i < n/2; i++ ) // n/2是圈数
{
for( j = i; j < n - i; j++ ) //向右增长
{
a[j][i] = value++;
}
for( j = i + 1; j < n - i; j++ ) //向下增长
{
a[n-1-i][j] = value++;
}
for( j = n - 2 - i; j > i; j-- ) //向左增长
{
a[j][n-1-i] = value++;
}
for( j = n - 1 - i; j > i; j-- ) //向上增长
{
a[i][j] = value++;
}
//n为奇数时,最中间数的值
if( n % 2 == 1 )
a[n/2][n/2] = value;
}
}
void printSeq( int n )
{
cout << "顺时针:" << endl;
for( int i = 0; i < n; i++ )
{
for( int j = 0; j < n; j++ )
{
printf( "%5d", a[j][i] );
}
printf("\n");
}
cout << "逆时针:" << endl;
for( int i = 0; i < n; i++ )
{
for( int j = 0; j < n; j++ )
{
printf( "%5d", a[i][j] );
}
printf("\n");
}
}
int main()
{
int n;
cout << "请输入旋转矩阵边的大小:";
cin >> n;
InitSeq(n);
printSeq(n);
system( "PAUSE");
return 0;
}
输出结果:
请输入旋转矩阵边的大小:7
顺时针:
1 2 3 4 5 6 7
24 25 26 27 28 29 8
23 40 41 42 43 30 9
22 39 48 49 44 31 10
21 38 47 46 45 32 11
20 37 36 35 34 33 12
19 18 17 16 15 14 13
逆时针:
1 24 23 22 21 20 19
2 25 40 39 38 37 18
3 26 41 48 47 36 17
4 27 42 49 46 35 16
5 28 43 44 45 34 15
6 29 30 31 32 33 14
7 8 9 10 11 12 13
请按任意键继续. . .