用C语言编写从A到Z随机步法,C语言程序设计题目解析

本文介绍了一种利用随机数生成上下左右移动方向的算法,通过逐步填充二维网格中的大写字母,直至所有字母填满或遇到死胡同。程序展示了如何实现一个简单的游戏逻辑,演示了如何在编程中处理路径搜索和有限状态空间的操作。
摘要由CSDN通过智能技术生成

#include

#include

#include

#define ROW 10

#define COL 10

#define RANDOM (rand() % 4)   //取0,1,2,3的随机数

//每一步都从上下左右随机找一个能走的方向,将当前字母放在该位置,直到将所有大写字母放完,或者走到死胡同退出

int main(void)

{

char ch[ROW][COL];

int i=0,j=0,digit;

//初始化

for(int r=0; r

for(int c=0; c

ch[r][c] = '.';

srand((unsigned) time(NULL));

//循环遍历完所有26个大写字母

for(char a='A'; a<='Z'; a++){

//(i,j)位置一定是.,将当前字符a赋值到该位置

ch[i][j] = a;

//上下左右都不能走,退出,不过这里需要判断是否越界

if(ch[i-1][j] != '.' && ch[i+1][j] != '.' &&  ch[i][j-1] != '.' && ch[i][j+1] != '.')

break;

//do{}while循环的目的是找到一个能走的方向

do{

digit=1;  //一个标志,如果后面得到的方向不能走通,继续判断下一个方向

switch(RANDOM){

case 0:        //top

if(i-1 >= 0 && ch[i-1][j] == '.'){

i--;

digit=0;

}

break;

case 1:        //down

if(i+1 < ROW && ch[i+1][j] == '.'){

i++;

digit=0;

}

break;

case 2:        //left

if(j-1 >= 0 && ch[i][j-1] == '.'){

j--;

digit=0;

}

break;

case 3:        //right

if(j+1 < COL && ch[i][j+1] == '.'){

j++;

digit=0;

}

break;

}

}while(digit != 0)   //若digit==0表示找到能走的方向,退出循环,否则继续找

}

for(int i=0; i

for(int j=0; j

printf("%c ", ch[i][j]);

printf("\n");

}

return 0;

}

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值