陣列6——二維陣列4——列印螺旋矩陣
阿新 • • 發佈:2018-12-22
列印一個螺旋矩陣。例如,一個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"); }
結果: