- 将螺旋方阵存放到n*n 的二维数组中并把它打印输出。要求由程序自动生成图(1)所示螺旋方阵(而不是人为的初始化或逐个赋值)。 由程序读入。
1 16 15 14 13
2 17 24 23 12
3 18 25 22 11
4 19 20 21 10
5 6 7 8 9 图(1)
[此贴子已经被作者于2005-11-28 16:20:48编辑过]
----------------解决方案--------------------------------------------------------
这个我要考虑一下,如果是人为的初始化就简单很多了
----------------解决方案--------------------------------------------------------
没运行过,不知道对错~
#include <stdio.h>
void main()
{
int a[10][10],i,j,k=1,m,t,n;
printf("please input n: \n");
scanf("d%",&n);
if(n>10||n<=0) //这里考虑10以内的
{
printf("input error.\n");
exit(-1);
}
t=(n+1)/2;
for(m=0;m<t;m++) //从外到里一共的圈数。
{
for(i=0+m;i<n;i++)
a[i][0+m]=k++;
for(j=1+m;j<n;j++)
a[n-1-m][j]=k++;
for(i=n-2-m;n>=0;i--)
a[i][n-1-m]=k++;
for(j=n-2-m;j>0;j--)
a[0+m][j]=k++;
n-=1;
}
for(i=0;i<n;i++)
{
for(j=0;j<n;j++)
printf("%5d",a[i][j]);
printf("\n");
}
}
[此贴子已经被作者于2005-11-30 1:26:05编辑过]
----------------解决方案--------------------------------------------------------
不好意思,首先a[n][n]定义有点不妥...
下标不能为变量!这里n可以考虑用动态分配来控制.
----------------解决方案--------------------------------------------------------
我改了下,谢谢提醒
----------------解决方案--------------------------------------------------------
#include <stdio.h>
void main()
{
int a[10][10]={0},k,i=0,j=0,c=1,n;
a:printf("please input n: \n");
scanf("%d",&n);
if(n>10||n<=0)
{
printf("input error.\n");
goto a;
}
a[i][j]=1;
for(k=2;k<=n^2;k++)
{
if(i+1<n&&a[i+1][j]==0&&c)
{
a[i+1][j]=k;
i++;
}
else if(j+1<n&&a[i][j+1]==0)
{
a[i][j+1]=k;
j++;
}
else if(i-1>=0&&a[i-1][j]==0)
{
a[i-1][j]=k;
i--;
}
else if(j-1>=0&&a[i][j-1]==0)
{
a[i][j-1]=k;
j--;
c=0;
if(a[i][j-1]!=0)
c=1;
}
else
break;
}
for(i=0;i<n;i++)
{
for(j=0;j<n;j++)
printf("%5d",a[i][j]);
printf("\n");
}
getch();
}
我是新手,有错误大家就告诉我
[此贴子已经被作者于2005-11-30 3:44:17编辑过]
----------------解决方案--------------------------------------------------------
a[10][10]={0}??
楼上的朋友请先自己运行一下!我也是个新手,这道题我也很感兴趣,好晚呀,好累啊,明天还有课,有时间得好好考虑下这道题.晚安!
----------------解决方案--------------------------------------------------------
运行不了,电脑没装编译器~ 哈哈
a[10][10]={0}可以吧,书上有很多这么初始化的, 没赋值的元素系统补的是0
[此贴子已经被作者于2005-11-29 0:35:40编辑过]
----------------解决方案--------------------------------------------------------
新学错误太多。QQ7930046,多多关照
[此贴子已经被作者于2005-11-29 0:35:16编辑过]
----------------解决方案--------------------------------------------------------
运行不了啊
----------------解决方案--------------------------------------------------------