运行不了,电脑没装编译器~ 哈哈
a[10][10]={0}可以吧,书上有很多这么初始化的, 没赋值的元素系统补的是0
呵呵,我真的很佩服你的思维啊,你都说了没赋值的元素系统补的是0,你干脆就不用赋值了,因为你唯一的赋值不是0吗?呵呵
虽然现在的我什么都不明白,但总有一天,我将包容一切,让优秀变成一种习惯。。。。。。。。。。。。
也算是变相赋值吧.有点傻瓜式,供参考:
#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");
}
}
我的思路是当第一个元素被赋值之后
①.看下面元素是否为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;
}
这个运行成功了,楼主可以试下