GESP认证C++编程真题解析 | 202506 二级

📅 2026/7/18 10:45:21
GESP认证C++编程真题解析 | 202506 二级
附上汇总帖GESP认证C编程真题解析 | 汇总单选题第1题2025年4⽉19⽇在北京举⾏了⼀场颇为瞩⽬的⼈形机器⼈半程马拉松赛。⽐赛期间跑动着的机器⼈会利用⾝上安装的多个传感器所反馈的数据来调整姿态、保持平衡等那么这类传感器类似于计算机的 。A.处理器B.存储器C.输入设备D.输出设备【答案】C【解析】传感器的功能是采集数据属于输入设备。第2题小明购置的计算机使⽤⼀年后觉得内存不够⽤了想购置⼀个容量更⼤的内存条这时他需要的内存条是 。A.RAMB.ROMC.CACHED.EPROM【答案】A【解析】内存属于RAMROM、CACHE、EPROM分别为只读存储器、高速缓冲存储器、可擦变成只读存储器。第3题下⾯C代码执行后的输出是 。inta3;floatb3.5;cout(a*b);A.3B.3.5C.10D.11【答案】C【解析】两者在赋值语句相互运算时会转化为小数类型得到结果后又被放回int类型的整数a所以最后选择答案为整数10。第4题下⾯C代码用于获得正整数的第3位数如1234则输出2。如果是⼀位数或两位数则输出0。横线处应填入的代码是 。intN,remainder;cout请输入正整数:;cinN;cout______;A.N % 1000 / 100B.N / 1000 % 100C.N / 1000 / 100D.N % 100 / 100【答案】A【解析】若想要获得右数第三个数位上的数字需先将第三位提到首位再将首位取出。N%1000可以将数字截取至只剩后三位再整除100即可。第5题下⾯C代码执行其输出是 。inta,b(6,28);ba;ab;couta b;A.6 28B.6 6C.28 6D.28 28【答案】D【解析】 为条件判断符号而不是赋值符号所以 b 的值没有变化而 a 进行了赋值语句所以会变为 b 的值28。第6题今天星期六其后第N天星期几如果是星期⼀到星期六输出形如星期1、星期2等星期天则输出星期天。下⾯的C代码用于完成上述要求横线处应填上的代码是 。intN,remainder;cinN;remainder______;if(remainder0)printf(星期六后第%d天是星期天\n,N);elseprintf(星期六后第%d天是星期%d\n,N,remainder);A.(N 6) / 7B.(N 6) // 7C.N % 7D.(N 6) % 7【答案】D【解析】通过取余将数据控制在某一范围之内当前天是周六所以 6N 天后的星期数再把整周的除去最后剩下的余数就是今天的日期第7题下⾯的C代码执行后其输出是 。inti,Sum0;for(i1;i10;i){Sumi;if(i%2)continue;if(i%7)break;}coutSum;A.45B.28C.3D.0【答案】C【解析】通该题考察程序的取余运算如果循环变量i取余2不为0则跳过当次循环、若取余7不为0则直接退出整个循环。计算得sum值为3。第8题下⾯C代码执行后其输出是 。inti,j;for(i1;i12;i)for(j1;ji;j)if(i*j%21)break;couti*j;A.110B.22C.12D.3【答案】C【解析】通考察循环的运行逻辑当满足 break 条件终止时只退出距离它最近的一层循环所以实际最终的i到取值为12时才停止最终答案为12*1。第9题下⾯C代码执⾏后输出是 。inti,cnt0;for(i-99;i100;i2)cnt1cnt;coutcnt;A.101B.100C.99D.98【答案】B【解析】本题考察修改过初值、判断语句、更新语句之后的for循环每次i增长2最终结果为100。第10题下⾯C代码执⾏后输出是 。inti;for(i1;i10;i)if(i%3!0){printf(A#);continue;}elsebreak;printf(0#);}if(i10)cout1;A.A#A#B.A#0#A#0C.A#A#1D.A#0#A#0#1【答案】A【解析】通本题考察对循环变量增长的理解当第一次i是3的倍数时 for 循环会break退出所以只输出两个A#。第11题下⾯C代码执⾏后的输出是 。inti,j;for(i0;i3;i)for(j0;ji;j)printf(%d#%d-,i,j);printf(END);A.0#0-1#0-2#0-2#1-ENDB.0#0-1#0-1#1-2#0-2#1-2#2-3#0-3#1-3#2-ENDC.0#0-1#0-1#1-2#0-2#1-2#2-ENDD.1#0-2#0-2#1-END【答案】D【解析】本题考察双重循环的变量理解与之前题目不同的是该题加入了对 printf 使用的考察printf可以通过在引号中加入字符完成对字符和变量的混合输出所以答案中含有#和-模拟后得到答案为D。第12题下⾯C代码执行后将输出不能被3整除且除以5余数为2的数。下列选项不能实现的是 。inti,j;for(i0;i100;i)if(______)coutiendl;A.(i % 3 ! 0) (i % 5 2)B.(i % 3) (i % 5 2)C.(i % 3) !(i % 5 ! 2)D.!(i % 3) (i % 5 2)【答案】D【解析】逻辑运算符中可以通过取反等操作相互转化本题中不符合题意的是D!(i%3)指的是i%3的值是false也就是i可以整除3。第13题下⾯C代码⽤于判断⼀个⼤于0的正整数是⼏位数横线处应填⼊代码先后是 。intN,cnt;cout请输入大于0的正整数;cinN;cnt0;while(_____){cnt1;______;}coutcnt;A.N1NN/10B.N1N/10C.N0N/10D.N0N/10【答案】D【解析】本题考察对数位拆分的熟练程度如学习过循环拆位本题难度较低否则对考生的思维要求较高。每次/10相当于去掉最后一位所以答案选择D。第14题判断⼀个数是否为自守数。自守数的定义是如果⼀个数的平方其尾数与该数相同则为自守数如25的平方是625其尾数是25所以25是自守数。相关说法错误的是 。intN,N1,M1;cout输入一个正整数: ;cinN;N1N,M1N*N;boolFlagtrue;while(N10){if(N1%10!M1%10){Flagfalse;break;}else{N1N1/10,M1M1/10;}}if(Flagtrue)printf(%d的平方是%d,是自守数,N,N*N);elseprintf(%d的平方是%d,不是自守数,N,N*N);A.如果Flag在循环中不被改为false则说明该数是自守数B.代码 if (N1 % 10 ! M1 % 10) 用于判断其个位数是否相等如果不等则表明不是自守数C.代码N1 N1 / 10, M1 M1 / 10将个位数去掉D.将N1 0 改为 N 0效果相同【答案】D【解析】考察 while 循环和模拟题型D选项N没有变化过所以不能直接用N做判断。第15题下⾯C代码实现输出如下图形相关说法的是 。请输入层数100123456789012345678901234567890123456789012345678901234intline_number,now_number;inti,row;cout请输入行数;cinline_number;now_number0;for(row1;rowline_number1;row){// L1for(i0;irow;i){// L2coutnow_number;now_number1;if(now_number10)now_number0;// L3}coutendl;}A.代码 now_number 0 移动到 L1 和 L2 标记的两⾏代码之间效果维持不变B.代码 now_number 1 修改为 now_number 1 now_number 效果维持不变C.将代码 now_number 10 调整为 now_number 9 效果维持不变D.将最后⼀⾏的 cout endl 修改为 cout “\n” 效果维持不变【答案】A【解析】考察考生对循环嵌套的理解将变量移动上去之后在过程当中无法对变量清零导致输出的变量有误。判断题第16题人们现在参加很多闭卷考试时通常都不允许带智能手机、平板电脑等此外很多种智能手表同样因为具有嵌入操作系统及通信等功能所以也不允许随身携带。 A.正确B.错误【答案】A【解析】考场明确要求第17题在C代码中假设N为正整数则 N / 10 舍弃个位数。如果 N ⼩于10则其值为0⼤于10则是舍弃个位 数的数。 A.正确B.错误【答案】A【解析】除以10即舍去个位。第18题下列C代码执行后其输出为 10 20 即ab和ba对 a 和 b 的值没有任何影响。 inta10,b20;ab;ba;cout(a,b);A.正确B.错误【答案】B【解析】部分正确值没有任何影响但输出因为逗号表达式的返回值为20。第19题a 和 b 分别是C的整型变量如果表达式 max(a, b) min(a, b) 的值为真则说明 a 和 b 相等。 A.正确B.错误【答案】A【解析】最大最小值相等则ab相等。第20题下⾯C代码编译时将报错因为字符变量 a 被赋值了浮点值。 chara1;a45.6couta;A.正确B.错误【答案】B【解析】被赋浮点值不会导致编译错误。第21题下⾯C代码执⾏时如输⼊59.99将输出两个汉字。 intscore;cout请输入学生成绩: ;cinscore;if(score60)cout不及格;elsecout及格;A.正确B.错误【答案】B【解析】59.99赋给int类型的变量值为59。第22题在下⾯的C代码中因为 continue 将被执⾏因此不会有输出。 inti;for(i1;i10;i)if(i%20)continue;if(i10)coutEND;A.正确B.错误【答案】B【解析】continue执行不影响最后输出不会打断循环。第23题下⾯的C代码执⾏后将输出15。 intSum0;for(inti0;i5;i)Sumi;coutSum;A.正确B.错误【答案】B【解析】i 变量会变为01234最终结果为10。第24题将下⾯C代码中的 (int i 5; i 1; i–) 调整为 (int i 1; i 5; i) 输出结果相同因为 5 到 1 与 1 到 5 的求和相同。 inttnt;tnt0;for(inti5;i1;i)tnti;couttnt;coutendl;A.正确B.错误【答案】B【解析】两者的起终点不一样结果不同。第25题为实现如下效果即N⾏N列字符。当输⼊是奇数时中间列为 *其他是 -当输⼊是偶数时则中间两 列是 *其他是 -。字符阵列后的代码能实现其效果。 /* 5 __*__ __*__ __*__ __*__ __*__ */intN;cinN;inti,j;for(i0;iN;i){for(j0;jN;j)if((jN/2)||(j(N-1)/2))cout*;elsecout-;coutendl;}A.正确B.错误【答案】A【解析】代码通过if语句控制输出的规则可以输出对应矩阵。编程题题解洛谷 B4356 [GESP202506 二级] 数三角形题解洛谷 B4357 [GESP202506 二级] 幂和数