第八届蓝桥杯个人省赛(软件类)C组第一题贪吃蛇长度

2023-05-16

题目如下

标题:贪吃蛇长度

+-------------------------------------------------+
|                                                 |
|    H######                      ####            |
|          #                      #  #            |
|          #                      #  #            |
|          #     ####             #  #            |
|          #     #  #             #  #            |
|          ######@###             #  #            |
|                #       ####     #  #            |
|                #       #  #     #  #            |
|            ####@#######@###     #  #            |
|            #   #       #        #  #            |
| T          #####       #        #  #   ##       |
| #                      #      ###  ### ##       |
| ################       #      #      ####       |
|                #       #      #         #       |
|   ##############       #######@##########       |
|   #                         ###                 |
|   ###########################                   |
+-------------------------------------------------+

小明在爷爷的私人收藏馆里找到一台老式电脑。居然没有图形界面,只能用控制台编程。
经过小明的一阵摸索,神奇地设计出了控制台上的贪食蛇游戏。

如上图,是游戏时画面截图。
其中,H表示蛇头,T表示蛇尾。#表示蛇的身体,@表示身体交叉重叠的地方。
你能说出现在的贪吃蛇长度是多少吗?

其实,只要数出#的数目算1,数出@的数目,算2,再加上头尾各算1就计算好了。

人工数一下?太累眼睛了,聪明的你为什么不让计算机帮忙呢?

本题的要求就是: 请填写上图中贪食蛇的长度是多少?

注意:需要提交的是一个整数,不要添加任何多余内容(比如说明或注释)


正确答案:190个


C语言版本代码如下:

#include <stdio.h>
#include <stdlib.h>

/* run this program using the console pauser or add your own getch, system("pause") or input loop */

int main(int argc, char *argv[])
{
	int length = 0;
	char ch; 
	FILE *fp;
	if((fp = fopen("txt1.txt","r"))==NULL)
	{
		printf("cannot open this file\n");
		exit(0);
	}
	
	while(!feof(fp))
	{
		ch = fgetc(fp);
		if(ch == '#'|| ch == 'H' || ch == 'T')
		{
			length++;
		}
		else if(ch == '@')
		{
			length += 2;
		}
	}
	fclose(fp);
	printf("The length of the snake if %d",length);
	return 0;
}

在这之前,我一直有错误,读取到的长度比实际的小,为106。

错误的程序如下: 

#include <stdio.h>
#include <stdlib.h>

/* run this program using the console pauser or add your own getch, system("pause") or input loop */

int main(int argc, char *argv[])
{
	int length = 0;
	//char ch; 
	FILE *fp;
	if((fp = fopen("txt1.txt","r"))==NULL)
	{
		printf("cannot open this file\n");
		exit(0);
	}
	
	while(!feof(fp))
	{
        /*
        ch = fgetc(fp);
        注意区别,我这里没有用中间变量ch,相当于一个if判断执行了3次fgetc(fp)
        而fgetc()函数每调用一次,指针就后移一个字符的位置,
        所以读取的字符总是比实际少。
        */ 
		if(fgetc(fp) == '#'|| fgetc(fp) == 'H' || fgetc(fp) == 'T')
		{
			length++;
		}
		else if(fgetc(fp) == '@')
		{
			length += 2;
		}
	}
	fclose(fp);
	printf("The length of the snake if %d",length);
	return 0;
}

接着下面附上一位博主的C++版本代码,今天(19年3月23日)发现我忘记加那位博主的博客链接了,找了一会儿,还是没找到,对此表示抱歉: 

#include<iostream>
#include<fstream>
#include<string>


using namespace std;


int main(int argc,char** argv){
	
	ifstream fin;
	fin.open("txt1.txt");
	int nums = 0;
	
	while(fin){
		
		char data;
		fin >> data;
		
		if(data == '#'){
			
			nums++;
			
		}else if(data == '@'){
			
			nums = nums + 2;
			
		}else if(data == 'T' || data == 'H'){
			
			nums++;
		}
	}
	
	cout << nums;
}

如果你用Windows自带的记事本打开,你会发现“游戏画面截图”竟然是这个样子的,这玩意怎么也不像个贪吃蛇啊,这是记事本对tab键显示的问题,我怀疑记事本把所有空白字符都显示为一个空格,所以……咳咳,你还在为写代码时有tab还是空格而纠结吗,当然是空格啦,什么编辑器都不会出错,如果是tab,最好设置为将tab替换为四个空格。 

贪吃蛇界面由于是记事本显示的问题,所以看不出贪吃蛇的轮廓,下面为notepad上查看的。 

 

 

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

第八届蓝桥杯个人省赛(软件类)C组第一题贪吃蛇长度 的相关文章

  • docker与firewalld冲突解决

    firewall的底层是使用iptables进行数据过滤 xff0c 建立在iptables之上 xff0c 而docker使用iptables来进行网络隔离和管理 xff0c 这可能会与 Docker 产生冲突 当 firewalld 启
  • gradle和gradle wrapper

    wrapper保证了团队中每一个开发者都使用同样版本的Gradle并能使用Gradle进行项目构建 1 Gradle Wrapper 是什么 Gradle Wrapper 由几个文件组成 xff0c 这些文件在你的项目目录中 l gradl
  • ApplicationContextAware及InitializingBean及bean注入执行顺序

    1 spring先检查注解注入的 bean xff0c 并将它们实例化 2 然后 spring初始化 bean 的顺序是按照 xml 中配置的顺序依次执行构造 3 如果某个类实现了 ApplicationContextAware接口 xff
  • git 报错: http request failed

    解决方案 xff1a 卸载Centos自带的git1 7 1 xff0c 安装版本git2 2 1 1 查看当前git版本 git version git version 1 7 1 2 卸载git1 7 1 yum remove git
  • 关于sh时命令不识别无法正常执行.sh文件

    为什么不能执行呢 xff0c 因为我们的命令很多时候是以bash的规范的 xff0c 所以如果shell不是bash类型 xff0c 很容易出现命令不识别这类问题 先检查shell类型 echo SHELL 这是正常的 xff0c 是bas
  • Powershell美化(oh-my-posh)

    效果展示 xff1a 1 通过cmd下载oh my posh或者直接微软商店搜索下载 winget install oh my posh 2 打开powershell 7或者powershell xff08 推荐以下载的最高版本为主 xff
  • O2OA中如何使用PostgreSQL + Citus 实现分布式数据库实现方案?

    虽然 O2OA 数据表高效的表结构以及索引的设计已经极大程度地保障了数据存取操作的性能 xff0c 但是随着使用时间从增长 xff0c 数据表存放的数据量也会急剧增长 此时 xff0c 仍然需要有合适的方案来解决数据量产生的系统性能瓶颈 本
  • POI Excel导出样式设置

    HSSFSheet sheet 61 workbook createSheet 34 sheetName 34 创建sheet sheet setVerticallyCenter true 下面样式可作为导出左右分栏的表格模板 sheet
  • SQL强化:将相同的或连续的时间段合并

    问题描述 xff1a 有一张签到表 xff0c 需要将连续或相同的时间段合并 xff0c 即把多条记录查询合并成一条连续的时间段记录 数据表如下 xff1a DROP TABLE IF EXISTS 96 timesheets 96 CRE
  • Mysql实现数据的不重复写入(insert if not exists)以及新问题:ID自增不连续的解答

    最近做数据处理时候 xff0c 遇到一个问题 用一个id自增主键时候 xff0c 数据表中会插入大量重复数据 xff08 除ID不同 xff09 这虽然对最终数据处理结果没有影响 xff0c 但是有1个问题 xff0c 如果数据量超大 xf
  • 2014年秋找工作经历

    博主学渣一枚 xff0c 读研期间做过几个不上档次的管理系统 xff0c 学历不太好 xff0c 基础知识不太牢固 xff0c 所以校招找工作难免辛酸 记下这个过程 xff0c 以便日后回顾来时的路 9月 xff0c 酱油了 xff0c 只
  • 服务器端获取webservice客户端IP地址

    一 基于xfire发布的webservice获取客户端ip的方法 public String getClientIp String ip 61 34 34 try HttpServletRequest request 61 XFireSer
  • @Autowired,@Qualifier @Required @Resource @Component,@Service,@Controller,@Repository @PostConstruct

    1 64 Autowired 注解 xff1a 首先在使用时候需要引入配置 xff1a lt 该 BeanPostProcessor 将自动起作用 xff0c 对标注 64 Autowired 的 Bean 进行自动注入 gt lt bea
  • HTML中select标签单选多选详解

    select 元素可创建单选或多选菜单 当提交表单时 xff0c 浏览器会提交选定的项目 xff0c 或者收集用逗号分隔的多个选项 xff0c 将其合成一个单独的参数列表 xff0c 并且在将 lt select gt 表单数据提交给服务器
  • Tomcat正常启动,访问所有页面均报404异常,404异常总结

    今天遇到一个问题 xff1a Tomcat正常启动 xff0c 访问所有页面均报404异常 404异常 xff0c 很常见 xff0c 大多情况是路径错误 web xml文件映射路径写错 服务器设置 servlet的jar包未导进去或者没有
  • oracle中游标详细用法

    游标的概念 游标是SQL的一个内存工作区 xff0c 由系统或用户以变量的形式定义 游标的作用就是用于临时存储从数据库中提取的数据块 在某些情况下 xff0c 需要把数据从存放在磁盘的表中调到计算机内存中进行处理 xff0c 最后将处理结果
  • ckeditor 缺少图像源文件地址

    ckeditor 上传服务器 回显示js代码 javaweb整合ckeditor做上传图片的功能 xff0c 图片上传到tomcat服务器成功了 xff0c 但是没有跳转到到预览框里去 xff0c 却在原先的页面显示出这段js代码 xff1
  • centos7通过yum安装JDK1.8

    centos7通过yum安装JDK1 8 安装之前先检查一下系统有没有自带open jdk 命令 xff1a rpm qa grep java rpm qa grep jdk rpm qa grep gcj 如果没有输入信息表示没有安装 如
  • RenderThread线程报错记录

    RenderThread线程报错是很蛋疼的 xff0c 它是属于native报错 xff0c 而且还会有各种情况 04 23 16 31 38 343 17895 17895 F DEBUG 04 23 16 31 38 344 17895
  • 【Cocos2d-x】Win7+ vs2012,2010 + Cocos2d-x2.2 配置Cocos2d-X项目-环境

    新安装搭建cocos2d X的跳过这里 xff0c 看下面红色开始 xff1a cocos2d x删除vs2012项目模板 这一步新使用cocos2d x的不需要 如果你切换cocos2d x版本的话 xff0c 要将之前版本的vs模板删除

随机推荐