随机步问题

随机步问题

  • 1.题目简介
  • 2.题目分析
  • 3.创建变量
  • 4.主程序
  • 5.程序效果
  • 6.程序可以改进的点

1.题目简介

在这里插入图片描述

2.题目分析

数组初始化
生成随机方向
判断程序结束的标志
当前元素为Z,或者四个方向都堵住了

3.创建变量

arry[ROW][COL]创建二维数组
_Bool a,b,c,d判断是否会出现四个方向都被堵住的情况
char ch对字符数组赋值,且可以自增方便对下一个元素赋值

4.主程序

#include<stdio.h>
#include<time.h>
#include<stdlib.h>
#define ROW 10
#define COL 10
int main()
{int i, j, dir;_Bool a = false, b = false, c = false, d = false;char arry[ROW][COL], ch = 'A';srand((unsigned int)time(NULL));for (i = 0; i < ROW; i++){for (j = 0; j < COL; j++){arry[i][j] = '.';}}arry[0][0] = ch;//游戏开始的地方i = 0; j = 0;for (;;){dir = rand() % 4;//规定0为向上,1为向下,2为向左,3为向右switch (dir){case 0:if ((i > 0) && (arry[i - 1][j] == '.')){arry[--i][j] = ++ch;//赋值a = false;//该方向通过时,将所有变量置为falseb = false;c = false;d = false;break;}else{a = true;//方向不通过,将一个方向的变量置为truebreak;}case 1:if ((i < 9) && (arry[i + 1][j] == '.'))//防止越界且该元素未赋值{arry[++i][j] = ++ch;a = false;b = false;c = false;d = false;break;}else{b = true;break;}case 2:if ((j > 0) && (arry[i][j - 1] == '.')){arry[i][--j] = ++ch;a = false;b = false;c = false;d = false;break;}else{c = true;break;}case 3:if ((j < 9) && (arry[i][j + 1] == '.')){arry[i][++j] = ++ch;a = false;b = false;c = false;d = false;break;}else{d = true;break;}}if (ch == 'Z')break;else if (a && b && c && d)break;}for (i = 0; i < ROW; i++){for (j = 0; j < COL; j++){printf("%c ", arry[i][j]);}printf("\n");}return 0;
}

5.程序效果

  • 情况1
    在这里插入图片描述

  • 情况2
    在这里插入图片描述

6.程序可以改进的点

  • 针对情况2能否有更好的方法去判断(如该方向不能通过时重新生成随机数时能不能直接跳过该方向)
  • switch语句的分支0,1,2,3不能很好的匹配方向,能否用枚举类型进行相应代替
  • 能否将常数进行宏定义,以便清楚地表示常量的意义

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/web/34867.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

(新)Spring Security如何自定义失败处理器

&#xff08;直接从三、实战开始看&#xff09; &#xff08;直接从三、实战开始看&#xff09; &#xff08;直接从三、实战开始看&#xff09;可点击&#xff1a; &#xff08;新&#xff09;Spring Security如何自定义失败处理器-CSDN博客 我们还希望在认证失败或者是授…

ChatGPT 的原理简介

人工智能&#xff08;AI&#xff09;在过去的几十年里取得了巨大的进步&#xff0c;其中一种令人瞩目的应用就是聊天机器人。ChatGPT 就是这样一款通过自然语言处理与用户进行对话的 AI 工具。它是基于 OpenAI 的 GPT&#xff08;Generative Pre-trained Transformer&#xff0…

ESP32 双线汽车接口 (TWAI)

一&#xff1a;TWAI概述 双线汽车接口 (TWAI) 是一种适用于汽车和工业应用的实时串行通信协议。它兼容 ISO11898-1 经典帧&#xff08;CAN2.0&#xff09;&#xff0c;因此可以支持标准帧格式&#xff08;11 位 ID&#xff09;和扩展帧格式&#xff08;29 位 ID&#x…

【Qt】Qt出现“xcb”相关错误,解决方法汇总

1、缺少 libxcb 库 1.1 Ubuntu系统 1)问题 在Ubuntu等桌面系统中,第一次Qt程序时报错: qt.qpa.plugin:Could not load the Qt platform plugin “xcb“2)原因 详细原因查找步骤,参考博客:【Qt】Ubuntu18.04下解决Qt出现qt.qpa.plugin:Could not load the Qt platform …

thinksboard新建菜单

1.打开目录\thingsboard\ui-ngx\src\app\modules\home\pages新增npages文件夹 2.新增npages.module.ts以及npages-routing.module.ts控制文件&#xff0c;以及页面展示文件npages.component.html,npages.component.scss,npages.component.ts 3.打开npages.component.ts文件&…

最新AI智能聊天对话问答系统源码(详细图文搭建部署教程)+AI绘画系统,DALL-E3文生图, Whisper TTS 语音识别,文档分析

一、人工智能 随着人工智能技术的持续进步&#xff0c;AI绘画已经发展成为一个日益成熟的领域。越来越多的人开始尝试使用AI绘画软件来创作艺术作品。尽管这些AI绘画软件对绘画领域产生了显著影响&#xff0c;但它们并不会完全取代画师。与传统手绘不同&#xff0c;AI绘画可以…

【第2章】MyBatis-Plus代码生成器

文章目录 前言一、安装二、生成方式1.DefaultQuery (元数据查询)2.存在问题 三、快速生成1. 生成代码2. 目录结构 四、交互式总结 前言 全新的 MyBatis-Plus 代码生成器&#xff0c;通过 builder 模式可以快速生成你想要的代码&#xff0c;快速且优雅&#xff0c;跟随下面的代…

Pikachu 靶场 SSRF 通关解析

前言 Pikachu靶场是一种常见的网络安全训练平台&#xff0c;用于模拟真实世界中的网络攻击和防御场景。它提供了一系列的实验室环境&#xff0c;供安全专业人士、学生和爱好者练习和测试他们的技能。 Pikachu靶场的目的是帮助用户了解和掌握网络攻击的原理和技术&#xff0c;…

揭秘软文发稿秘诀:打造高效推广营销

你是否有在看一篇文章时&#xff0c;可能明知道它是一则广告但仍心甘情愿的继续了解下去&#xff0c;这样的文章大概率就是一篇软文&#xff0c;在当今信息爆炸的时代&#xff0c;软文作为一种有效的推广营销手段&#xff0c;已经成为各大企业、品牌争相使用的利器。然而&#…

安装Cmakeffmpeglibssh

首先安装cmake&#xff1a; sudo apt install cmake cmake --version然后这个输出正常就装好了 然后安装ffmpeg: tar xvzf n4.4.tar.gz cd FFmpeg-n4.4 chmod x configure ./configure --enable-gpl --enable-nonfree --enable-libx264 --enable-debug --disable-opti…

关于VMware遇到的一些问题

问题一&#xff1a;打不开磁盘…或它所依赖的某个快照磁盘&#xff0c;开启模块DiskEarly的操作失败&#xff0c;未能启动虚拟机 解决方法&#xff1a; 首先将centos 7关机&#xff0c;然后把快照1删掉 然后打开虚拟机所在目录&#xff0c;把提示的000001.vmdk全部删除&…

Java创建一个线程发生的事情

Java创建一个线程发生的事情 1.分配线程栈 线程对象被创建后&#xff0c;JVM会分配一个独立的线程栈&#xff0c;用于存储该线程的方法调用、局部变量等。还有本地方法栈&#xff0c;用来调用本地方法栈服务。还有程序计数器&#xff0c;这个就是我们线程所执行字节码指示灯&…

Spring Boot中的自定义Starter开发

Spring Boot中的自定义Starter开发 大家好&#xff0c;我是免费搭建查券返利机器人省钱赚佣金就用微赚淘客系统3.0的小编&#xff0c;也是冬天不穿秋裤&#xff0c;天冷也要风度的程序猿&#xff01;今天我们来探讨如何在Spring Boot中开发一个自定义Starter&#xff0c;以便在…

Linux:系统引导过程与服务控制

目录 一、linux 系统引导过程 1.1、引导过程总览 1.2、系统初始化进程 &#xff08;centos 6和7 的区别&#xff09; 1.2.1、centos 6 的引导过程 init 进程 1.2.2、centos 7(systemd进程) 二、MBR、GRUB菜单、忘记密码故障修复 2.1、修复MBR扇区故障 模拟故障 重启…

详解 ClickHouse 的表引擎

一、简介 表引擎决定了如何存储表的数据。包括&#xff1a; 数据的存储方式和位置&#xff0c;写到哪里以及从哪里读取数据支持哪些查询以及如何支持并发数据访问索引的使用&#xff08;如果存在&#xff09;是否可以执行多线程请求数据复制参数 表引擎的使用方式&#xff1a;…

迭代器模式观察者模式

文章目录 1.引出迭代器模式1.展示院系结构2.传统方式 2.迭代器模式解决院系结构展示问题1.基本介绍2.原理类图3.类图4.代码实现1.Department.java 存储信息的对象2.College.java 被迭代的类型接口3.ComputerCollege.java 被迭代的具体实现类&#xff0c;存储数据并将其在创建迭…

CNware虚拟化平台功能介绍:虚拟机业务连续性保护,确保核心业务持续运行,构筑稳健的数字防线

全球数字化转型的大潮中&#xff0c;虚拟化技术已成为企业IT架构的基石。据Gartner预测&#xff0c;到2026年&#xff0c;全球90%以上的组织将采用某种形式的虚拟化技术。虚拟化环境的广泛应用&#xff0c;不仅提升了资源利用率、降低了成本&#xff0c;更极大地增强了业务灵活…

forwhile(Python)

文章目录 前言一、for二、while 前言 循环&#xff1a;就是让指定的代码重复的执行。 一、for for 循环可以遍历任何可迭代对象&#xff0c;如一个列表或者一个字符串。 forfor i in list:循环主体for i in [1, 2, 3, 4, 5]:print(i)**************************************…

“管式加热炉简单控制系统和串级控制系统设计与Matlab仿真”,高分资源,匠心制作,下载可用。强烈推荐!!!

“管式加热炉简单控制系统和串级控制系统设计与Matlab仿真”毕业设计&#xff0c;高分资源&#xff0c;匠心制作&#xff0c;下载可用。强烈推荐&#xff01;&#xff01;&#xff01; 1.控制目标 加热炉的任务是把原油加热到一定温度&#xff0c;以保证下道工艺的顺利进行。…

企业如何通过数据资产入表与融资加速数字化转型

数据作为五大生产要素之一&#xff0c;是数字经济发展的基础。如何对数据资产进行确权、核算和变现&#xff0c;已成为数字经济时代的难点和热点。随着“数据资产入表”的提出与实践&#xff0c;这一领域迎来了新的变化与机遇。 一、什么是数据资产入表 在我国&#xff0c;数据…