您好,登錄后才能下訂單哦!
編程打印如圖所示的n×n的方陣。
如圖為順時(shí)針螺旋:
算法思想:先把圖形分成幾個(gè)圈,及“1~12”為第一圈,“13~16”為第二圈;并定義下標(biāo)變量是i,由于n與圈數(shù)的關(guān)系,(例如n=3、4均為兩圈),所以下標(biāo)變量范圍1~(n+1)/2。
(1)i行,從i列到n-i列 (n=4,i=1時(shí)“擺放1,2,3”) 上方
(2)n+1-i列,從i行到n-i行 (n=4,i=1時(shí)“擺放4,5,6”) 右側(cè)
(3)n+1-i行,從n+1-i行到i+1列(n=4,i=1時(shí)“擺放7,8,9”)下方
(4)i列,從n+1-i行到i+1行 (n=4,i=1時(shí)“擺放10,11,12”)左側(cè)
程序如下:
#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) //右側(cè)
{
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) //左側(cè)
{
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");
}
若想要做一個(gè)逆時(shí)針的螺旋矩陣,只需要改改邏輯值就好了
每一次的編程都是自己的收獲,珍惜~~~
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。