旋轉矩陣

問題

【問題描述】輸入一個自然數N(2≤N≤9),要求輸出如下的旋轉矩陣,即邊長爲N,元素取值爲1至N*N,1在左上角,呈順時針方向依次放置各元素。

如N=3時:
在這裏插入圖片描述

【輸入形式】從標準輸入讀取一個整數N。
【輸出形式】向標準輸出打印結果。輸出符合要求的方陣,每個數字佔5個字符寬度,向右對齊,在每一行末均輸出一個回車符。

【輸入樣例】
  4
【輸出樣例】
在這裏插入圖片描述

算法設計

矩陣填充邏輯分析如下:
在這裏插入圖片描述

算法設計
  設array[9][9]用於存放旋轉矩陣,n爲旋轉矩陣的階,m爲當前填寫的層數,初值爲0;
  讀入一個整數到n;
  for(m=0; m<n/2; m++)
    填充當前層(即分別填充A,B,C,D四段);
  若n爲奇數,則填充最後一個數字;

算法實現

#include<stdio.h>
#define SIZE 9
int main() {
	int array[SIZE][SIZE];
	int n,m, num, i,j;
	
	num = 1;
	scanf("%d",&n);
	for (m=0;m<n/2;m++) {
		for (i=m;i<n-m-1;i++) 
			array[m][i] = num++;
		for (i=m;i<n-m-1;i++) 
			array[i][n-m-1] = num++;
		for (i=m;i<n-m-1;i++) 
			array[n-m-1][n-i-1] = num++;
		for (i=m;i<n-m-1;i++) 
			array[n-i-1][m] = num++;
	}
	if (n%2)
		array[n/2][n/2] = num;
	for (i=0;i< n;i++) {
		for (j=0;j<n;j++)
			printf("%5d",array[i][j]);
		printf("\n");
	}
	return 0;
}

發佈了140 篇原創文章 · 獲贊 149 · 訪問量 7萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章