1、下面是一个毕租拍5*5阶的螺旋方阵。编程打印出此形式的n*n(n<=15)阶的方阵(顺时针方向旋进),n由键盘输入。
┌ 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 ┘
2、例程:
#include <stdio.h>int get(int x, int y, int lt, int n)
{
if(x == 0)
return lt+y
else if(y == 0)
return lt+4*(n-1)-x
else if(y == n-1)
return lt+n+x-1
else if(x == n-1)
return lt+3*(n-1)-y
else
return get(x-1, y-1, lt+4*(n-1), n-2)
}
int main(void)
{
型弯 int n, i, j
scanf("%d", &n)
for(i = 0 i < n ++i) {
for(j = 0 j < n ++j)
printf("%2d ", get(i, j, 1, n))
手羡 putchar('\n')
}
return 0
}
给,已经编译运行确认了,完全原创:
#include <stdio.h>
#include <stdlib.h>
void main( )
{
int i,j,r,l,b,d,pl,N
int choose
do
{
system("cls")
printf("\t\t************************************************\n")
printf("\t\t*********1. 阶数选择并打印*****************\n")
printf("\t\t*********2. 退出 *****************\n")
printf("\t\t************************************************\n")
printf("\t\tPlease input your choose:")
fflush(stdin)
scanf("%d",&choose)
if(choose==2) break
else if(choose==1)
{
printf("迅迟Input n(n<10):"亩配李)
fflush(stdin)
scanf("%d",&N)
if(N<1||N>=10)
{
printf("Error Input!\n")
system("pause"卖慧)
continue
}
for (i=1i<=Ni++)
{ for (j=1j<=Nj++)
{ r=id=0pl=j-r
if (r>N-j+1) {r=N-j+1d=1pl=i-r}
if (r>N-i+1) {r=N-i+1d=2pl=N-j+1-r}
if (r>j) {r=jd=3pl=N-i+1-r}
l=N-2*(r-1)-1
b=(4*N-4)*(r-1)-4*(r-1)*(r-2)+1
printf("%4d",b+l*d+pl)
}
printf("\n")
}
system("pause")
}
else
{
printf("Error Input!\n")
system("pause")
continue
}
}while(1)
}
#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")
}
}
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)