您好,登錄后才能下訂單哦!
編程打印如圖所示的n×n的方陣。
如圖為順時針螺旋:
算法思想:先把圖形分成幾個圈,及“1~12”為第一圈,“13~16”為第二圈;并定義下標變量是i,由于n與圈數的關系,(例如n=3、4均為兩圈),所以下標變量范圍1~(n+1)/2。
(1)i行,從i列到n-i列 (n=4,i=1時“擺放1,2,3”) 上方
(2)n+1-i列,從i行到n-i行 (n=4,i=1時“擺放4,5,6”) 右側
(3)n+1-i行,從n+1-i行到i+1列(n=4,i=1時“擺放7,8,9”)下方
(4)i列,從n+1-i行到i+1行 (n=4,i=1時“擺放10,11,12”)左側
程序如下:
#include<stdio.h>
void main()
{
int i,j,a[100][100],n,k;
printf("輸入n的值:");
scanf("%d",&n);
k=1;
for(i=1;i<=n/2;i=i+1)
{
for(j=i;j<=n-i;j=j+1) //上方
{
a[i][j]=k;
k=k+1;
}
for(j=i;j<=n-i;j=j+1) //右側
{
a[j][n-i+1]=k;
k=k+1;
}
for(j=n-i+1;j>=i+1;j=j-1) //下方
{
a[n-i+1][j]=k;
k=k+1;
}
for(j=n-i+1;j>=i+1;j=j-1) //左側
{
a[j][i]=k;
k=k+1;
}
}
if(n%2==1)
{
i=(n+1)/2;
a[i][i]=n*n;
}
for(i=1;i<=n;i=i+1)
{
for(j=1;j<=n;j=j+1)
printf("%4d",a[i][j]);
printf("\n");
}
printf("\n");
}
若想要做一個逆時針的螺旋矩陣,只需要改改邏輯值就好了
每一次的編程都是自己的收獲,珍惜~~~
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。