1. 程式人生 > >第二屆_第一題_列印上三角矩陣

第二屆_第一題_列印上三角矩陣

請你設計一個用於填充n階方陣的上三角區域的程式。填充的規則是:使用123….的自然數列,從左上角開始,按照順時針方向螺旋填充。

例如:當n=3時,輸出:

1 2 3

6 4

5

n=4時,輸出:

1  2 3 4

9 10 5

8  6

7

n=5時,輸出:

  1  2  3  4  5

 12 13 14  6 

 11 15  7

 10  8

  9

程式執行時,要求使用者輸入整數n3~20

程式輸出:方陣的上三角部分。

要求格式:每個資料寬度為4,右對齊。

#include<iostream>
#include<cstdio>
using namespace std;
int a[50][50];
int main()
{
	int n,m=1,i,j,circle=1;
	cin>>n;
	while(m<=n*(n+1)/2)
	{
	    for(i=circle,j=circle; j<=n-(circle-1)*2; j++)//橫向向右賦值    
           a[i][j]=m++;    
        for(i=circle+1,j=n-(circle-1)*2-1; i<=n-(circle-1)*2&&j>=circle; i++,j--)//對角線左下向賦值    
           a[i][j]=m++;    
        for(i=n-(circle-1)*2-1,j=circle; i>=circle+1; i--)//豎向向上賦值    
           a[i][j]=++;    
		circle++;//環繞的圈數 
	}
//列印上三角矩陣 
	for(i=1;i<=n;i++)
	{
		for(j=1;j<=n-i+1;j++)
		{
			printf("%4d",a[i][j]);
		}
		printf("\n");
	}
	return 0;
}