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

[求助]数组问题②

热度:154   发布时间:2005-11-29 18:20:00.0
说说而以
以下是引用feng1256在2005-11-29 0:29:00的发言:
运行不了,电脑没装编译器~ 哈哈
a[10][10]={0}可以吧,书上有很多这么初始化的, 没赋值的元素系统补的是0

呵呵,我真的很佩服你的思维啊,你都说了没赋值的元素系统补的是0,你干脆就不用赋值了,因为你唯一的赋值不是0吗?呵呵


----------------解决方案--------------------------------------------------------

谢谢提醒了

[此贴子已经被作者于2005-11-29 22:56:17编辑过]


----------------解决方案--------------------------------------------------------
我也没想赋值,书上许多都这么写的,我也就跟着搞了
----------------解决方案--------------------------------------------------------
这个我也不会哦,斑主有时间的话可以把答案贴一下么?
尤其是knocker!
----------------解决方案--------------------------------------------------------

也算是变相赋值吧.有点傻瓜式,供参考:

#include<stdio.h>
void main()
{
int s[5][5];
int i,j,k=0,m=14,n=17,w=18,a=5,b=16,c=23,f=24;
for(i=0;i<5;i++)
{
k++;
s[i][0]=k;
m--;
s[i][4]=m;
}
for(i=1;i<4;i++)
{
n--;
s[0][i]=n;
w++;
s[3][i]=w;
a++;
s[4][i]=a;
}
for(i=1;i<3;i++)
{
b++;
s[i][1]=b;
c++;
s[i][2]=c;
f--;
s[i][3]=f;
}
for(i=0;i<5;i++)
{
for(j=0;j<5;j++)
{
printf("%3d ",s[i][j]);
}
printf("\n\n");
}
}


----------------解决方案--------------------------------------------------------

下午搞了一下午的SQL,还是没搞好,郁闷死了....晚上就琢磨了一下这道题,如果谁有更好的方法请贴出供大家参考参考,谢谢!


----------------解决方案--------------------------------------------------------

我的思路是当第一个元素被赋值之后
①.看下面元素是否为0,不为0→②,为0赋值
②.看右边是否为0,不为0→③,为0赋值
③.看上边是否为0,不为0→④,为0赋值
④.看左边是否为0,不为0→⑤,为0赋值
⑤break;
当然最上面一行除第一个元素外,会出现应该给左边赋值,而给下边先赋值,所以设置
c=1,在第一次执行①时,并作为下次执行①的条件。当执行一次④后,c=0,于是一直执行④,直到
左边有元素不为0,置c为1,开始执行①,出现循环
当然①②③④需要赋值必须加上行列不能越界的条件

[此贴子已经被作者于2005-11-30 0:41:54编辑过]


----------------解决方案--------------------------------------------------------

#include <stdio.h>

void main()
{
int a[5][5]={0},k,i=0,j=0,c=1;


a[i][j]=1;

for(k=2;k<=25;k++)
{
if(i+1<5&&a[i+1][j]==0&&c)
{
a[i+1][j]=k;
i++;
}
else if(j+1<5&&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<5;i++)
{
for(j=0;j<5;j++)
printf("%5d",a[i][j]);
printf("\n");
}
getch();
return;
}
这个运行成功了,楼主可以试下


----------------解决方案--------------------------------------------------------

我写的6楼那个 运行了下也成功了,开始把%d写成d%了,就说老有错误

[此贴子已经被作者于2005-11-30 3:45:47编辑过]


----------------解决方案--------------------------------------------------------
不错啊!
getch();//getchar
return;
这两个不需要吧..
----------------解决方案--------------------------------------------------------
  相关解决方案