老师已为大家备好电子打印版,需要完整电子版文件的朋友,可以拉到文末查看。 【答案解析】
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++的关键字/保留字,罗列如下表所示——
4.解释:答案选A。
详细解析见下图—— 5.解释:答案选A。
详细解析见下图—— 相关知识点的复习与拓展:
截止考试当年6月,cout 输出 bool 值时,默认输出1(表示 true ),而不是字符串"true"。如果希望默认输出字符串"true",需要使用 std::boolalpha,详细解析见下图—— 6.解释:答案选C。
本题考察对于 switch 语句的理解,当没有使用 break 将各种分支情况隔离开时,会执行所有分支情况的语句,详见下图。
7.解释:答案选D。
详细解析见下图—— 相关知识点的复习与拓展:
截至考试当年9月,C++有关逻辑运算符的相关知识点,详见下图——
8.解释:答案选B。
要实现"用最少数量的纸币凑出金额 N"的目标,需要遵循贪心算法的思路:优先使用面额大的纸币。
● 第5行代码 M5 = N / 5; 表示5元纸币的数量,即N中最多能包含几个5元。
● 在使用了M5张5元纸币后,剩余的金额应该用2元纸币和1元纸币来凑。剩余金额为 N - M5 * 5 ,所以2元纸币的数量M2应该是剩余金额除以2,即 M2 = (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。
详细解析见下图—— 10.解释:答案选C。
详细解析见下图—— 相关知识点的复习与拓展:
截至考试当年6月,在循环内执行
break语句和continue语句的机制区别,详细解析见下图——11.解释:答案选D。
详细解析见下图—— 12.解释:答案选D。
详细解析见下图—— 13.解释:答案选A。
详细解析见下图—— 14.解释:答案选B。
详细解析见下图——15.解释:答案选D。
题干代码存在设计缺陷(例如,修改变量 M 导致后续无法使用原值),但在选项D的情况下,由于在第一次循环就命中条件并 break,M 值未被修改,因此输出正确。详细解析见下图—— 【答案解析】
1.解释:错误。 详细解析见下图——相关知识点的复习与拓展:
截至考试当年9月,ASCII码的码值对照,详见下图——
2.解释:错误。 C++中对于负数的取模运算,就是正常取余后保留负号。 3.解释:错误。
详细解析见下图——4.解释:正确。
详细解析见下图—— 5.解释:错误。
请特别注意,C++语言的关键字列表中不包含 scanf ,变量名 scanf 符合变量名的命名原则,故本题答案为错误。但是,实际操作中强烈不推荐将 scanf 、printf 、cin 、cout 等用作变量名。
相关知识点的复习与拓展: 截至考试当年6月份,根据C++变量的命名规则,C++变量在命名时需要满足:
①变量名只能由大小写字母、数字和下划线
_组成;②首位字符不能是数字;
③变量名不能是C++中的关键字(保留字)。
下图为截至本次考试当年6月份,有关C++的关键字/保留字,罗列如下表所示——
6.解释:错误。
详细解析见下图—— 相关知识点的复习与拓展:
截至考试当年6月,在循环内执行
break语句和continue语句的区别,详细解释下图——
7.解释:错误。
详细解析见下图—— 8.解释:正确。
详细解析见下图—— 9.解释:正确。
详细解析见下图——
10.解释:正确。
GESP(Grade Examination of Software Programming)测试是一个通用的入门级认证考试,评估认证者在计算机编程和软件开发方面的基本能力,而不是特定于某种编程语言。虽然在实际应用中,编程语言的选择可能会对解决问题的方法和效率产生影响,但是GESP认证更侧重于对基本编程概念和解决问题的一般方法的评估,而不是特定语言的高级特性或库的掌握程度。因此,可以认为在GESP测试中,不同编程语言的使用对于获得相同级别的认证基本上是无关紧要的。
GESP 2024年6月 C++二级 平方之和 参考解法1
#include<iostream>//暴力枚举+剪枝#include<cmath>using namespace std;// 判断 a 是否可以表示为两个正整数的平方和boolisSumOfTwoSquares(int a){//数据量不大时,暴力枚举是优先考虑的应试型解法if (a < 2) return false; // 最小的平方和是 1+1=2for (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++二级 平方之和 参考解法2
#include<iostream>//预打表#include<cmath>#include<vector>using namespace std;const int MAX_NUM = 1e6; // 题目中a_i的最大值vector<bool> is_valid(MAX_NUM + 1, false); // 打表数组,is_valid[x]为true表示x可表示为两个正整数平方和// 预打表函数:初始化is_valid数组voidprecompute(){// 枚举第一个数x,x≥1,x² ≤ MAX_NUMfor (int x = 1; x * x <= MAX_NUM; ++x) {// 枚举第二个数y,y≥1,x² + y² ≤ MAX_NUMfor (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++二级 计数 参考解法1
#include<iostream>//算术取位法using namespace std;intmain(){int n, k;cin >> n >> k; // 读取n和kint 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,计数+1count++;}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;}课程体系——
需要无水印PDF格式文件, 或者课程体系咨询, 欢迎扫描下面二维码添加好友垂询。
▍ 声明:本文整理自网络,如有侵权,请联系删除。
本公号刊载此文,是出于合法合理地分享和传播信息,扩大大受众范围,促进学术交流,推动共同进步之目的。公众号持有人郑重声明,本文的发布,将严格遵守相关规定和法律法规,不侵犯任意潜在作者的权益,不改变引用原文(若有)的意图和内容。若有来源标注错误或侵犯了您的合法权益,请随时与我们联系协商,联系(QQ):993225721,我们将及时更正、删除。文章若有幸得到转载,首先,公众号持有人感谢转载人为读者阅读提供了有价值的信息和知识,希望文章能够在被转载的平台上得到更广泛的传播和交流;其次,转载人应充分考虑到转载动作本身所可能带来的相应的风险和责任,包括但不限于侵犯知识产权、侵犯他人权益等行为所引起的法律责任,确保本文的合法传播和使用。同时,本人也极其愿意在转载过程中尽力配合转载人了解、关注、规避、消除相关的潜在风险。若转载人有相任何关疑虑,同样欢迎随时与我们联系协商,联系(QQ):993225721。 喜欢您关注我们哦——














































