当前位置: 代码迷 >> C语言 >> [求助]数组问题②
  详细解决方案

[求助]数组问题②

热度:75   发布时间:2005-11-28 16:17:00.0
[求助]数组问题②
  • 将螺旋方阵存放到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编辑过]


----------------解决方案--------------------------------------------------------
运行不了啊
----------------解决方案--------------------------------------------------------
  相关解决方案