打印n阶螺旋矩阵
不涉及数据结构与算法,主要对循环控制的考察。
#include<stdio.h>
/**
* 打印n阶螺旋矩阵
*/
void spiralMatrix(int n){
int arr[n][n];
int c = 1; //累加使用
int left = 0; //标记待打印行下标的最小值
int right = n-1; //标记待打印行下标的最大值
int top = 0; //标记待打印列下标的最小值
int bottom = n-1; //标记待打印列下标的最大值
int i, j;
while(left <= right && top <= bottom){
for(i = left; i <= right; i++){ //向右赋值
arr[top][i] = c;
c++;
}
top++;
for(i = top; i <= bottom; i++){ //向下赋值
arr[i][right] = c;
c++;
}
right--;
for(i = right; i >= left; i--){ //向左赋值
arr[bottom][i] = c;
c++;
}
bottom--;
for(i = bottom; i >= top; i--){ //向上赋值
arr[i][left] = c;
c++;
}
left++;
}
for(i = 0; i <n; i++){
for(j = 0; j < n; j++){
printf("%5d", arr[i][j]);
}
printf("\n");
}
}
int main(){
int n;
printf("请输入矩阵的阶数:");
scanf("%d", &n);
spiralMatrix(n);
return 0;
}
测试结果: