输入一个矩阵,按照从外向里以顺时针的顺序依次打印出每一个数字
这里主要思路就是顺着外圈往内圈走,控制行列变量,让每次递加的数组下标符合我们要展示的螺旋图形就可以
代码实现:
int main(){
int i, j, a[100][100] = { 0 }, n, k = 1;
printf("please input a number n:");
while (scanf("%d", &n) != EOF){
k = 1;
for (i = 1; i <= n / 2; ++i){
for (j = i; j <= n - i; ++j) /* 左侧 */
a[i][j] = k++;
for (j = i; j <= n - i; ++j) /* 下方 */
a[j][n + 1 - i] = k++;
for (j = n - i + 1; j >= i + 1; j = j - 1) /* 右侧 */
a[n + 1 - i][j] = k++;
for (j = n - i + 1; j >= i + 1; j = j - 1) /* 上方 */
a[j][i] = k++;
}
if (n != 1){
for (i = 1; i <= n; ++i){
for (j = 1; j <= n; ++j)
printf("%5d", a[i][j]); printf("\n");
}
}
else
printf("%5d\n", n);
printf("please input a number n:");
}
return 0;
}