基地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 netty整合springboot之后自动重连失效
  • ¥15 悬赏!微信开发者工具报错,求帮改
  • ¥20 wireshark抓不到vlan
  • ¥20 关于#stm32#的问题:需要指导自动酸碱滴定仪的原理图程序代码及仿真
  • ¥20 设计一款异域新娘的视频相亲软件需要哪些技术支持
  • ¥15 stata安慰剂检验作图但是真实值不出现在图上
  • ¥15 c程序不知道为什么得不到结果
  • ¥40 复杂的限制性的商函数处理
  • ¥15 程序不包含适用于入口点的静态Main方法
  • ¥15 素材场景中光线烘焙后灯光失效