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
这种形式的螺旋方阵,下面的代码哪里写的有问题
#include <stdio.h>
#define MAXN 10
int a[MAXN][MAXN];
void main()
{
int i,j,k,m,n;
printf("请输入整数n:");
scanf("%d",&n);
m=0;k=1;
while(k<(n+1)/2)
{
for(i=k-1;;)
{
for(j=i;j<n-k;j++)
a[i][j]=m++;
}
for(j=n-k;;)
{
for(i=k-1;i<n-k;i++)
a[i][j]=m++;
}
for(i=n-k;;)
{
for(j=n-k;j>k-1;j--)
a[i][j]=m++;
}
for(j=k-1;;)
{
for(i=n-k;i>k-1;i--)
a[i][j]=m++;
}
k++;
}
for(i=0;i<n;i++)
{
for(j=0;j<n;j++)
printf("%3d",a[i][j]);
printf("\n");
}
}
我是想表达初始条件是这些,那应该怎么改呢?
追答#include
#define MAXN 10
int a[MAXN][MAXN];
void main()
{
int i,j,k,m,n;
printf("请输入整数n:");
scanf("%d",&n);
m=0;k=0; //k
while(k k; i--)
a[n-k-1][i] = ++m;
for(i = n-k-1;i > k;i --)
a[i][k] = ++m;
k++;
}
if(n% 2 != 0)
a[n/2][n/2] = n*n;
for(i=0;i<n;i++)
{
for(j=0;j<n;j++)
printf("%3d",a[i][j]);
printf("\n");
}
}
C语言 螺旋方阵?
c=a[x][y]=1;while(c<n*n){while(y<n-1&&!a[x][y+1])a[x][++y]=++c;\/\/向右 while(x<n-1&&!a[x+1][y])a[++x][y]=++c;\/\/向下 while(y>0&&!a[x][y-1])a[x][--y]=++c;\/\/向左 while(x>0&&!a[x-1][y])a[--x][y]=++c;\/\/向上 } for(x=0;x...
c语言输出 1 2 3 4 12 13 14 5
螺旋方阵是指数字以顺时针方式依自然数顺序填写的一种矩阵。4阶螺旋方阵则是4行4列数字构成的螺旋方阵。如下图是一个7阶螺旋方阵,使用将数字増序方向分类的原理,很容易的将数字分成四类,图中用不同颜色表示,红色表示数字向右递增,蓝色表示向下递增,以此类推……利用这种原理,螺旋方阵就被转化成...
C语言数字螺旋方阵的形式
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 ...
C语言中打印螺旋方阵如图,如何使起始数字为1?
\/\/算法可能和你不一样#include <stdio.h>#include <stdlib.h>int main() {int x=1,y=1;int m,n;printf("请输入二维数组的大小:");scanf("%d,%d",&n);n+=2;int **s;s=(int**)malloc(sizeof(int*)*n);int i;for(i=0;i<n;i++){*(s+i)=(int*)malloc(sizeof(int)*...
用C语言设计算法输出一个5*5阶的螺旋方阵
我在ACM上写了一个N*N阶螺旋阵的题,代码给你了,可能有点长。输入5即有结果。include <stdio.h> int main(){ int n,k,a[30][30]={0},x=0,y=0,w[5]={1,1,1,1,1};scanf("%d",&n);k=2;a[0][0]=1;while(k<=n*n){ if(w[1]&&(x>0&&a[x-1][y]==0)) { ...
C语言:用自然数生成“螺旋形”方阵。
include<stdio.h> void main(){ int num[40][40]={0};int i=0,j=0,start=1,n;scanf("%d",&n);while(1){ for(;j<n&&!num[i][j];j++)num[i][j]=start++;j--;i++;for(;i<n&&!num[i][j];i++)num[i][j]=start++;i--;j--;for(;j>=0&&!num[i][j];j-...
用c语言如何设计螺旋方阵
void main(){ int i = 0;int j = 0;int k = 0;int data[20][20]={0};int count = 0;int N = 0;printf("Input an integer N:\\n");scanf("%d",&N);for(k = 0;k < N\/2;k ++){ for(i = k;i < N-k;i++)data[k][i] = ++count;for(i = k+1;i < N -...
螺旋方阵C语言编程
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***
c语言螺旋方阵
include<stdio.h>int main(void){ int mm, i = 0, j = 0, aa[15][15], num1 = 1, num3, num2; printf("Enter n(n<=15):"); scanf("%d", &mm); for (num2 = mm - 1; num2 > 0; num2--) { if(((mm-1)\/2==i)&&(mm%2!=0)) \/\/处理总列数为...
c语言编程题(螺旋方阵)
\/\/参数打印n*n的矩阵。欢迎加我qq,共同讨论,进步!\/\/qq:237263394 include<stdio.h> main(){ int array[6][6],t=0,m=0,r=0,c=0,s1=1,s2=5,s3=0,s4=5,i=1;while(s1!=4){ while(m<=s4){ array[t][m]=i;m++;i++;} s4--;m--;i--;while(t<=s2){ array[t][...