2020年CSP-J认证 CCF非专业级别软件能力认证第一轮真题--阅读程序题

news2024/12/27 11:16:35

2020 CCF认证第一轮(CSP-J)真题

二、阅读程序题

(程序输入不超过数组或字符串定义的范围,判断题正确填√错误填X;除特殊说明外,判断题 1.5分,选择题3分,共计4 分)

第一题

01 #include <cstdlib>
02 #include <iostream>
03 using namespace std;
04
05 char encoder[26]= {'C','S','P',0};
06 char decoder[26];
07
08 string st;
09
10 int main(){
11    int k=0;
12    for (int i=0;i<26;++i)
13        if (encoder[i] != 0) ++k;
14    for (char x='A';x<='Z;++x){
15        bool flag = true;
16        for (int i=0;i<26; ++i)
17            if (encoder[i] == x){
18                flag = false;
19                break;
20            }
21        if (flag){
22            encoder[k] = x;
23            ++k;
24        }
25    }
26    for (int i=0;i<26;++i)
27        decoder[encoder[i]-'A']=i+'A';
28    cin >> st;
29    for (int i=0;i<st.length();++i)
30        st[i] = decoder[st[i] -'A'];
31    cout << st;
32    return 0;
33}

程序分析

主要考查小朋友们读写程序能力和逻辑思维能力,此程序实现的一个加密解密的功能;它使用一个26个元素的数组 encoder 和一个26个元素的数组 decoder,分别用于加密和解密。

程序首先初始化 encoder 数组为 {'C','S','P',0},然后通过遍历数组找到不为零的元素个数,并输出这些元素。接着,程序遍历从 A 到 Z 的所有字母,检查它们是否已经在 encoder 数组中出现过。如果未出现过,则将该字母添加到 encoder 数组中。程序也会相应地更新 decoder 数组,以便进行解密。

然后,程序从用户获取一个字符串,并将该字符串中的每个字符用相应的解码方式进行解密。最后,程序输出解密后的字符串。

总之,这段程序实现了一个简单的加密和解密功能,其中加密方式是将大写的C、S、P三个字母替换为 大写的A、B、C三个字母,具体加密前字母和加密后字母如下:

加密前:ABCDEFGHIJKLMNOPQRSTUVWXYZ

加密后:DEAFGHIJKLMNOPQCRSBTUVWXYZ

判断题

1)、输入的字符串应当只由大写字母组成,否则在访问数组时可能越界

2)、若输入的字符串不是空串,则输入的字符串与输出的字符串一定不一样

3)、将第 12行的“i<26”改为“i<16”,程序运行结果不会改变

4)、将第 26行的"i<26”改为“i<16”,程序运行结果不会改变

答案:1√ 2 × 3 √ 4 ×

答案分析:

1、从程序分析可以得出输入的只能是26个大写字母

2、输入的是S后面的字母输出的就是一样的

3、第12行的作用是读取encoder数组里面的个数,程序中只给出CSP三个,所以改成16不影响,改成6都可以,只要超过encoder数组的个数就行

4、第26是对26个字母进行解码,如果改成16了,会发现后面的一部分就会出错

单选题

5)、出的字符串为“ABCABCABCA”,则下列说法正确的是

A、输入的字符串中既有 S 又有 P

B、输入的字符串中既有 S 又有 B

C、输入的字符串中既有 A 又有 P

D、输入的字符串中既有 A 又有 B

答案:A

答案分析:因为输出的结果中有B和C,所以输入的字符串就是S和P,所以答案A

6)、若输出的字符串为“CSPCSPCSPCSP”,则下列说法正确的是

A、输入的字符串中既有 P 又有 K

B、输入的字符串中既有 J 又有 R

C、输入的字符中中既有 J 又有 K

D、输入的字符串中既有 P又有 R

答案:D

答案分析:因为输出的结果中有C和S,所以输入的字符串就是P和R,所以答案D

第二题

1 #include<iostream>
2 using namespace std;
3
4 long long n, ans;
5 int k, len;
6 long long d[1000000];
7
8 int main(){
9 	cin >> n >> k;
10	d[0] = 0;
11 	len= 1;
12	ans = 0;
13	for (long long i = 0; i<n; ++i) {
14		++d[0];
15		for (int j = 0;j + 1<len; ++j){
16			if (d[j] == k){
17				d[j] = 0;
18				d[j + 1] += 1;
19				++ans;
20			}
21		}
22		if (d[len- 1] == k){
23			d[len - 1] = 0;
24			d[len] =1;
25			++len;
26			++ans;
27		}
28	}
29	cout << ans << endl;
30	return 0;
31 }

程序分析

主要考查小朋友们读写程序能力和逻辑思维能力,此程序小朋友们不认真理解还是比较容易出错的,甚至有可能看不懂题目;此程序其实要实现的功能是将十进制数n,转换成对应的k进制数,输出的结果是在转换的过程中总的进位的次数,也就是ans;其中的len表示的是长度;当k为1时,n为1,1进制的1,len 为2,所以错误;输入n为1且 k > 1 时,ans == n;n转化为 len 位的 k 进制数字值 最大值为 k^len - 1 ,因此k^len>n。

判断题

1)、若k=1,则输出ans 时,len=n。

2)、若 k>1,则输出ans 时,len 一定小于n。 

3)、若 k>1,则输出ans 时,k^{len}一定大于n。 

答案:1× 2 ×3 √ 

单选题

4)、 若输入的n等于10^{15},输入的k 为1,则输出等于

A、1

B、\left ( 10^{30}-10^{15} \right )/2

C、\left ( 10^{30}+10^{15} \right )/2

D、10^{15}

答案:D

5)、若输入的n等于205,891,132,094,649(即3^{30}),输入的k为3,则输出等于

A、3^{30}

B、\left ( 3^{30}-1 \right )/2

C、3^{30}-1

D、\left ( 3^{30}+1 \right )/2

答案:B

6)、若输入的n 等于 180,01,02,000,098,输入的k为10,则输出等于

A、11,112,222,444,543

B、11,122,222,444,453

C、11,122,222,444,543

D、11,112,222,444,453

答案:B

考点分析:4、当输入的 k 为 1 时,表示的是1进制,所以每一次都会进,len为2,但是后面触发不了len++的条件,结果就是,len一直是2,每次 d[0]++ 都会进位,输出 ans == n。

5、第1位,每k次运算进位1次;
第2位,每k^{2}次运算进位1次;
……
因此第1位,会产生330/3次进位,第2位会产生330/3^{2}次进位……最后一位,会产生1次进位。
因此答案 = 3^{30} / 3 + 3^{30}/3^{2} + … + 1
根据等比数列求和公式Sn = (3^{30}– 1) / (3 - 1)

6、根据上面的分析,可以得到答案为B

第三题

#include <algorithm>
#include <iostream>
using namespace std;

int n;
int d[50][2];
int ans;

void dfs(int n,int sum) {
	if (n == 1) {
		ans = max(sum, ans);
		return;
	}		
	for (int i=1;i<n;++i){
		int a= d[i -1][0],b = d[i - 1][1];
		int x=d[i][0],y = d[i][1];
		d[i-1][0]=a+x;
		d[i- 1][1]=b+y;
		for (int j=i;j<n-1;++j)
			d[j][0] = d[j + 1][0],d[j][1] = d[j + 1][1];
		int s=a+x+abs(b- y);
		dfs(n-1,sum +s);
		for (int j=n-1;j>i;--j)
			d[j][0] = d[j - 1][0],d[j][1]= d[j-1][1];
		d[i- 1][0]=a,d[i- 1][1]=b;
		d[i][0] =x,d[i][1] = y;
	}
}

int main() {
	cin >>n;
	for (int i=0;i<n;++i)
		cin >>d[i][0];
	for (int i=0;i<n;++i)
		cin >> d[i][1];
	ans = 0;
	dfs(n,0);
	cout << ans << endl;
	return 0;
}

程序分析

主要考查小朋友们读写程序能力和逻辑思维能力,程序通过递归实现深度优先搜索(DFS)来寻找满足条件的子数组。在递归过程中,维护一个当前已选取的元素的和sum,每次扩展当前子数组时,将当前位置的元素加到前面已经选取的元素的和上,然后将这个和加上当前位置与下一个位置的差的绝对值,作为新的sum值。递归完成后,更新答案ans为当前和sum与ans的最大值。

假设输入的 n 是不超过 5 的正整数,d[i][0]d[i][1]都是不超过10000的正整数,完成下面的判断题和单选题:

判斯题

1) 输入 n 为0,此程序可能会死循环或发生运行错误

2) 若输入n为20,接下来的输入全为0,则输出为 0

3) 输出的数一定不小于输入的 d[i][0]和 d[i][1]的任意一个

答案:1× 2√ 3  ×

答案分析:输入0,啥也不做,直接输出0;输入20个0,求和依然是0,ans也是0;输入的值也有可能小于输入的值,比如输入n=2,0 0 和 3 3,这时输出的是0

单选题

4) 若输入的n为20,接下来的输入是 20个9和20个0,则输出为

A.1890        B.1881        C.1908        D.1917

答案:B

5) 若输入的n为3,接下来的输入是 3 个0和3 个5,则输出为

A.2000        B. 2010        C.2030        D.2020

答案:C

6) 若输入的n 为 15,接下来的输入是15到1,以及15 到1,则输出为

A. 2440        B. 2220        C.2240        D. 2420

答案:C

考点分析:

4、第二列为0,加0等于没加不用管,可以忽略
第1次合并:9+9=9*2
第2次合并:18+9=9*
3
第3次合并:27+9=9*4

第19次得到:9*20
因此和 = 9*2 + 9*3 + … + 9 * 20 = 1881

5、第1次合并:5-5=0
第2次合并:5+5-5=5=5*1
第3次合并:10+5-5=10=5*
2

第29次合并:5*30-5=5*28
求和 = 5 * (1 + 2 + … + 28) = 2030

6、对于第1列:
第1次合并 = 15+14
第2次合并 = 15+14+13

第14次合并 = 15+14+13+12+…+1

15*14+14*14+13*13+…+1*1 = 1225

对于第2列:
第1次合并 = 15-14
第2次合并 = 15+14-13
第3次合并 = 15+14+13-12
……
第14次合并 = 15+14+13+12+…+2-1
15*13+14*12+…+3*1=1001,最后加上14个1:1015
最终答案是:2240

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

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

相关文章

Java调优

Java调优 Java 性能调优不像是学一门编程语言&#xff0c;无法通过直线式的思维来掌握和应用&#xff0c;它对于工程师的技术广度和深度都有着较高的要求。 互联网时代&#xff0c;一个简单的系统就囊括了应用程序、数据库、容器、操作系统、网络等技术&#xff0c;线上一旦出…

【深度学习】GPT-1

GPT-1是OpenAI在《Improving Language Understanding by Generative Pre-Training》中于2018年提出的生成式预训练语言模型。 1.GPT-1 简介 在自然语言处理任务中&#xff0c;存在大量无标签的语料数据&#xff0c;而有标签的语料数据相对较少&#xff0c;因此基于有监督训练的…

[建议收藏] Mysql+ETLCloud CDC+Doris实时数仓同步实战

一、业务需求及其痛点 随着数字化转型&#xff0c;企业需要对各种销售及营销数据进行实时同步分析&#xff0c;例如销售订单信息&#xff0c;库存信息&#xff0c;会员信息&#xff0c;设备状态信息等等&#xff0c;这些统计分析信息可以实时同步到 Doris中进行分析和统计&…

搜索跳出率:了解并优化用户体验

&#x1f482; 个人网站:【海拥】【游戏大全】【神级源码资源网】&#x1f91f; 前端学习课程&#xff1a;&#x1f449;【28个案例趣学前端】【400个JS面试题】&#x1f485; 寻找学习交流、摸鱼划水的小伙伴&#xff0c;请点击【摸鱼学习交流群】 目录 前言什么是搜索跳出率&…

【Linux编辑器-vim使用】

目录 Linux编辑器-vim使用1.vim的基本概念2.vim的基本操作3.vim正常模式命令集4.vim末行模式命令集 Linux编辑器-vim使用 1.vim的基本概念 目前了解的vim有三种模式&#xff08;其实有好多模式&#xff09;&#xff0c;分别是命令模式、插入模式和底行模式&#xff0c;各模式…

Midjourney如何用参考图/垫图来绘画图

大家都知道AI绘画工具每次生成的效果都是随机的&#xff0c;但是现在很多AI绘图工具都提供了利用参考图/垫图的方式出图&#xff0c;这样就可以让让AI画作生成自己想要的布局、场景、色彩等等。 国内的AI绘图工具一般都好操作&#xff0c;国外主流的Midjourney也可以添加参考图…

ChatGPT/GPT-4 或将从根本上改变软件工程

文章目录 一、前言二、主要内容 &#x1f349; CSDN 叶庭云&#xff1a;https://yetingyun.blog.csdn.net/ 一、前言 编程也可能是最容易被 AI 技术取代的工作之一&#xff0c;软件的构建方式将产生根本性的转变。 今年以来&#xff0c;相信大家都听说过 ChatGPT、New Bing 和…

8.5 字节序及IP地址转换

目录 主机字节序和网络字节序 什么是字节序&#xff1f; 字节序转换函数 IP地址字节序转换函数 主机字节序和网络字节序 什么是字节序&#xff1f; 字节序是指多字节数据在计算机内存中存储或者网络传输时各字节的存储顺序&#xff0c;分为&#xff1a; 大端字节序 (Big …

药物 3D 打印新突破:圣地亚哥大学用机器学习筛选喷墨打印生物墨水,准确率高达 97.22%

内容一览&#xff1a;药物喷墨打印是一种高度灵活和智能化的制药方式。据相关报告统计&#xff0c;该领域市场规模将在不久的未来呈现指数级增长。过往&#xff0c;筛选合适生物墨水的方法费时且费力&#xff0c;因此也成为药物喷墨打印领域面临的主要挑战之一。为解决这一问题…

开启你的时间序列分析之旅:一步步教你学会HyperTS

目录 前言一、HyperTS介绍二、HyperTS安装、使用2-1、安装2-2、HyperTS使用 三、案例3-0、通用工作流程3-1、时间序列预测3-2、时间序列分类3-3、时间序列异常检测 四、高级应用4-1、模型的保存和加载 总结 前言 HyperTS是一个开源的时间序列分析库&#xff0c;主要用于处理和分…

K8S 云集群安装纯享版 - 傻瓜式一键教程 全自动脚本文件

引言&#xff1a; 用的云服务器&#xff0c;整个过程读者还是需要准备些软妹币的… 另外众所周知&#xff0c;K8S最难的部分是什么&#xff1f;——是安装。。。 目录 0. 技术选型( :bell: 重要&#xff01;)0.0 version0.1 云服务器 1. 容器运行时2. k8s 安装前准备2.0 网络连…

【计算机视觉】CVPR 2023 上的分割论文真的是神仙打架(介绍前12篇,图像分割,全景分割,语义分割,实例分割)

文章目录 一、图像分割类1.1 AutoFocusFormer: Image Segmentation off the Grid1.2 FreeSeg: Unified, Universal and Open-Vocabulary Image Segmentation1.3 Parameter Efficient Local Implicit Image Function Network for Face Segmentation 二、全景分割类2.1 You Only …

CUDA介绍

CUDA introduction 文章目录 CUDA introduction异构计算架构典型的CUDA程序的执行流程函数类型限定词Kernel 线程层次结构线程ID号计算&#xff1a; Example加法实例托管内存乘法 性能分析工具 Nsight System功能用法 Reference欢迎关注公众号【三戒纪元】 异构计算架构 GPU并…

SIFT算法简介

参考资料 SIFT文献-David-UBC&#xff1a; 《Distinctive Image Features from Scale-Invariant Keypoints》SIFT算法介绍&#xff1a; SIFT特征详解 - Brook_icv - 博客园 (cnblogs.com) 简介 Scale-invariant feature transform 尺度不变特征变换 SIFT算法不仅只有尺度不…

腾讯安全杨光夫:企业需改变“头痛医头”现状,构建持续进化的安全免疫力

6月13日&#xff0c;腾讯安全联合IDC发布“数字安全免疫力”模型框架&#xff0c;主张将守护企业数据和数字业务两大资产作为企业安全建设的核心目标。腾讯安全副总裁杨光夫在《助力企业持续进化安全免疫力》的主题演讲中表示&#xff0c;在新业态、新威胁、新场景、强监管下&a…

【MySQL】MVCC是如何解决快照读下的幻读问题的

文章目录 LBCC当前读 MVCC隐藏列undo logRead View 总结 我们从上文中了解到InnoDB默认的事务隔离级别是repeatable read&#xff08;后文中用简称RR&#xff09;&#xff0c;它为了解决该隔离级别下的幻读的并发问题&#xff0c;提出了LBCC和MVCC两种方案。其中LBCC解决的是当…

StarRocks 统一 OLAP 引擎在滴滴的探索实践

作者&#xff1a;余辉&#xff0c;滴滴出行 OLAP 团队负责人/专家工程师&#xff1b;李明皇&#xff0c;滴滴出行高级软件开发工程师 发展历程 滴滴的 OLAP 系统早期由用于实时监控系统的 Apache Druid &#xff08;以下简称 Druid&#xff09;和离线加速使用的 Apache Kylin&a…

随风摇曳的她——美蕨(matlab实现)

目录 1 随风摇曳的她 2 摇曳带来的哲思 3 Matlab代码实现 1 随风摇曳的她 梦幻的场景、浪漫的气息&#xff0c;带上心爱的人&#xff0c;拥抱在这片花海之下&#xff0c;便有了电影男女主角的氛围感&#xff1b; 就算阅尽了世间风貌&#xff0c;也抵不上和她在一起时锦短情长&a…

Idea批量删除空行

1.在编辑框中使用快捷键ctrl f 打开替换框 2.勾选正则模式 Regex 3.在条件框中输入正则^\s*\n 正则解释&#xff0c;匹配以0个或n个\s空白符起首的换行\n 输入正则后可以看到效果&#xff0c;可以看到单行和多行都被选中了 。 如果想只删除连续多行的空行&#xff0c;就需要…

fl studio for window 21.0.3.3517 官方中文版免费下载及新功能介绍

FL Studio 21 for Mac官方中文版免费下载是一款功能强大的音乐编曲制作软件。尽管你可能没有接触过音乐制作&#xff0c;也能通过fl Studio 21&#xff0c;撰写&#xff0c;整理&#xff0c;录制&#xff0c;编辑&#xff0c;混合&#xff0c;掌握和制作出专业的品质音乐。 fl…