dos扫雷的小游戏 但这样写为什么会错,还有请指出我的不良之处(我是新学C语言的)

#include<stdio.h>#include<stdlib.h>#include<time.h>inte[8][8]={{0,0,0,0,0,0,0,0},{0,0... #include<stdio.h>
#include<stdlib.h>
#include<time.h>
int e[8][8]={{0,0,0,0,0,0,0,0},
{0,0,0,0,0,0,0,0},
{0,0,0,0,0,0,0,0},
{0,0,0,0,0,0,0,0},
{0,0,0,0,0,0,0,0},
{0,0,0,0,0,0,0,0},
{0,0,0,0,0,0,0,0},
{0,0,0,0,0,0,0,0},
};
char h[8][8]={{" 123456"},
{"1******"},
{"2******"},
{"3******"},
{"4******"},
{"5******"},
{"6******"},
};
int k,i,j,s,n=30,l=0;
void slq()
{srand(time(0));
for(k=0;k<=n;)
{ i=rand()%6+1;
j=rand()%6+1;
if(e[i][j]==1)
{continue;}
else
{e[i][j]=1;
k=k+1;}
}
}
void xql()
{
for(int a=0;a<=7;a++)
{
for(int b=0;b<=7;b++)
{
printf("%c",h[a][b]);
if(b==7)
printf("\n");}
}
}
void main()
{
slq();

do
{
system("cls");
xql();
printf("请输入坐标");
scanf("%d,%d",&i,&j);
if(e[i][j]==1)
{printf("****GAMEOVER****\n");
goto loop;}
else
{s=e[i-1][j-1]+e[i][j-1]+e[i+1][j+1]+e[i-1][j]+e[i+1][j]+e[i-1][j+1]+e[i][j+1]+e[i+1][j-1];
h[i][j]=(char)(s+48);
l++;
}
}while(l<=36-n);
printf("you win\n");
loop:;
}
对不起发错了这是正确的
我要问的是
void slq()
{
for(k=0;k<=n;)
{ srand(time(0));
i=rand()%6+1;
srand(time(0));
j=rand()%6+1;
if(e[i][j]==1)
{continue;}
else
{e[i][j]=1;
k=k+1;}
}
}
这样写为什么会无限循环
展开
 我来答
百度网友66c5afb
2010-10-06 · TA获得超过349个赞
知道小有建树答主
回答量:252
采纳率:0%
帮助的人:245万
展开全部
用VC++6.0编译的时候会报错,发生在函数xql()中。

for(int a=0;a<=7;a++)
{
for(int b=0;b<=7;b++)
{…………
}
}
定义变量的时候不要放在for里。

第二次回答:
void slq()
{
for(k=0;k<=n;)
{ srand(time(0));//置随机种子的语句,执行一次就可以了,你放在for循环里,每执行一次就重置一次。应该把这句话放在main函数的开头~!看下边的注释~!
i=rand()%6+1;
/*srand(time(0));//这句话同样不需要直接删掉。在你程序不改的情况下,你可以打印ij的值来看看你的循环结果。
j=rand()%6+1;
printf("%d,%d\n",i,j);//在这个地方加上这句。你就发现你的错误了~!
if(e[i][j]==1)
{continue;}
else
{e[i][j]=1;
k=k+1;}
}
}
hanyuwei70
2010-10-03 · TA获得超过108个赞
知道小有建树答主
回答量:204
采纳率:0%
帮助的人:168万
展开全部
你弄雷没限制的?
再加上我搞了10次每次都第一次就挂了
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式