基地123 2022-11-25 23:26 采纳率: 90.2%
浏览 3
已结题

C语言迷宫问题无语法错误,不能运行

这个程序是写随机生成迷宫的,在我的电脑上运行没有语法错误,但是没有运行结果,


#include
#include
#include
void CreateMaze(int a,int b);
void CreateMaze(int a,int b){     //随机生成迷宫并打印
    int arr[a][b];
    int i=0,j=0;
    for(i;i-1;i++){        //将迷宫的最外面包裹一堵墙,然后里面的随机产生墙或通路
        for(j;j-1;j++){
            if(j==b-1)
                printf("\n");
            if(i==0||j==0||i==a-1||j==b-1){
                arr[i][j]=1;
                printf("%d",arr[i][j]);
            }   
            else{
                srand((unsigned int)time(NULL));
                int ret=rand()%2;
                arr[i][j]=ret;
                printf("%d",arr[i][j]);    
            }
        }
    }
    arr[1][1]=0;         //设置入口
    arr[a-2][b-2]=0;     //设置出口
}
int main(){
    int a,b;
    scanf("%d,%d",&a,&b);
    CreateMaze(a,b);
    return 0;
}

  • 写回答

1条回答 默认 最新

  • Huazie 全栈领域优质创作者 2022-11-26 06:28
    关注

    你指的没有运行结果是什么? 我看你这个需要控制台先输入两个数a和b【a表示迷宫的行数,b表示迷宫的列数】,才会执行创建迷宫的函数,你输入了嘛?

    不知道是不是你要的效果,如下:

    img

    代码如下,自己可以优化:

    #include <stdio.h>
    #include <stdlib.h>
    #include <time.h>
    
    void CreateMaze(int a,int b);
    void CreateMaze(int a,int b){ // 随机生成迷宫并打印    
        int arr[a][b];
        int i,j;
        srand((unsigned int)time(NULL));
        // 将迷宫的最外面包裹一堵墙,然后里面的随机产生墙或通路
        for(i = 0; i < a; i++)
        {        
            for(j = 0; j < b; j++)
            {
                // 迷宫的最外层是一堵墙
                if(i==0 || j==0 || i==a-1 || j==b-1)
                {
                    arr[i][j] = 1;
                    printf("%2d", arr[i][j]);
                }   
                else
                {
                    if ((i == 1 && j == 1) || (i == (a - 2) && j == (b - 2)))
                    {
                        arr[i][j] = 0;         // 设置入口或出口
                    }
                    else 
                    {
                        int ret = rand() % 2; // 生成 0 或 1的随机数
                        arr[i][j] = ret;
                    }
                    printf("%2d", arr[i][j]);    
                }
                if(j == b - 1)
                    printf("\n");
            }
        }
        
    }
    int main(){
        int a,b;
        scanf("%d,%d",&a,&b);
        CreateMaze(a,b);
        return 0;
    }
    
    

    如有帮助,欢迎采纳哈!

    在这里插入图片描述

    本人的开源项目,欢迎star支持下!!!

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

报告相同问题?

问题事件

  • 系统已结题 12月4日
  • 已采纳回答 11月26日
  • 创建了问题 11月25日

悬赏问题

  • ¥15 2020长安杯与连接网探
  • ¥15 关于#matlab#的问题:在模糊控制器中选出线路信息,在simulink中根据线路信息生成速度时间目标曲线(初速度为20m/s,15秒后减为0的速度时间图像)我想问线路信息是什么
  • ¥15 banner广告展示设置多少时间不怎么会消耗用户价值
  • ¥16 mybatis的代理对象无法通过@Autowired装填
  • ¥15 可见光定位matlab仿真
  • ¥15 arduino 四自由度机械臂
  • ¥15 wordpress 产品图片 GIF 没法显示
  • ¥15 求三国群英传pl国战时间的修改方法
  • ¥15 matlab代码代写,需写出详细代码,代价私
  • ¥15 ROS系统搭建请教(跨境电商用途)