1. 程式人生 > >陣列6——二維陣列4——列印螺旋矩陣

陣列6——二維陣列4——列印螺旋矩陣

列印一個螺旋矩陣。例如,一個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");
}

結果: