这个程序是写随机生成迷宫的,在我的电脑上运行没有语法错误,但是没有运行结果,
#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;
}
你指的没有运行结果是什么? 我看你这个需要控制台先输入两个数a和b【a表示迷宫的行数,b表示迷宫的列数】,才会执行创建迷宫的函数,你输入了嘛?
不知道是不是你要的效果,如下:
代码如下,自己可以优化:
#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;
}
如有帮助,欢迎采纳哈!