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;}
}
}
这样写为什么会无限循环 展开
#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;}
}
}
这样写为什么会无限循环 展开
展开全部
用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;}
}
}
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;}
}
}
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询