CCF编程能力等级认证GESP—C++1级—20230611

2023-12-07 16:36

本文主要是介绍CCF编程能力等级认证GESP—C++1级—20230611,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

CCF编程能力等级认证GESP—C++1级—20230611

  • 单选题(每题 2 分,共 30 分)
  • 判断题(每题 2 分,共 20 分)
  • 编程题 (每题 25 分,共 50 分)
    • 时间规划
    • 累计相加
  • 答案及解析
    • 单选题
    • 判断题
    • 编程题1
    • 编程题2

单选题(每题 2 分,共 30 分)

1、以下不属于计算机输出设备的有( )。

A. 麦克风
B. 音箱
C. 打印机
D. 显示器

2、ChatGPT 是 OpenAI 研发的聊天机器人程序,它能通过理解和学习人类的语言来进行对话,还能根据聊天的上下文进行互动,完成很多工作。请你猜猜看,下面任务中,ChatGPT 不能完成的是( )。

A. 改邮件
B. 编剧本
C. 擦地板
D. 写代码

3、常量’3’的数据类型是( )。

A. double
B. float
C. char
D. int

4、下列关于 C++语言变量的叙述,正确的是( )。

A. 变量可以没有定义
B. 对一个没有定义的变量赋值,相当于定义了一个新变量
C. 执行赋值语句后,变量的类型可能会变化
D. 执行赋值语句后,变量的值可能不会变化

5、以下可以作为 C++标识符的是( )。

A. number_of_Chinese_people_in_millions
B. 360AntiVirus
C. Man&Woman
D. break

6、以下哪个不是 C++语言的关键字?( )

A. double
B. else
C. while
D. endl

7、如果 a、b 和 c 都是 int 类型的变量,下列哪个语句不符合C++语法?( )

A. a = (b == c);
B. b = 5.5;
C. c = a + b + c;
D. a + c = b + c;

8、如果用一个 int 类型的变量 a 表达正方形的边长,则下列哪个表达式不能用来计算正方形的面积?( )

A. a * a
B. 1 * a * a
C. a ^ 2
D. a * 2 * a / 2

9、表达式(4 * (11 + 12) / 4)的计算结果为( )。

A. 47
B. 20
C. 23
D. 56

10、如果 a 为 int 类型的变量,且 a 的值为 6,则执行 a %= 4;之后,a 的值会是( )。

A. 1
B. 2
C. 3
D. 4

11、如果 a 和 b 均为 int 类型的变量,下列表达式能正确判断“a 等于0 且b等于0”的是( )。

A. (a == b == 0)
B. !(a || b)
C. (a + b == 0)
D. (a == 0) + (b == 0)

12、如果 a 和 b 为 int 类型的变量,且值分别为 7 和 2,则下列哪个表达式的计算结果不是 3.5?( )

A. 0.0 + a / b
B. (a + 0.0) / b
C. (0.0 + a) / b
D. a / (0.0 + b)

13、在下列代码的横线处填写( ),使得输出是"20 10"。

#include <iostream>using namespace std;int main(){int a = 10, b = 20;a = ________; //在此处填入代码b = a + b;a = b - a;cout << a << " " << b << endl; return 0;
}
A. a + b
B. b
C. a - b
D. b - a

14、. 在下列代码的横线处填写( ),可以使得输出是"147"。

#include <iostream>using namespace std;int main(){for (int i = 1; i <= 8; i++)if (________) // 在此处填入代码cout << i; return 0;
}
A. i % 2 == 1
B. i % 3 == 1
C. i = i + 3
D. i + 3

15、5. 执行以下 C++语言程序后,输出结果是( )。

#include <iostream>using namespace std;int main(){int sum;for (int i = 1; i <= 20; i++)if (i % 3 == 0 || i % 5 == 0)sum += i;cout << sum << endl;return 0;
}
A. 63
B. 98
C. 113
D. 无法确定

判断题(每题 2 分,共 20 分)

1、计算机硬件主要包括运算器、控制器、存储器、输入设备和输出设备。

2、诞生于 1958 年的 103 机是中国第一台通用数字电子计算机,比1946 年在美国诞生的第一台通用电子计算机 ENIAC 晚了十多年。

3、在 C++语言中,计算结果必须存储在变量中才能输出。

4、在 C++语言中,标识符的命名不能完全由数字组成,至少有一个字母就可以。

5、10 是一个 int 类型常量。

6、if 语句可以没有 else 子句。

7、do … while 语句的循环体至少会执行一次。

8、如果 a 和 b 为 int 类型的变量,则表达式 a = b 可以判断a 和b 是否相等。

9、如果 a 为 int 类型的变量,则表达式(a % 4 == 2)可以判断a 的值是否为偶数。

10、表达式(37 / 4)的计算结果为 9,且结果类型为 int。

编程题 (每题 25 分,共 50 分)

时间规划

【问题描述】
小明在为自己规划学习时间。现在他想知道两个时刻之间有多少分钟,你能通过编程帮他做到吗?
【输入描述】
输入 4 行,第一行为开始时刻的小时,第二行为开始时刻的分钟,第三行为结束时刻的小时,第四行为结束时刻的分钟。
输入保证两个时刻是同一天,开始时刻一定在结束时刻之前。时刻使用24小时制,即小时在 0 到 23 之间,分钟在 0 到 59 之间。
【输出描述】
输出一行,包含一个整数,从开始时刻到结束时刻之间有多少分钟。
【样例输入 1】
9
5
9
6
【样例输出 1】
1
【样例输入 2】
9
5
10
0
【样例输出 2】
55

累计相加

【问题描述】
输入一个正整数n,求形如:1 + (1 + 2) + (1 + 2 + 3) + (1 +2 +3 +4)+…⋯(1 + 2 + 3 + 4 + 5 + …⋯n)的累计相加。
【输入描述】
输入一个正整数。约定 1 ≤ n ≤ 100。
【输出描述】
输出累计相加的结果。
【样例输入 1】
3
【样例输出 1】
10
【样例输入 2】
4
【样例输出 2】
20
【样例输入 3】
10
【样例输出 3】
220

答案及解析

单选题

1、
【答案】A
【解析】考察计算机基础知识,输出指从计算机内部向外,输入指从外部向内,本题中B、C、D 三个选项均是从内部向外,只有A是接收声音并传入计算机,是从外部向内。

2、
【答案】C
【解析】本题根据题目中的资料提示:“它能通过理解和学习人类的语言”,判断GPT可以完成文本相关工作和任务,C选项擦地板不属于文本任务,其余三个选项均是文本任务。

3、
【答案】C
【考纲知识点】基本数据类型(一级)
【解析】本题属于考察 C++中的基本数据类型;C++中的基本数据类型有:整数型(int、long long)、实数型(float、double)、字符型(char)、布尔型(bool)。本题中’3’是用单引号引起来的单个字符 3 ,属于字符型 char,所以本题正确答案为C。

4、
【答案】D
【考纲知识点】变量的定义与使用(一级)
【解析】本题属于考察 C++程序的基本概念中的“变量”相关概念;A、B 选项错误都在于,变量需要“先定义,再使用”,没有定义过的变量无法直接“赋值”,故排除 A、B。C 选项错误在于,赋值操作不会改变变量数据类型,故排除C 选项。如果赋值语句右侧的表达式计算结果与左侧的变量原值相同,则执行赋值语句后变量的值不会变化,所以本题正确答案为 D。

5、
【答案】A
【考纲知识点】变量的定义与使用(一级)
【解析】在计算机编程语言中,“标识符”是用户编程时使用的名字,用于给变量、常量、函数等命名;C++中声明变量名时,变量名中能且只能包含字母、数字、下划线,且不能用数字开头。另外,C++中有一些关键字(如if、while、break等)这些关键字已被编程语言保留,不能用作标识符。选项中B、C、D均不满足要求,所以本题正确答案为 A。

6、
【答案】D
【考纲知识点】计算机基础与编程环境(一级)
【解析】本题考察对 C++关键字的认识;C++的关键字如下图所示:所以本题正确答案为 D。

在这里插入图片描述

7、
【答案】D
【考纲知识点】基本运算(一级)
【解析】本题属于考察 C++中的基本运算;首先要了解赋值运算符的使用规则,将符号右边的值赋值给符号左边的“变量”。
A 选项,符号右边是一个关系运算,运算结果是布尔类型,true 或者 false,对应的值是 1 或者0,可以直接赋值给整型变量,正确。
B 选项,实数类型的值可以赋值给 int 类型,结果只取整数部分,正确。
C 选项,符合要求,正确。
D 选项,赋值运算符左边是一个“算术运算”,而不是一个“变量”,所以本题正确答案为 D。

8、
【答案】C
【考纲知识点】基本运算(一级)
【解析】本题属于考察 C++的基本运算中的位运算;边长为a 的正方形的面积是a*a,A、B、D 的运算结果均正确。C 选项错误在于,^符号在一些其他语言中表示乘方运算,但在 C++中表示“异或运算符”,会将符号两边的值按二进制位进行异或运算,不满足要求,所以本题正确答案为 C。

9、
【答案】C
【考纲知识点】基本运算(一级)
【解析】本题属于考察 C++的基本运算中的运算优先级;小括号():优先级最高,括号内的计算最先进行,再按从左往右的顺序进行乘除法计算。所以本题正确答案为 C。

10、
【答案】B
【考纲知识点】基本运算(一级)
【解析】本题属于考察 C++的基本运算中的赋值运算;首先需要了解复合赋值运算符"%="的规则,a%=4 等价于 a=a%4,即先进行求余运算,再将得到的结果赋值给符号左边的变量。6 除以 4 的余数为 2,所以本题正确答案为B。

11、
【答案】B
【考纲知识点】基本运算(一级)
【解析】本题属于考察 C++的基本运算中的逻辑运算;
A 选项会先判断 a 和 b 是否相等,只有 a 和 b 不相等,a == b 表达式的值才为0,所以 A 选项判断是 a 不等于 b。
B 选项中,若!(a || b)为真,则(a||b)结果为 0,若 a 和 b 有任意一个不为0,(a||b)的值都为 1,所以当 a 等于 0 且 b 等于 0 时,(a || b)的结果才为0,!(a||b)的值才为 1。
C 选项判断的是 a+b 的和是否为 0,当 a 和 b 互为相反数时条件即可成立,a 和b不一定为 0。
D 选项判断的时表达式(a == 0)和表达式(b == 0)的和,只要a 和b 中有任意一个为0,最终表达式的值都大于 0,即为真。
所以本题正确答案为 B。

12、
【答案】A
【考纲知识点】基本运算(一级)
【解析】本题属于考察 C++的基本运算中的实数算数运算。B、C、D 选项中,小括号里的运算结果数据类型是“实数型”,与整数进行除法运算,结果依旧是实数,可以得到 3.5,正确。A 选项错误在于,除法运算优先级高于加法运算,两个整数 7 和 2 相除的结果是整数 3,再加上实数 0.0,得到的结果是3.0,不满足要求,所以本题正确答案为 A。

13、
【答案】C
【考纲知识点】基本运算(一级)
【解析】由于题目中没有分支、循环语句,可以尝试由结果反推。已知在第8行,输出“20 10”,因此此时 a 为 20、b 为 10。第 7 行对a 赋值后得到的就是第 8 行时 a 的值 20,而且 b 的值不变,可知第 7 行语句执行前a、b 分别为-10、10。同理,第 6 行对 b 赋值后得到的就是第 8 行时 b 的值10,而且a 的值不变,可知第 6 行语句执行前 a、b 分别为-10、20。于是,第5 行语句对a 赋值后,a的值应变为-10。第 5 行语句执行前,a 为 10、b 为 20,四个选项中,只有选项C 的表达式的计算结果为-10。所以本题正确答案为 C。

14、
【答案】B
【考纲知识点】循环结构、基本运算(一级)
【解析】本题主要考察 for 循环中变量的取值,与求余运算符的使用;可以使用代入法进行排除。
A 选项中,只有 i 为奇数,才会输出,输出结果为 1357,不满足题目要求。B 选项带入,1,4,7 除以 4 的刚好余 1,输出结果为147,满足题目要求。C 选项为赋值表达式,表达式的值为真,输出结果为 48,不满足要求。D 选项只要 i+3 的值不为 0 表达式都成立,输出结果为12345678,不满足要求所以本题正确答案为 B。

15、
【答案】D
【考纲知识点】变量的定义与使用(一级)
【解析】本题主要考察 C++程序基本概念中的变量定义规则,本题中,变量sum的作用是累加求和,定义在主函数内,但是并没有进行初始化,无法保证其初始值为 0,故运行结果无法确定,所以本题正确答案为 D。

判断题

1、
【答案】√
【考纲知识点】计算机基础(一级)
【解析】本题考察计算机基础知识中的计算机组成五大部分;分别是:存储器、控制器、运算器、输入设备和输出设备,所以本题正确。

2、
【答案】√
【考纲知识点】计算机的历史(一级)
【解析】本题属于对计算机历史的考察;中国第一台通用数字电子计算机于1958年 8 月研制成功,美国第一台通用电子计算机 ENIAC 诞生于1946 年2 月14日。所以本题正确。

3、
【答案】×
【考纲知识点】输入输出语句(一级)
【解析】本题考察计算机基本语言中的输出语句;输出语句可以直接输出表达式,输出的内容是表达式运算结果。所以本题错误。

4、
【答案】×
【考纲知识点】变量的定义与使用(一级)
【解析】本题考察 C++语言中标识符的命名规则;C++语言中,标识符的命名能且只能包含字母、数字、下划线,且不能用数字开头。可以没有字母,例如_123
是合理的标识符;有字母也可能不能作为标识符,例如2ab 不是合理的标识符。所以本题错误。

5、
【答案】√
【考纲知识点】基本数据类型(一级)
【解析】本题考察 C++语言中常量的概念;常量是固定值,在程序执行期间不会改变,可以是任何的基本数据类型,10 是一个整型常量,默认类型为int 类型。所以本题正确。

6、
【答案】√
【考纲知识点】选择结构(一级)
【解析】本题考察 C++中分支结构中的 if 语句,if…else…语句的区别;if…else… 语句中,当 if 语句条件不满足,会执行 else 中的语句;if 语句可以独立存在,条件满足,执行下级代码,条件不满足,跳过下级代码继续执行。所以本题正确。

7、
【答案】√
【考纲知识点】循环结构(一级)
【解析】本题主要考察 C++中的 do…while 语句执行逻辑;do…while 会先执行一次循环体,然后再判别表达式。当表达式结果为“真”时,返回重新执行循环体,如此反复,直到表达式结果为“假”为止,此时循环结束。所以本题正确。

8、
【答案】×
【考纲知识点】基本运算(一级)
【解析】本题考察 C++基本运算中关系运算符的使用;C++中,判断相等需要使用两个等于号( == ),一个等于号( = )是赋值符号。所以本题错误。

9、
【答案】×
【考纲知识点】基本运算(一级)
【解析】本题主要考察 C++基本运算中的求余运算,与偶数判断;偶数是指在整数中能被 2 整除的数。题中表达式表达“被 4 除余 2”,这样的数一定是偶数,但偶数不一定满足该条件。例如,4 是偶数,被 4 除余0。所以本题错误。

10、
【答案】√
【考纲知识点】基本运算(一级)
【解析】本题主要考察 C++基本运算中的整数除法运算;在C++语言中,除号/
左右均为整数类型时,表示整数除法,运算结果向下取整(舍弃小数部分),且结果为整数类型。所以本题正确。

编程题1

【题目大意】时间转换问题,输入开始时刻和结束时刻,时刻使用24 小时制,保证两个时刻是同一天,且开始时刻一定在结束时刻之前,计算两者中间的时间,转化为分钟进行输出。
【考纲知识点】变量的定义与使用、顺序结构、基本运算、输入输出语句(一级)
【解题思路】
按题目要求定义好需要的变量,并实现输入;
利用结束时刻的小时减开始时刻的小时,结果乘 60,得到小时数之差对应的分钟数;
利用结束时刻的分钟减开始时刻的分钟,得到分钟数之差;将将上述结果相加并输出;

#include <iostream>using namespace std;int main() {int h1, m1, h2, m2;  // 定义需要的变量cin >> h1 >> m1;  // 输入开始时刻的小时 h1,开始时刻的分钟m1cin >> h2 >> m2;  // 输入结束时刻的小时 h2,结束时刻的分钟m2cout << (h2 - h1) * 60 + (m2 - m1) << endl;return 0;
}

编程题2

【题目大意】多项式求和问题,多项式的每一项,都是从1 开始,累加到当前项数结束。累加每项之和求出整个多项式的和。
【考纲知识点】循环结构、基本运算、输入输出语句(一级)
【解题思路】
1 分析出参与求和运算的每一项的规律:第 1 项为 1,第2 项从1 开始加到2,第 3 项从 1 开始加到 3,依次类推,第 i 项从 1 开始一直加到当前项数i,利用求和公式可以表示为(i+1)*i/2;
2 借助 for 循环,把每个多项式的结果累加到 sum 中;3. 按要求完成输入和输出。
解题过程中应注意变量 sum 初始化,循环条件 i <= n 是否包含等于情况,表达式(i+1)*i/2 的运算顺序等问题。
如果不了解等差数列求和公式,也可以使用二重循环解题,需要更加注意循环条件的处理。

#include <iostream>using namespace std;int main() {int n;cin >> n;int sum = 0;  // 定义计数变量 sum 初始化为 0,用于累加求和for (int i = 1; i <= n; i++)  // 遍历每一项,i 表示当前项数sum += (i + 1) * i / 2;  // 把每个多项式的值累加到sum 中求和cout << sum << endl;  // 输出结果return 0;
}

这篇关于CCF编程能力等级认证GESP—C++1级—20230611的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/466575

相关文章

C++中初始化二维数组的几种常见方法

《C++中初始化二维数组的几种常见方法》本文详细介绍了在C++中初始化二维数组的不同方式,包括静态初始化、循环、全部为零、部分初始化、std::array和std::vector,以及std::vec... 目录1. 静态初始化2. 使用循环初始化3. 全部初始化为零4. 部分初始化5. 使用 std::a

shell编程之函数与数组的使用详解

《shell编程之函数与数组的使用详解》:本文主要介绍shell编程之函数与数组的使用,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录shell函数函数的用法俩个数求和系统资源监控并报警函数函数变量的作用范围函数的参数递归函数shell数组获取数组的长度读取某下的

SpringSecurity JWT基于令牌的无状态认证实现

《SpringSecurityJWT基于令牌的无状态认证实现》SpringSecurity中实现基于JWT的无状态认证是一种常见的做法,本文就来介绍一下SpringSecurityJWT基于令牌的无... 目录引言一、JWT基本原理与结构二、Spring Security JWT依赖配置三、JWT令牌生成与

C++ vector的常见用法超详细讲解

《C++vector的常见用法超详细讲解》:本文主要介绍C++vector的常见用法,包括C++中vector容器的定义、初始化方法、访问元素、常用函数及其时间复杂度,通过代码介绍的非常详细,... 目录1、vector的定义2、vector常用初始化方法1、使编程用花括号直接赋值2、使用圆括号赋值3、ve

如何高效移除C++关联容器中的元素

《如何高效移除C++关联容器中的元素》关联容器和顺序容器有着很大不同,关联容器中的元素是按照关键字来保存和访问的,而顺序容器中的元素是按它们在容器中的位置来顺序保存和访问的,本文介绍了如何高效移除C+... 目录一、简介二、移除给定位置的元素三、移除与特定键值等价的元素四、移除满足特android定条件的元

Python获取C++中返回的char*字段的两种思路

《Python获取C++中返回的char*字段的两种思路》有时候需要获取C++函数中返回来的不定长的char*字符串,本文小编为大家找到了两种解决问题的思路,感兴趣的小伙伴可以跟随小编一起学习一下... 有时候需要获取C++函数中返回来的不定长的char*字符串,目前我找到两种解决问题的思路,具体实现如下:

C++ Sort函数使用场景分析

《C++Sort函数使用场景分析》sort函数是algorithm库下的一个函数,sort函数是不稳定的,即大小相同的元素在排序后相对顺序可能发生改变,如果某些场景需要保持相同元素间的相对顺序,可使... 目录C++ Sort函数详解一、sort函数调用的两种方式二、sort函数使用场景三、sort函数排序

SpringSecurity6.0 如何通过JWTtoken进行认证授权

《SpringSecurity6.0如何通过JWTtoken进行认证授权》:本文主要介绍SpringSecurity6.0通过JWTtoken进行认证授权的过程,本文给大家介绍的非常详细,感兴趣... 目录项目依赖认证UserDetailService生成JWT token权限控制小结之前写过一个文章,从S

Java调用C++动态库超详细步骤讲解(附源码)

《Java调用C++动态库超详细步骤讲解(附源码)》C语言因其高效和接近硬件的特性,时常会被用在性能要求较高或者需要直接操作硬件的场合,:本文主要介绍Java调用C++动态库的相关资料,文中通过代... 目录一、直接调用C++库第一步:动态库生成(vs2017+qt5.12.10)第二步:Java调用C++

C/C++错误信息处理的常见方法及函数

《C/C++错误信息处理的常见方法及函数》C/C++是两种广泛使用的编程语言,特别是在系统编程、嵌入式开发以及高性能计算领域,:本文主要介绍C/C++错误信息处理的常见方法及函数,文中通过代码介绍... 目录前言1. errno 和 perror()示例:2. strerror()示例:3. perror(