数组6——二维数组4——打印螺旋矩阵

版权声明:本文为博主原创文章,未经博主允许不得转载。 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");
}

结果:

猜你喜欢

转载自blog.csdn.net/baidu_36669549/article/details/84979287