|
发表于 2012-2-23 20:50:20
|
显示全部楼层
//帮你改好了,不算成功,但能实现。不过程序的变量命名要修改(不然别人看不懂),还有要注释。懒了。
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#define COLUME 10
#define ROW 10
int main()
{
int i=0,j=0,n=25,num;
char a[ROW][COLUME];
for(i=0;i<ROW;i++)
{
for(j=0;j<COLUME;j++)
{
a[i][j]='.';
}
}
i=4;
j=4; //i和j在0到9之间。我试过了。
a[i][j]='A';
srand((unsigned) time(NULL));
while(n>0)
{
int p[]={0,0,0,0},q[]={0,0,0,0};
num = rand() % 4;
switch (num)
{
case 0 :
{
i--;
if(i<0||a[i][j]!='.')
{
++i;
break;
}
else
{
a[i][j]='A'+26-n;
n--;
}
}
break;
case 1 :
{
i++;
if(i>9||a[i][j]!='.')
{
--i;
break;
}
else
{
a[i][j]='A'+26-n;
n--;
}
}
break;
case 2 :
{
j--;
if(j<0||a[i][j]!='.')
{
++j;
break;
}
else
{
a[i][j]='A'+26-n;
n--;
}
}
break;
case 3 :
{
j++;
if(j>9||a[i][j]!='.')
{
--j;
break;
}
else
{
a[i][j]='A'+26-n;
n--;
}
}
break;
default : break;
}
p[0]=i;p[1]=i;p[2]=i;p[3]=i;
q[0]=j;q[1]=j;q[2]=j;q[3]=j;
if(((a[(--p[0])][(q[0])]!='.')||p[0]<0)\
&&((a[(++p[1])][(q[1])]!='.')||p[1]>9)\
&&((a[(p[2])][(--q[2])]!='.')||q[2]<0)\
&&((a[(p[3])][(++q[3])]!='.')||q[3]>9))
{
n=0;
}
}
for (i=0;i<ROW;i++)
{
for(j=0;j<COLUME;j++)
{
printf("%2c",a[i][j]);
}
printf("\n");
}
return 0;
} |
|