下面的 C++ 用于对 lstA 排序,使得偶数在前奇数在后,横线处应填入( )。
bool isEven(int N)
{
return N % 2 == 0;
}
void swap(int &a, int &b)
{
int t;
t=a,a=b,b=t;
return;
}
void sortA(int lstA[], int n)
{
int i,j,t;
for (i = n-1; i > 0; i--)
for (j = 0; j < i; j++)
if(______________________)
swap(lstA[j], lstA[j+1]);
return;
}这题考的是冒泡排序里交换条件的写法。既然要偶数在前、奇数在后,就得让奇数往后沉。拿到题先想:偶数在前意味着什么?意味着遇到‘前奇后偶’的情况必须交换。所以条件就是判断 lstA[j] 是不是奇数且 lstA[j+1] 是不是偶数。
学生最容易掉进两个坑:一是把逻辑搞反,选了 B 项,以为偶数也要沉底,结果排成奇数在前;二是完全没看懂题意,机械套用冒泡排序模板,选了 C 或 D 这种数值比较,把奇偶顺序彻底打乱。还有一个细节坑,就是非号的位置,初学者常漏掉或者放错位置,导致判断条件正好相反。
【考点定位】这道题考查《GESP 大纲》五级 C++ 程序设计模块中的“算法实现与调试”,具体落点是冒泡排序的交换逻辑以及自定义比较条件的设计。命题人专门设计这道题,就是想卡住两类考生:一类是背过冒泡排序模板但没理解“比较条件决定排序方向”本质的人,另一类是分不清逻辑非在条件判断里位置的人。
【解题思维】拿到这道题,别急着看选项,先自己在脑子里过一遍冒泡排序的流程。冒泡排序每轮把“较大”的元素沉底,所以交换条件必须让“当前判断为较大”的那一侧元素后移。题目要求偶数在前、奇数在后,等价于把奇数沉底。因此只要 lstA[j] 是奇数且 lstA[j+1] 是偶数,就交换——奇数前移、偶数沉底。对应逻辑表达式:!isEven(lstA[j]) && isEven(lstA[j+1])。
【逐项分析】 A 项:!isEven(lstA[j]) && isEven(lstA[j+1])。这是正确答案。它的意思是“前一个不是偶数(即奇数)且后一个是偶数”,正好触发交换,把奇数往后送,偶数往前挪,最终奇数全在偶数后面。 B 项:isEven(lstA[j]) && !isEven(lstA[j+1])。这是反了。它会让偶数沉底,结果排序成奇数在前,正误颠倒。很多学生看到冒泡排序模板就下意识选这个,忘了题目要的是偶数在前。 C 项:lstA[j] > lstA[j+1]。这是偷换条件。题目只关心奇偶,不关心数值大小。C 是降序冒泡,D 是升序冒泡,两者都会把数组按数值排好,但奇偶顺序完全不受控,肯定错。 D 项:lstA[j] < lstA[j+1]。同样是数值比较,逻辑方向反了,而且跟奇偶无关,排除。
【避坑指南】填空时最容易错的就是非号的位置。初学者常误写成 isEven(lstA[j]),导致逻辑反转。一定要记住:题目要偶数在前,就得让奇数沉底,所以判断奇数要用非号。
【考频与趋势】指针与内存:题库共考过 77 题,覆盖 6 个考试级别(2007-2026);逐年分布:2007 年 1 题、2023 年 13 题、2024 年 17 题、2025 年 25 题、2026 年 16 题、null 年 5 题;分赛事:GESP 五级 22 题、GESP 七级 18 题、GESP 四级 17 题、GESP 六级 16 题、GESP 八级 3 题、NOIP 普及组 初赛 1 题。指针与引用:题库共考过 99 题,覆盖 8 个考试级别(2007-2026);逐年分布:2007 年 1 题、2015 年 1 题、2017 年 1 题、2022 年 1 题、2023 年 16 题、2024 年 20 题、2025 年 25 题、2026 年 20 题、null 年 14 题;分赛事:GESP 四级 24 题、GESP 五级 22 题、GESP 七级 18 题、GESP 六级 16 题、CSP 入门级 13 题、GESP 八级 3 题、NOIP 普及组 初赛 2 题、NOIP 提高组 初赛 1 题。STL 标准库:题库共考过 112 题,覆盖 4 个考试级别(2023-2026);逐年分布:2023 年 13 题、2024 年 22 题、2025 年 47 题、2026 年 26 题、null 年 4 题;分赛事:GESP 五级 65 题、GESP 六级 24 题、GESP 八级 15 题、GESP 七级 8 题。STL 容器基础:题库共考过 127 题,覆盖 8 个考试级别(2011-2026);逐年分布:2011 年 1 题、2013 年 2 题、2023 年 14 题、2024 年 22 题、2025 年 47 题、2026 年 37 题、null 年 4 题;分赛事:GESP 五级 70 题、GESP 六级 28 题、GESP 八级 15 题、GESP 七级 8 题、NOIP 普及组 初赛 2 题、GESP 四级 2 题、NOIP 提高组 初赛 1 题、CSP 入门级 1 题。
【预测】基于给定数据与经验,暂无足够依据预测未来可能怎么考。