数字螺旋C语言代码

数字螺旋C语言代码,第1张

你上面的是5*5的螺旋

我写的是你可以通过输入

n,然后显示的是n*n的螺旋

数。最大输入10

#include<stdio.h>

void main()

{

int i,j,n,m,z,k,pint a[11][11]

scanf("%d",&n)

p=n

z=n*n

m=(n+1)/2

for(k=1k<=mk++,n--)

{

for(i=n,j=nj>=kj--)

a[i][j]=z--

for(i=n-1,j=j+1i>=ki--)

a[i][j]=z--

for(j=j+1,i=i+1j<=nj++)

a[i][j]=z--

for(j=j-1,i=i+1i<=n-1i++)

a[i][j]=z--

}

for(i=1i<=pi++)

{

for(j=1j<=pj++)

printf("%-4d",a[i][j])

printf("\n")

}

}

#include<stdio.h>

#define N 6

int main(void)

{

int i=0,j=0,m=0,n=0,num=0

int a[N][N]

do

{

for(i=mi<N-mi++)

a[i][j]=++num

--i

if(num==N*N)break

for(j=m+1j<N-mj++)

a[i][j]=++num

j--

if(num==N*N)break

for(i=N-m-2i>=mi--)

a[i][j]=++num

i++

if(num==N*N)break

for(j=N-m-2j>mj--)

a[i][j]=++num

j++

if(num==N*N)break

++m

}while(num<N*N)

printf("\t\t%d行%d列螺旋矩阵\n\n",N,N)

for(i=0i<Ni++)

{

for(j=0j<Nj++)

printf("%6d",a[i][j])

printf("\n")

}

}

#include<stdio.h>

#include<stdlib.h>

void main(){

int **a,i,j,x,y,n

printf("input the N:")

scanf("%d",&n)

a = (int**) malloc(sizeof(int*)*n)

for(i=0i<ni++)

a[i]=(int*)malloc(sizeof(int)*n)

for(i=0i<ni++)for(j=0j<nj++)

a[i][j]=0

for(i=1,j=1,x=0,y=0i<=n*ni++){

a[x][y]=i

switch (j) //j 为前进方向,0向右,1向下,2向左,3向上。

{

case 0:

if(y+1>n-1|| a[x][y+1]!=0) {j=3x--}

else y++

break

case 1:

if(x+1>n-1 || a[x+1][y]!=0){j=0y++}

else x++

break

case 2:

if(y-1<0 || a[x][y-1]!=0){j=1x++}

else y--

break

case 3:

if(x==0||a[x-1][y]!=0){j=2y--}

else x--

break

}

}

for(i=0i<ni++){

for(j=0j<nj++)

printf("%4d",a[i][j])

printf("\n")

free(a[i])

}

free(a)

system("pause")

}

编程思路:开始将n*n矩阵全置为0,从(0,0)开始向下遍历矩阵。(x,y)=i,若到达下边界或(x+1,y)已赋值(即(x+1,y)!=0),遍历方向变为向右;其他方向于此类似,直到i==n*n结束。


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/12190821.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-21
下一篇 2023-05-21

发表评论

登录后才能评论

评论列表(0条)

保存