顺时针N(n<=10)阶旋转矩阵
#include<stdio.h>
#define N 10
void main()
{
int a[N][N];
//left, up, right, down为矩阵限制行和列
int left, up, right, down, n, t;
puts("input n:\n");
scanf("%d", &n);
if (n > 10)
{
puts("error n");
return;
}
left = up = t = 1;
right = down = n;
while(down >= up && right >= left)
{
//从左向右
for (int iTemp = left; iTemp <= right; iTemp++)
{
a[up-1][iTemp-1] = t++;
}
up++;
//从上到下
for (int iTemp = up; iTemp <= down; iTemp++)
{
a[iTemp-1][right-1] = t++;
}
right--;
//从右到左
for (int iTemp = right; iTemp >= left; iTemp--)
{
a[down-1][iTemp-1] = t++;
}
down--;
//从下到上
for (int iTemp = down; iTemp >= up; iTemp--)
{
a[iTemp-1][left-1] = t++;
}
left++;
}
for (int iRow = 0; iRow < n; iRow++)
{
for (int iColumn = 0; iColumn < n; iColumn++)
{
printf("%d\t",a[iRow][iColumn]);
}
puts("\n");
}
}