GESP:2024年6月 C++二级 真题及解析

四季读书网 2 0
GESP:2024年6月 C++二级 真题及解析
老师已为大家备好电子打印版,需要完整电子版文件的朋友,可以拉到文末查看
GESP:2024年6月 C++二级 真题及解析 第1张
GESP:2024年6月 C++二级 真题及解析 第2张
GESP:2024年6月 C++二级 真题及解析 第3张
GESP:2024年6月 C++二级 真题及解析 第4张
GESP:2024年6月 C++二级 真题及解析 第5张
GESP:2024年6月 C++二级 真题及解析 第6张
GESP:2024年6月 C++二级 真题及解析 第7张
GESP:2024年6月 C++二级 真题及解析 第8张

【答案解析】

1.解释:答案选C。
GESP认证考试截至本次认证,可选语言有三种,分别是Scratch、Python和C++。

2.解释:答案选B。

本题通过流程图体现分支结构,条件判断框中填写闰年的判定条件:年份是4的倍数时,且不是100的倍数时,该年是闰年;或者,当年份是400的倍数时才是闰年。

相关知识点的复习与拓展:

截至考试当年6月,常见的判断闰年的C++代码的写法,举例如下——

boolisLeapYear(int year) { //判断是否为闰年的函数    // 闰年规则:能被4整除且不能被100整除, 或 能被400整除     return (year % 4 == 0 && year % 100 != 0) || (year % 400 == 0); }

3.解释:答案选A。

本题考察C++变量的命名规则。变量命名时需要满足:

①变量名只能由大小写字母、数字和下划线 _ 组成;

②首位字符不能是数字;

③变量名不能是C++中的关键字(保留字)。

选项A中,变量名包含了其他字符'-',不符合命名规则。
相关知识点的复习与拓展:

下图为截至本次考试当年6月份,有关C++的关键字/保留字,罗列如下表所示——

GESP:2024年6月 C++二级 真题及解析 第9张

4.解释:答案选A。

详细解析见下图——
GESP:2024年6月 C++二级 真题及解析 第10张

5.解释:答案选A。

详细解析见下图——
GESP:2024年6月 C++二级 真题及解析 第11张

相关知识点的复习与拓展:

截止考试当年6月,cout 输出 bool 值时,默认输出1(表示 true ),而不是字符串"true"。如果希望默认输出字符串"true",需要使用 std::boolalpha详细解析见下图——
GESP:2024年6月 C++二级 真题及解析 第12张

6.解释:答案选C。

本题考察对于 switch 语句的理解,当没有使用 break 将各种分支情况隔离开时,会执行所有分支情况的语句,详见下图。

GESP:2024年6月 C++二级 真题及解析 第13张

7.解释:答案选D。

详细解析见下图——
GESP:2024年6月 C++二级 真题及解析 第14张

相关知识点的复习与拓展:

截至考试当年9月,C++有关逻辑运算符的相关知识点,详见下图——

GESP:2024年6月 C++二级 真题及解析 第15张

8.解释:答案选B。

要实现"用最少数量的纸币凑出金额 N"的目标,需要遵循贪心算法的思路:优先使用面额大的纸币。

● 第5行代码 M5 = N / 5;  表示5元纸币的数量,即N中最多能包含几个5元。

● 在使用了M5张5元纸币后,剩余的金额应该用2元纸币和1元纸币来凑。剩余金额为 N - M5 * 5 ,所以2元纸币的数量M2应该是剩余金额除以2,即 M= (N - M5 * 5) / 2 ,这就是第1横线处应填的内容。

● 在使用了M5张5元纸币和M2张2元纸币后,剩下的金额就只能用1元纸币来凑了,剩下的金额为 N - M5 * 5 - M2 * 2,所以1元纸币的数量M1 = N - M5 * 5 - M2 * 2,这就是第2横线处应填的内容。

‌最终答案‌,选项B正确。

9.解释:答案选C。

详细解析见下图——
GESP:2024年6月 C++二级 真题及解析 第16张

10.解释:答案选C。

详细解析见下图——
GESP:2024年6月 C++二级 真题及解析 第17张

相关知识点的复习与拓展:

截至考试当年6月,在循环内执行break 语句和continue语句的机制区别,详细解析见下图——

GESP:2024年6月 C++二级 真题及解析 第18张

11.解释:答案选D。

详细解析见下图——
GESP:2024年6月 C++二级 真题及解析 第19张

12.解释:答案选D。

详细解析见下图——
GESP:2024年6月 C++二级 真题及解析 第20张

13.解释:答案选A。

详细解析见下图——
GESP:2024年6月 C++二级 真题及解析 第21张

14.解释:答案选B。

详细解析见下图——
GESP:2024年6月 C++二级 真题及解析 第22张
GESP:2024年6月 C++二级 真题及解析 第23张

15.解释:答案选D。

题干代码存在设计缺陷(例如,修改变量 M 导致后续无法使用原值),但在选项D的情况下,由于在第一次循环就命中条件并 breakM 值未被修改,因此输出正确。详细解析见下图——
GESP:2024年6月 C++二级 真题及解析 第24张
GESP:2024年6月 C++二级 真题及解析 第25张
GESP:2024年6月 C++二级 真题及解析 第26张

【答案解析】

1.解释:错误。
详细解析见下图——
GESP:2024年6月 C++二级 真题及解析 第27张

相关知识点的复习与拓展:

截至考试当年9月,ASCII码的码值对照,详见下图——

GESP:2024年6月 C++二级 真题及解析 第28张
2.解释:错误。
C++中对于负数的取模运算,就是正常取余后保留负号。

3.解释:错误。

详细解析见下图——
GESP:2024年6月 C++二级 真题及解析 第29张

4.解释:正确。

详细解析见下图——
GESP:2024年6月 C++二级 真题及解析 第30张

5.解释:错误。

请特别注意,C++语言的关键字列表中不包含 scanf ,变量名 scanf 符合变量名的命名原则,故本题答案为错误。但是,实际操作中强烈不推荐将 scanf 、printf 、cin 、cout 等用作变量名。

相关知识点的复习与拓展:

截至考试当年6月份,根据C++变量的命名规则,C++变量在命名时需要满足:

①变量名只能由大小写字母、数字和下划线 _ 组成;

②首位字符不能是数字;

③变量名不能是C++中的关键字(保留字)。

下图为截至本次考试当年6月份,有关C++的关键字/保留字,罗列如下表所示——

GESP:2024年6月 C++二级 真题及解析 第31张

6.解释:错误。

详细解析见下图——
GESP:2024年6月 C++二级 真题及解析 第32张
GESP:2024年6月 C++二级 真题及解析 第33张
GESP:2024年6月 C++二级 真题及解析 第34张

相关知识点的复习与拓展:

截至考试当年6月,在循环内执行break 语句和continue语句的区别,

详细解释下图——

GESP:2024年6月 C++二级 真题及解析 第35张

7.解释:错误。

详细解析见下图——
GESP:2024年6月 C++二级 真题及解析 第36张

8.解释:正确。

详细解析见下图——
GESP:2024年6月 C++二级 真题及解析 第37张

9.解释:正确。

详细解析见下图——

GESP:2024年6月 C++二级 真题及解析 第38张

10.解释:正确。

GESP(Grade Examination of Software Programming)测试是一个通用的入门级认证考试,评估认证者在计算机编程和软件开发方面的基本能力,而不是特定于某种编程语言。虽然在实际应用中,编程语言的选择可能会对解决问题的方法和效率产生影响,但是GESP认证更侧重于对基本编程概念和解决问题的一般方法的评估,而不是特定语言的高级特性或库的掌握程度。因此,可以认为在GESP测试中,不同编程语言的使用对于获得相同级别的认证基本上是无关紧要的。

GESP:2024年6月 C++二级 真题及解析 第39张

GESP 2024年6月 C++二级 平方之和  参考解法1

#include<iostream>//暴力枚举+剪枝#include<cmath>using namespace std;  // 判断 a 是否可以表示为两个正整数的平方和boolisSumOfTwoSquares(int a){//数据量不大时,暴力枚举是优先考虑的应试型解法    if (a < 2return false// 最小的平方和是 1+1=2    for (int x = 1; x * x <= a; ++x) {        int rem = a - x * x;        int y = sqrt(rem);        if (y * y == rem && y >= 1) {            return true;        }    }    return false;}intmain(){        int n;    cin >> n;    while (n--) {        int a;        cin >> a;        if (isSumOfTwoSquares(a)) {            cout << "Yes\n";        } else {            cout << "No\n";        }    }    return 0;}

代码思路——
GESP:2024年6月 C++二级 真题及解析 第40张

GESP 2024年6月 C++二级 平方之和  参考解法2

#include<iostream>//预打表#include<cmath>#include<vector>using namespace std;const int MAX_NUM = 1e6// 题目中a_i的最大值vector<boolis_valid(MAX_NUM + 1false)// 打表数组,is_valid[x]为true表示x可表示为两个正整数平方和// 预打表函数:初始化is_valid数组voidprecompute(){    // 枚举第一个数x,x≥1,x² ≤ MAX_NUM    for (int x = 1; x * x <= MAX_NUM; ++x) {        // 枚举第二个数y,y≥1,x² + y² ≤ MAX_NUM        for (int y = 1; x * x + y * y <= MAX_NUM; ++y) {            int sum = x * x + y * y;            is_valid[sum] = true// 标记该数满足条件        }    }}intmain(){    // 程序启动时先预打表,仅执行一次    precompute();     int n;    cin >> n;    while (n--) {        int a;        cin >> a;        // 直接查表,O(1)时间判断        cout << (is_valid[a] ? "Yes" : "No") << '\n';    }    return 0;}
代码思路——
GESP:2024年6月 C++二级 真题及解析 第41张
GESP:2024年6月 C++二级 真题及解析 第42张
GESP:2024年6月 C++二级 真题及解析 第43张

GESP 2024年6月 C++二级 计数  参考解法1

#include<iostream>//算术取位法using namespace std;intmain(){    int n, k;    cin >> n >> k;  // 读取n和k    int count = 0;    for (int i = 1; i <= n; ++i) {  // 遍历1到n的所有数        int num = i;  // 保存当前数的副本,将副本用于逐位分解        while (num > 0) {  // 逐位分解            int digit = num % 10;  // 取当前最低位            if (digit == k) {  // 如果该位等于k,计数+1                count++;            }            num /= 10;  // 移除最低位,继续处理下一位        }    }    cout << count << endl;  // 输出结果    return 0;}

GESP 2024年6月 C++二级 计数  参考解法2

#include<iostream>//字符转换法#include<string>//操作字符串变量所必需头文件using namespace std;intmain(){    int n, k;    cin >> n >> k;    int count = 0;    for (int i = 1; i <= n; i++) {        string s = to_string(i);  // 把数字转成字符串        for (char c : s) {            if (c - '0' == k) {   // 字符转数字后比较                count++;            }        }    }    cout << count << endl;    return 0;}
GESP:2024年6月 C++二级 真题及解析 第44张

课程体系——

GESP:2024年6月 C++二级 真题及解析 第45张
需要无水印PDF格式文件,
或者课程体系咨询,
欢迎扫描下面二维码添加好友垂询。
GESP:2024年6月 C++二级 真题及解析 第46张

GESP:2024年6月 C++二级 真题及解析 第47张

▍ 声明:本文整理自网络,如有侵权,请联系删除。

本公号刊载此文,是出于合法合理地分享和传播信息,扩大大受众范围,促进学术交流,推动共同进步之目的。公众号持有人郑重声明,本文的发布,将严格遵守相关规定和法律法规,不侵犯任意潜在作者的权益,不改变引用原文(若有)的意图和内容。若有来源标注错误或侵犯了您的合法权益,请随时与我们联系协商,联系(QQ):993225721,我们将及时更正、删除。文章若有幸得到转载,首先,公众号持有人感谢转载人为读者阅读提供了有价值的信息和知识,希望文章能够在被转载的平台上得到更广泛的传播和交流;其次,转载人应充分考虑到转载动作本身所可能带来的相应的风险和责任,包括但不限于侵犯知识产权、侵犯他人权益等行为所引起的法律责任,确保本文的合法传播和使用。同时,本人也极其愿意在转载过程中尽力配合转载人了解、关注、规避、消除相关的潜在风险。若转载人有相任何关疑虑,同样欢迎随时与我们联系协商,联系(QQ):993225721。

喜欢您关注我们哦——

抱歉,评论功能暂时关闭!