版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/baidu_36669549/article/details/84979287
打印一个螺旋矩阵。例如,一个5×5的螺旋矩阵如图
【分析】
通过观察,发现一个n×n的螺旋矩阵可以分为(n+1)/2圈,可以使用一个循环控制圈数。每圈的元素可以分为上、右、下、左4个方向,在内层循环中可以使用4个循环控制每圈的四个方向的元素输出。其中:
△上:行号不变,列号依次增1;
△右:行号依次增1,列号不变;
△下:行号不变,列号依次减1;
△左:行号依次减1,列号不变。
main.cpp
#include <stdio.h>
#include <iostream>
using namespace std;
#define N 20
void main()
{
int i, j, n, k = 1, a[N][N];
printf("请输入一个正整数(1≤N≤20):");
scanf("%d", &n);
printf("********螺旋矩阵********\n");
for (i = 0; i <= n / 2; i++) /*控制圈数*/
{
for (j = i; j < n - i; j++) /*上方元素*/
a[i][j] = k++;
for (j = i + 1; j < n - i; j++) /*右方元素*/
a[j][n - i - 1] = k++;
for (j = n - i - 2; j > i; j--) /*下方元素*/
a[n - i - 1][j] = k++;
for (j = n - i - 1; j > i; j--) /*左方元素*/
a[j][i] = k++;
}
for (i = 0; i < n; i++)
{
for (j = 0; j < n; j++)
printf("%5d", a[i][j]);
printf("\n");
}
system("pause");
}
结果: