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非专业级别软件能力认证第一轮真题--阅读程序题相关推荐

  1. 2020 CCF非专业级别软件能力认证第一轮(LGR-10)洛谷模拟试题试卷

    2020 CCF非专业级别软件能力认证第一轮 (LGR-10)洛谷模拟试题试卷 认证时间:2020年10月8日09:30-11:30 一.单项选择题(共15题,每题2分,共计30分:每题有且仅有一个正 ...

  2. 2020 CCF 非专业级别软件能力认证第一轮(CSP-S) 提高级 C++ 语言试题

    目录 一.选择题:每题 2 分,共 15 题, 30 分. 在每小题给出的四个选项中,只有一项是符合题目要求的. 二.阅读程序(程序输入不超过数组或字符串定义的范围:判断题正确填 3,错误填 7:除特 ...

  3. 2022 CCF 非专业级别软件能力认证第一轮 (CSP-J1)入门级 C++语言试题 认证时间:2022 年 9 月 18 日 09:30~11:30

    今天的考试题,有点乱 2022 CCF 非专业级别软件能力认证第一轮 (CSP-J1)入门级 C++语言试题 认证时间:2022 年 9 月 18 日 09:30~11:30 考生注意事项:  试题 ...

  4. 2021 CCF 非专业级别软件能力认证第一轮(CSP-S1)提高级

    C++语言试题,认证时间:2021 年 9 月 19 日 09:30~11:30 考生注意事项: l 试题纸共有 16 页,答题纸共有 1 页,满分 100 分.请在答题纸上作答,写在试题纸上的 一律 ...

  5. 非专业级软件能力认证(CSP-J/S)

    目录 主办方:★★★★★ 中国计算机学会(CCF) 考试内容:★★★★★ C++,分为CSP-J和CSP-S分别有两轮认证. 第一阶段:基础知识,数据结构(入门),第二阶段:算法,上机操作(上机,编程 ...

  6. CCF csp软件能力认证 第15次 第5题 管道清洁 java 100分

    题目csp模拟考试系统201812-5的题目. 我的java张老师是负责csp的,于是java的一个作业就是做这一套题.用java写,行,c++转java而已,写算法题嘛,基本语法懂了就好了,就边学边 ...

  7. CCF软件能力认证201604俄罗斯方块

    试题编号: 201604-2 试题名称: 俄罗斯方块 时间限制: 1.0s 内存限制: 256.0MB 问题描述: 问题描述 俄罗斯方块是俄罗斯人阿列克谢·帕基特诺夫发明的一款休闲游戏. 游戏在一个1 ...

  8. 2019 CCF CSP-J第一轮

    2019CCF非专业级别软件能力认证第一轮(初赛) A卷 (B卷=A卷,顺序不同) 听说这次CSP可能是最后一次,因为以后是NOIP了--好好纪念一下 第一部分 一.单项选择题(共15题,每题2分,共 ...

  9. 中国计算机学会推出 CSP 非专业级别认证

    23 日,中国计算机学会(CCF)公告推出 CSP 非专业级别的能力认证(CSP,Certified Software Professional,软件能力认证). CCF 于 2014 年推出 CSP ...

最新文章

  1. php.ini 中文版第二部分(关于这个配制文件)
  2. 软件工程的瀑布, 大泥球, 教堂,集市,和银弹
  3. html文档包包含几个基本标记,HTML中包含哪些基本的标记?
  4. Java常用类:String
  5. 调试人脸识别 无cpu版本出现的问题
  6. 【实用工具】adb检测android设备
  7. 致谢计算机组成原理老师的致谢,计算机组成原理课程报告(40页)-原创力文档...
  8. 存储容错:鱼与熊掌可以兼得
  9. 老鸟成长之路:菜鸟入门八种安全工具(转)
  10. 验证码原理详解与案例
  11. fedora14 官方下载地址
  12. html文件命名首字母大写,HTML制作中的文件夹及文件命名规范(一)
  13. ARPG游戏开发知识整理。
  14. mysql连接字符串_[MySQL] - MySQL连接字符串总结
  15. 浅谈sketch插件二
  16. 迪杰斯特拉(Dijkstra)算法最通俗易懂的讲解
  17. 明光市机器人_明光市安保巡逻机器人在线咨询
  18. MSDN如何找到和打开
  19. 《小强升职记》作者谈“怎样达成目标”
  20. 《惢客创业日记》2019.01.21(周一)你还记得米卢吗?

热门文章

  1. vue作用域插槽,你真的懂了吗?
  2. 【文件上传漏洞绕过方式】
  3. 实际地址转换成经纬度
  4. idea设置背景颜色为绿色,保护眼睛
  5. 心理学上22条关于生活、情绪与交往间的习惯
  6. Git error-fatal-Needed a single revision
  7. FME中二维管线数据三维化及生成带属性3dtiles
  8. vue项目优化——Webpack的externals的理解
  9. sqlserver 分组合并列_夺冠!中国队国际奥数大赛再称雄,满分选手已保送清华姚班,“中国二队”并列第一...
  10. Scrapy教程1--7