求5X5階螺旋方陣
阿新 • • 發佈:2019-01-08
目的:掌握陣列演算法設計。
內容:以下是一個5X5階螺旋方陣,編寫一個程式exp6-3.cpp輸出該形式的nXn(n<10)階方陣(按順時針方向旋進)。
1 2 3 4 5
16 17 18 19 6
15 24 25 20 7
14 23 22 21 8
13 12 11 10 9
#include <iostream> #include <cstdio> #include <cstring> using namespace std; const int maxn=15; int main() { int n,arr[maxn][maxn]; int i,j,k; while(~printf("請輸入螺旋矩陣的矩陣大小n:\n")) { memset(arr,0,sizeof(arr)); scanf("%d",&n); int start=1; int temp=n; i=0; j=0; for(k=0; k<n/2; k++)//n階矩陣可以畫n/2個圈 { for(; j<temp-1; j++) arr[i][j]=start++; for(; i<temp-1; i++) arr[i][j]=start++; for(; j>k; j--) arr[i][j]=start++; for(; i>k; i--) arr[i][j]=start++; //進入下一圈 i++; j++; temp--; } if(n%2==1)//若n為奇數,中間那個數遍歷不到,單獨賦值 arr[i][j]=start++; for(i=0; i<n; i++) { for(j=0; j<n; j++) printf("%3d ",arr[i][j]);//固定輸出寬度 printf("\n"); } printf("繼續操作請輸入1,退出操作請輸入0:\n"); int f; scanf("%d",&f); if(f==0) break; } return 0; }