2020年CSP-J认证 CCF非专业级别软件能力认证第一轮真题--阅读程序题
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 时,一定大于n。
答案:1× 2 ×3 √
单选题
4)、 若输入的n等于,输入的k 为1,则输出等于
A、1
B、
C、
D、
答案:D
5)、若输入的n等于205,891,132,094,649(即),输入的k为3,则输出等于
A、
B、
C、
D、
答案: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位,每次运算进位1次;
……
因此第1位,会产生330/3次进位,第2位会产生330/次进位……最后一位,会产生1次进位。
因此答案 = / 3 + / + … + 1
根据等比数列求和公式Sn = (– 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
2020年CSP-J认证 CCF非专业级别软件能力认证第一轮真题--阅读程序题相关推荐
- 2020 CCF非专业级别软件能力认证第一轮(LGR-10)洛谷模拟试题试卷
2020 CCF非专业级别软件能力认证第一轮 (LGR-10)洛谷模拟试题试卷 认证时间:2020年10月8日09:30-11:30 一.单项选择题(共15题,每题2分,共计30分:每题有且仅有一个正 ...
- 2020 CCF 非专业级别软件能力认证第一轮(CSP-S) 提高级 C++ 语言试题
目录 一.选择题:每题 2 分,共 15 题, 30 分. 在每小题给出的四个选项中,只有一项是符合题目要求的. 二.阅读程序(程序输入不超过数组或字符串定义的范围:判断题正确填 3,错误填 7:除特 ...
- 2022 CCF 非专业级别软件能力认证第一轮 (CSP-J1)入门级 C++语言试题 认证时间:2022 年 9 月 18 日 09:30~11:30
今天的考试题,有点乱 2022 CCF 非专业级别软件能力认证第一轮 (CSP-J1)入门级 C++语言试题 认证时间:2022 年 9 月 18 日 09:30~11:30 考生注意事项: 试题 ...
- 2021 CCF 非专业级别软件能力认证第一轮(CSP-S1)提高级
C++语言试题,认证时间:2021 年 9 月 19 日 09:30~11:30 考生注意事项: l 试题纸共有 16 页,答题纸共有 1 页,满分 100 分.请在答题纸上作答,写在试题纸上的 一律 ...
- 非专业级软件能力认证(CSP-J/S)
目录 主办方:★★★★★ 中国计算机学会(CCF) 考试内容:★★★★★ C++,分为CSP-J和CSP-S分别有两轮认证. 第一阶段:基础知识,数据结构(入门),第二阶段:算法,上机操作(上机,编程 ...
- CCF csp软件能力认证 第15次 第5题 管道清洁 java 100分
题目csp模拟考试系统201812-5的题目. 我的java张老师是负责csp的,于是java的一个作业就是做这一套题.用java写,行,c++转java而已,写算法题嘛,基本语法懂了就好了,就边学边 ...
- CCF软件能力认证201604俄罗斯方块
试题编号: 201604-2 试题名称: 俄罗斯方块 时间限制: 1.0s 内存限制: 256.0MB 问题描述: 问题描述 俄罗斯方块是俄罗斯人阿列克谢·帕基特诺夫发明的一款休闲游戏. 游戏在一个1 ...
- 2019 CCF CSP-J第一轮
2019CCF非专业级别软件能力认证第一轮(初赛) A卷 (B卷=A卷,顺序不同) 听说这次CSP可能是最后一次,因为以后是NOIP了--好好纪念一下 第一部分 一.单项选择题(共15题,每题2分,共 ...
- 中国计算机学会推出 CSP 非专业级别认证
23 日,中国计算机学会(CCF)公告推出 CSP 非专业级别的能力认证(CSP,Certified Software Professional,软件能力认证). CCF 于 2014 年推出 CSP ...
最新文章
- php.ini 中文版第二部分(关于这个配制文件)
- 软件工程的瀑布, 大泥球, 教堂,集市,和银弹
- html文档包包含几个基本标记,HTML中包含哪些基本的标记?
- Java常用类:String
- 调试人脸识别 无cpu版本出现的问题
- 【实用工具】adb检测android设备
- 致谢计算机组成原理老师的致谢,计算机组成原理课程报告(40页)-原创力文档...
- 存储容错:鱼与熊掌可以兼得
- 老鸟成长之路:菜鸟入门八种安全工具(转)
- 验证码原理详解与案例
- fedora14 官方下载地址
- html文件命名首字母大写,HTML制作中的文件夹及文件命名规范(一)
- ARPG游戏开发知识整理。
- mysql连接字符串_[MySQL] - MySQL连接字符串总结
- 浅谈sketch插件二
- 迪杰斯特拉(Dijkstra)算法最通俗易懂的讲解
- 明光市机器人_明光市安保巡逻机器人在线咨询
- MSDN如何找到和打开
- 《小强升职记》作者谈“怎样达成目标”
- 《惢客创业日记》2019.01.21(周一)你还记得米卢吗?
热门文章
- vue作用域插槽,你真的懂了吗?
- 【文件上传漏洞绕过方式】
- 实际地址转换成经纬度
- idea设置背景颜色为绿色,保护眼睛
- 心理学上22条关于生活、情绪与交往间的习惯
- Git error-fatal-Needed a single revision
- FME中二维管线数据三维化及生成带属性3dtiles
- vue项目优化——Webpack的externals的理解
- sqlserver 分组合并列_夺冠!中国队国际奥数大赛再称雄,满分选手已保送清华姚班,“中国二队”并列第一...
- Scrapy教程1--7