信息学奥赛初赛天天练-36-CSP-J2021阅读程序-ASCII、运算符优先级、二进制补码存储、模拟算法应用

PDF文档公众号回复关键字:20240626

在这里插入图片描述

2021 CSP-J 阅读程序2

1 阅读程序(判断题1.5分 选择题3分 共计40分 )

#include<stdio.h>
#include<string.h>

char base[64];
char table[256];
char str[256];
char ans[256];

void init()
{
	for(int i=0;i<26;i++) base[i]='A'+i;
	for(int i=0;i<26;i++) base[26+i]='a'+i;
	for(int i=0;i<10;i++) base[52+i]='0'+i;
	base[62]='+',base[63]='/';
	
	for(int i=0;i<256;i++) table[i]=0xff;
	for(int i=0;i<64;i++) table[base[i]]=i;
	table['=']=0;
}

void decode(char *str)
{
	char *ret = ans;
	int i,len = strlen(str);
	for(i=0;i<len;i+=4){
		(*ret++) =table[str[i]]<<2|table[str[i+1]]>>4;
		if(str[i+2]!='=')
			(*ret++)=(table[str[i+1]]&0x0f)<<4|table[str[i+2]]>>2;
		if(str[i+3]!='=')
			(*ret++)=table[str[i+2]]<<6|table[str[i+3]];
	}
}

int main()
{
	init();
	printf("%d\n",(int)table[0]);
	
	scanf("%s",str);
	decode(str);
	printf("%s\n",ans);
	return 0;	
}

判断题

22.输出的第二行一定是由小写字母、大写字母、数字和"+“、”/“、”="构成的字符串( )

23.可能存在输入不同,但输出的第二行相同的情形( )

24.输出的第一行为"-1" ( )

单选题

25.设输入字符串长度为n,decode函数的时间复杂度为( )

A. O(sqrt(n))

B. O(n)

C. O(n log n)

D. O(n^2)

26.当输入为"Y3Nx"时,输出的第二行为( )

A. “csp”

B. “csq”

C. “CSP”

D. “Csp”

27.(3.5分)当输入为"Y2NmIDIwMjE"时,输出的第二行为( )

A. “ccf2021”

B. “ccf2022”

C. “ccf 2021”

D. “ccf 2022”

2 相关知识点

1) ASCII码

字符是一种图形符号,不同国家不同地区都有自己特殊的字符,于是就衍生了“字符集合”这个名词。其中ASCII (American Standard Code for Information Interchange: 美国信息交换标准代码)是国际通用的标准字符集

例如

char a='0';
char b='P';
char c='@';
char c='65';//ascii 码 对应大写字母A

ASCII码表

2) 运算符优先级

本题涉及到的位运算的优先级如下

位移 > 按位与  > 按位或

<<  >    &    >   |
  

3) 0xff

计算机存储使用二进制补码存储

0xff对应二进制补码(如果存储在1个字节中,二进制第1位为符号位,1开头为负数)

11111111

反码为:

11111110

原码为

10000001

对应十进制-1

3 思路分析

本程序主要使用模拟算法,计算量巨大,根据程序逻辑先初始化如下表格

本程序初始化base数组如下

table数组如下

常用ASCII

输入字符串后,把字符串每4个一组进行处理,分别进行如下3段程序处理

1
(*ret++) =table[str[i]]<<2|table[str[i+1]]>>4;
2
if(str[i+2]!='=')
	(*ret++)=(table[str[i+1]]&0x0f)<<4|table[str[i+2]]>>2;
3
if(str[i+3]!='=')
	(*ret++)=table[str[i+2]]<<6|table[str[i+3]];
上面3句程序,没句最多输出一个字符,存放到数字ans中
最后输出数组ans

22.输出的第二行一定是由小写字母、大写字母、数字和"+“、”/“、”="构成的字符串( F )

分析

计算过程使用小写字母、大写字母、数字作为table的下标,值为0~63,但0 ~ 63 经过decode解码后不一定是这些字符,例如有空格的输出

23.可能存在输入不同,但输出的第二行相同的情形( T )

分析

只有输入小写字母、大写字母、数字时,table下标的内容才会找到对应字符进行转换,如果不是这些table的值默认为0xff,转换后输出相同

24.输出的第一行为"-1" ( T )

分析

table[0]没有被赋值,默认赋值为0xff

0xff对应二进制补码(如果存储在1个字节中,二进制第1位为符号位,1开头为负数)

11111111

反码为:

11111110

原码为

10000001

对应十进制-1

单选题

25.设输入字符串长度为n,decode函数的时间复杂度为( B )

A. O(sqrt(n))

B. O(n)

C. O(n log n)

D. O(n^2)

分析

程序主语一个for循环,长度为n

虽然有i+=4的跳步,达不到sqrt和log

26.当输入为"Y3Nx"时,输出的第二行为( B )

A. “csp”

B. “csq”

C. “CSP”

D. “Csp”

分析

根据列出的表格和输入,对3行代码逐行输出

Y3Nx时,第1行代码,输出c

Y3Nx时,第2行代码,输出s

Y3Nx时,第3行代码,输出q

所以输出csq

27.(3.5分)当输入为"Y2NmIDIwMjE="时,输出的第二行为( C )

A. “ccf2021”

B. “ccf2022”

C. “ccf 2021”

D. “ccf 2022”

分析

根据列出的表格和输入,对3行代码逐行输出

第1个4个字符 Y2Nm

Y2Nm时,第1行代码,输出c

Y2Nm时,第2行代码,输出c

Y2Nm时,第3行代码,输出f

第2个4个字符 IDIw

IDIw时,第1行代码,输出 空格

IDIw时,第2行代码,输出 2

IDIw时,第3行代码,输出 0

第3个4个字符 MjE=

MjE=时,第1行代码,输出 2

MjE=时,第2行代码,输出 1

MjE=时,第3行代码,不满足if判断条件,不输出

所以输出为ccf 2021

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

49、基于归一化感知器的输入向量分类(matlab)

1、基于归一化感知器的输入向量分类的原理及流程 归一化感知器是一种分类算法&#xff0c;其原理基于感知器算法&#xff0c;但是在输入向量上进行了归一化处理&#xff0c;以提高算法的性能和稳定性。 流程如下&#xff1a; 输入向量归一化&#xff1a;对每个输入向量进行归…

图解HTTP笔记整理(前六章)

图解HTTP 第一章 web使用HTTP &#xff08;HyperText Transfer Protocol&#xff0c;超文本传输协议&#xff09;协议作文规范&#xff0c;完成从客户端到服务器端等一系列运作流程。 协议&#xff1a;计算机与网络设备要相互通信&#xff0c;双方就必须基于相同的方法。比如…

JetBrains Rider 2024安装教程

一、下载Rider 1、进入官网&#xff0c;点击“下载” 2、下载完毕 二、安装Rider 1、双击下载的exe文件 2、点击“下一步” 3、可以点击“浏览”选择安装路径&#xff0c;之后点击“下一步” 4、选中图中四项&#xff0c;点击“下一步” 5、选中图中四项&#xff0c;点击“下…

Superset二次开发之导入导出功能源码解读

可导出的类型 支持 看板(Dashboard)、图表(Charts)、数据集(Datasets)、SQL(saved_query)、数据库(Database connection) 单次或批量的导出,和单次导入操作 看板(Dashboard) 图表(Charts) 数据集(Datasets) SQL (saved_query) 数据库(database connections)…

4.任务调度

1.基本知识 2.任务的状态 FreeRTOS中任务共存在4种状态&#xff1a;Running 运行态 当任务处于实际运行状态称之为运行态&#xff0c;即CPU的使用权被这个任务占用&#xff08;同一时间仅一个任务处于运行态&#xff09;。Ready 就绪态 处于就绪态的任务是指那些能够运行&…

声场合成新方法:基于声波传播的框架

声场合成是指在房间内的麦克风阵列上&#xff0c;根据来自房间内其他位置的声源信号&#xff0c;合成每个麦克风的音频信号。它是评估语音/音频通信设备性能指标的关键任务&#xff0c;因为它是一种成本效益高的方法&#xff0c;用于数据生成以替代真实的数据收集&#xff0c;后…

Java知识点整理 13 — Hutool工具库

在开发时经常需要编写很多与业务无关的代码&#xff0c;比如获取指定日期对象、获取本机 IP 地址、数据加密等。通常我们会将这些代码独立出来&#xff0c;放到 utils 目录下&#xff0c;作为工具类供其它代码调用。 但如果遇到一个从未接触过的领域知识&#xff0c;开发一个新…

Spring Boot如何实现跨域资源共享(CORS)?

&#x1f345; 作者简介&#xff1a;哪吒&#xff0c;CSDN2021博客之星亚军&#x1f3c6;、新星计划导师✌、博客专家&#x1f4aa; &#x1f345; 哪吒多年工作总结&#xff1a;Java学习路线总结&#xff0c;搬砖工逆袭Java架构师 &#x1f345; 技术交流&#xff1a;定期更新…

01_02_Mybatis的配置文件与基于XML的使用

1、引入日志 在这里我们引入SLF4J的日志门面&#xff0c;使用logback的具体日志实现&#xff1b;引入相关依赖&#xff1a; <!--日志的依赖--><dependency><groupId>org.slf4j</groupId><artifactId>slf4j-api</artifactId><version&g…

Spring Boot整合RocketMQ实现延迟消息消费

导包 <dependency><groupId>org.apache.rocketmq</groupId><artifactId>rocketmq-spring-boot-starter</artifactId><version>2.0.3</version></dependency>添加配置信息 application配置文件 # rocketMq地址 rocketmq.name…

数据采集与预处理复习资料

目录 第一章 简答 1.简述Hadoop各个组件及其功能 2.Hadoop在大数据技术体系中的地位和作用&#xff08;来自文心一言&#xff09; 3.Hadoop 启动命令&#xff0c;停止命令 4.pig 加载HDFS 数据 5.数据采集的方法&#xff08;来自ppt&#xff09; 6.数据分析过程&#xf…

GO sync包——读写锁

&#x1f49d;&#x1f49d;&#x1f49d;欢迎莅临我的博客&#xff0c;很高兴能够在这里和您见面&#xff01;希望您在这里可以感受到一份轻松愉快的氛围&#xff0c;不仅可以获得有趣的内容和知识&#xff0c;也可以畅所欲言、分享您的想法和见解。 推荐:「stormsha的主页」…

引导过程与服务器控制

一、引导过程 1.开机自检 服务器主机开机以后&#xff0c;将根据主板 BIOS 中的设置对 CPU&#xff08;Central Processing Unit&#xff0c; 中央处理器&#xff09;、内存、显卡、键盘等设备进行初步检测&#xff0c;检测成功后根据预设的启动顺序移 交系统控制权&#xff0c…

ChatGPT在程序开发中的应用:提升生产力的秘密武器

在当今飞速发展的科技时代&#xff0c;程序开发已经成为许多企业和个人必不可少的技能。然而&#xff0c;编写代码并非总是顺风顺水&#xff0c;面对复杂的算法、繁琐的调试、持续不断的需求变更&#xff0c;程序员们常常感到压力山大。在这种情况下&#xff0c;ChatGPT应运而生…

C#学习系列之DataGrid无故添加空行

C#学习系列之DataGrid无故添加空行 前言解决前解决后总结 前言 采用别人的轮子&#xff0c;想在基础上改界面&#xff0c;但是copy后&#xff0c;无论怎么样都会有空行&#xff0c;实在是绑定数据的输入没有任何赋值。 解决前 绑定的数据中输入三组数据&#xff0c;但是没有第…

【osgEarth】Ubuntu 22.04 源码编译osgEarth 3.5

下载源代码 git clone --depth1 https://dgithub.xyz/gwaldron/osgearth -b osgearth-3.5 下载子模块 git submodule update --init 如果下载不过来&#xff0c;就手动修改下.git/config文件&#xff0c;将子模块的地址替换成加速地址 (base) yeqiangyeqiang-Default-string…

openlayers性能优化——开启图层预加载、减少空白等待时间

使用切片图层时、地图拖拽会有空白图片&#xff0c;为了减少空白等待时间&#xff0c;我们可以开始图层预加载。 const map_top new Map({layers: [new TileLayer({preload:Infinity, //预加载source: new StadiaMaps({layer: "outdoors",}),}),],target: "ma…

点云处理实战 PCL求解点云表面曲率

目录 一、什么是曲率 二、曲率计算过程 三、pcl 求解点云局部曲率 四、思考?为何曲率计算会使用协方差矩阵? 五、推荐阅读 一、什么是曲率 曲率是几何学中用来描述曲线或曲面形状变化的一个量。它反映了曲线或曲面的弯曲程度。在不同的上下文中,曲率的定义和计算方式有…

uniapp 微信小程序端使用百度地图API

1、登录百度地图开放平台 https://lbsyun.baidu.com/&#xff08;没有账号则先去创建一个百度账号&#xff09; 2、进入百度地图开放平台控制台&#xff08;导航栏“控制台”&#xff09;&#xff0c;点击“应用管理”-“我的应用” 3、选择“创建应用”&#xff0c;应用模块选…

LLM大模型算法学习资源持续整理

文章目录 waytoagiLLM101llm-coursellm-cookbook waytoagi 飞书文档写的AGI知识库。 https://www.waytoagi.com/ LLM101 karpathy更新中的大模型教程&#xff1a; https://github.com/karpathy/LLM101n llm-course Course to get into Large Language Models (LLMs) wi…