张传旭 2016-03-26 08:27 采纳率: 92.3%
浏览 1276
已采纳

各位大神,生命游戏,代码有点长,运行输入之后总是崩溃,求大神看一下

#define _CRT_SECURE_NO_WARNINGS //关闭安全检查
#include
#include
#define hs 3 //这能改行数
#define ls 3 //这能改列数
#define tiaojian1 2 //这里可改周围几个细胞时存活
#define tiaojian2 3 //这里可改周围几个细胞时繁殖
int world[hs][ls] = { 0 };
void shuru()
{
int i, j;
while (1)
{
scanf("%d%d", &i, &j);
if (i else if (i >= hs || j >= ls)
{
printf("输入数据超范围\n");
}
world[i][j] = 1; //1为生0为死
}
}
void shuchu()
{
int i, j, k = 0;
for (i = 0; i {
printf(" %d", i);
}
printf("\n");
printf(" ┌"); //第二行
for (i = 0; i {
printf("─┬");
}
printf("─┐\n");
for (i = 0; i {
printf("%d│", i);
for (j = 0; j {
if (world[i][j] == 1)
{
printf("●│");
k++;
}
else printf("○│");
}
printf("\n");
if (i == hs - 1) break;
printf(" ├");
for (j = 0; j {
printf("─┼");
}
printf("─┤\n");
}
printf(" └");
for (i = 0; i printf("─┴");
printf("─┘\n");
printf(" 现有%d个存活细胞\n", k);
}
int panduan(int h, int l)
{
int sum = 0, i, j;
for (i = h - 1; i {
for (j = l - 1; j {
if (i = hs)
continue;
if (j < 0 || j >= ls)
continue;
if (i == h&&j == l)
continue;
if (world[i][j] == 1)
sum += 1;
}
}
return sum;
}
void huanjing()
{
int b[hs][ls] = { 0 };
for (int h = 0; h < hs; h++)
{
for (int l = 0; l < ls; h++)
{
panduan(h, l);
b[h][l] = panduan(h, l);
}
}
for (int h = 0; h < hs; h++)
{
for (int l = 0; l < ls; h++)
{
if (b[h][l] == 3)
{
world[h][l] = 1;
continue;
}
else if (b[h][l] == 2)
{
continue;
}
else
{
world[h][l] = 0;
continue;
}
}
}
}
int main(void)
{
printf("生命游戏\n");
printf("默认世界大小3*3,世界大小及规则代码定义中可改\n");
printf("输入需要添加细胞的点的坐标,添加完成后输入一组负数坐标即可终止输入\n");
shuchu();
shuru();
shuchu();
system("pause");
while (1)
{
huanjing();
shuchu();
system("pause");
}

return 0;

}
图片说明

  • 写回答

1条回答 默认 最新

  • threenewbee 2016-03-26 14:52
    关注

    调试了下
    b[h][l] = panduan(h, l);
    这里h居然跑到20多,显然b是3 by 3的,越界了。

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

悬赏问题

  • ¥15 stm32流水灯+呼吸灯+外部中断按键
  • ¥15 将二维数组,按照假设的规定,如0/1/0 == "4",把对应列位置写成一个字符并打印输出该字符
  • ¥15 NX MCD仿真与博途通讯不了啥情况
  • ¥15 win11家庭中文版安装docker遇到Hyper-V启用失败解决办法整理
  • ¥15 gradio的web端页面格式不对的问题
  • ¥15 求大家看看Nonce如何配置
  • ¥15 Matlab怎么求解含参的二重积分?
  • ¥15 苹果手机突然连不上wifi了?
  • ¥15 cgictest.cgi文件无法访问
  • ¥20 删除和修改功能无法调用