新闻详情

新闻详情

首页 / 资讯中心 / 详情

GESP2026年9月认证C++一级( 第一部分选择题(8~15题)精讲

发布时间:2026/10/2 6:57:31来源:尧图网络
GESP2026年9月认证C++一级( 第一部分选择题(8~15题)精讲
第8题for循环结束以后变量是多少题目代码int i, cnt 0; for (i 0; i 10; i) cnt 1; cout i cnt;选项A. 10 10 B. 9 9 C. 10 9 D. 9 10答案⭐ A10 10① 我们先认识两个“小伙伴”程序中有i和cnt可以把它们想象成两个小盒子。开始i ? cnt 0②for循环的三个机关for (i 0; i 10; i)这个循环有三个部分① i 0 → 出发 ② i 10 → 检查能不能继续 ③ i → 每走一步i增加1循环身体cnt 1;意思就是cnt每次增加 1。③ 让程序跑起来第几次icnt101212323.........98910910第10次循环时i 9 cnt 9执行cnt 1;于是cnt 10然后最关键的一步来了i于是i 10接下来检查i 10也就是10 10答案是❌ 假所以循环结束。最终i 10 cnt 10输出10 10所以答案✅ A⭐ 一个非常重要的坑很多孩子会想“循环最后一次是i9所以答案应该是 9。”错因为for (i 0; i 10; i)最后一次执行完循环体以后还会执行i。所以循环里面最后一次是 9循环结束时是 10。这是一级考试中特别常见的陷阱。第9题负数循环 cnt题目代码int cnt, i; cnt 0; for (i -10; i 0; i) cnt 1; cout (i * cnt);选项A. -10 B. -9 C. 0 D. 9答案⭐ C0① 从哪里开始i -10 cnt 0循环条件i 0②i会经历哪些数字-10 -9 -8 -7 -6 -5 -4 -3 -2 -1这些数字都满足i 0所以一共循环10次每次cnt 1;所以最后cnt 10③ 循环结束的时候i是多少最后一次i -1循环体执行完后i于是i 0然后检查0 0❌ 不成立。所以循环结束。④ 最后的计算程序cout (i * cnt);此时i 0 cnt 10所以0 × 10 0答案✅ C 记住一个规律对于for (i -10; i 0; i)结束的时候i不是 -1而是 0因为最后还有一次i这就是第8题和第9题共同考查的“循环结束时循环变量到底是多少”第10题continue遇到谁break又遇到谁这道题非常经典。代码int i; for (i 1; i 5; i) { if (i % 3 0) { printf(%d, i); continue; } else { printf(%d-, i); break; } } printf(%dEND*, i);选项A. 1-1 B. 1 - 1 END* C. 11-2-2END* D. 1-1END*答案⭐ D‍♂️ 这里有两个魔法按钮continue意思这一次不玩了直接进入下一轮循环。break意思别玩了整个循环结束可以记成continue跳过本轮break直接退场现在开始执行初始i 1判断1 % 3 0显然1 % 3 1所以条件不成立进入else执行printf(%d-, i);输出1-然后break; 整个循环立即结束注意因为break已经把循环结束了所以i 2还没发生。程序直接来到printf(%dEND*, i);此时i 1所以输出1-1END*答案✅ D⭐ 小口诀看到continue;想 “这一轮出去下一轮再来。”看到break;想 “整座循环大门关闭”第11题while循环到底会循环几次代码int N, tot; cin N; tot 0; while (N 0) { cout N #; tot 1; N - 1; } cout tot -END;题目问下面说法错误的是哪一个选项A输入33#2#1#3-ENDB输入-100-ENDC输入00-ENDD输入11#0-END答案⭐ D我们一个一个检查A输入3开始N 3 tot 0第1次输出3#然后tot 1 N 2第2次输出2#然后tot 2 N 1第3次输出1#然后tot 3 N 0现在N 0变成0 0❌循环结束。最后cout tot -END;输出3-END所以3#2#1#3-ENDA正确。B输入 -10一开始N -10检查N 0即-10 0❌一次循环都不进入。所以tot 0输出0-ENDB正确。C输入0同样0 0❌所以0-ENDC正确。D输入1开始N 1 tot 0循环输出 1# tot 1 N 0最后1-END所以完整输出1#1-END而不是1#0-END所以❌ D错误答案✅ D 这道题最容易错在哪里有的同学很容易把N和tot搞混。实际上N倒计时tot计数器可以想象N是“小火箭倒计时”每次减1tot是“小记者”每完成一次循环就记1笔。第12题用printf打印连续数字题目输入35要求输出35 34 33 32 31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1代码int N, tot, i; cin N; tot 0; for (i 0; i N; i) { printf(__________); tot tot 1; if (tot % 10 0) printf(\n); }选项A. %3d, N B. %3d, N - i C. N - i D. N答案⭐ B先搞清楚两个变量输入N 35N从头到尾都是35而i会0 1 2 3 4 ...题目要求35 34 33 32 ... 1那么我们可以观察35 - 0 35 35 - 1 34 35 - 2 33 35 - 3 32是不是刚刚好所以应该打印N - i为什么还要%3d选项 B%3d, N - i这里%3d意思是用至少3个字符的位置来打印整数。例如35前面会留一个空格35这样35 34 33 ...数字排列会更加整齐。⭐ 再看每10个换一行if (tot % 10 0) printf(\n);当tot 10换行。当tot 20再换行。当tot 30再换行。所以最终正好是3526 2516 156 51答案✅ B第13题continue之后后面的代码还执行吗代码int k 0; while (k 8) { k 2; continue; if (k 5) break; cout k #; } if (k 8) cout FINISH;选项A. FINISH B. 2#4#6#FINISH C. 2#4#FINISH D. 2#4#6#8#FINISH答案⭐ A这里有一个超级重要的陷阱程序k 2; continue; if (k 5) break; cout k #;看到continue;之后下面的代码本轮全部不执行也就是说if (k 5)不会执行。cout k #;也不会执行。让程序跑起来初始k 0进入k 8成立。执行k 2;变成k 2然后continue; 直接回到while条件。第二轮k 2加2k 4continue第三轮k 4加2k 6continue第四轮k 6加2k 8continue再检查k 8也就是8 8❌循环结束。注意整个过程中cout k #;一次都没有执行最后if (k 8)成立。所以输出FINISH答案✅ A 一句话记忆continue像“传送门”一出现后面的代码全部跳过直接开始下一轮。第14题如何找到一个数的“第M位”这是这一组题里非常值得掌握的一题。题目给一个正整数N求它从右往左第M位。例如N 123456从右往左第1位6 第2位5 第3位4 第4位3 第5位2 第6位1代码int N, M, M10; cin N; cin M; M10 1; for (; M 1; M--) M10 * 10; cout __________;选项A. N / M10 % 10 B. N / M10 / 10 C. N % M10 % 10 D. N % M10 / 10答案⭐ A先理解M10是干什么的开始M10 1如果M 1不用循环M10 1如果M 2循环一次M10 10如果M 3循环两次M10 100如果M 4得到M10 1000所以M10 10^(M-1) 举个例子假设N 123456 M 3我们要找第3位答案应该4第一步除以100因为M10 100所以123456 / 100整数除法得到1234第二步再% 101234 % 10得到4刚好就是我们想要的数字所以N / M10 % 10答案✅ A‍♂️ 记忆方法求从右往左第M位可以想象先用/把右边不需要的数字切掉。然后再用% 10把最后一位抓出来。所以N ↓ 除以10^(M-1) ↓ %10 ↓ 得到目标数字口诀“除掉右边留下目标再取10抓住一位。”第15题鸡兔同笼程序哪里出了问题这道题非常有意思。题目tou表示鸡和兔的头总数jiao表示脚总数。判断下面程序的说法哪个正确。程序int tou, jiao, tu_tou, ji_tou; cin tou; cin jiao; for (tu_tou 0; tu_tou tou 1; tu_tou) { ji_tou tou - tu_tou; if (tu_tou * 4 ji_tou * 2 jiao) { printf(兔的数量%d,鸡的数量%d\n, tu_tou, ji_tou); break; } } if (tu_tou tou) printf(无解\n);选项A. 能求解鸡兔同笼。B.ji_tou没有初始化在 L1 前增加ji_tou 0;即可求解。C. 将tu_tou tou 1改为tu_tou tou即可求解。D. 将tu_tou tou改为tu_tou tou 1即可求解。答案⭐ D第一步程序的思路其实是对的假设头有10个那么兔子的数量可以一个一个试兔0只 兔1只 兔2只 兔3只 ... 兔10只如果兔子有tu_tou那么鸡就是ji_tou tou - tu_tou因为鸡 兔 总头数第二步检查脚的数量鸡2只脚兔4只脚所以tu_tou * 4 ji_tou * 2就是总脚数。如果总脚数 jiao就找到了答案。这个思路本身没问题。 真正的BUG在哪里看for (tu_tou 0; tu_tou tou 1; tu_tou)它会尝试0 1 2 ... tou这是合理的。因为有一种特殊情况全部都是兔子。比如tou 3可能兔 3 鸡 0所以必须允许tu_tou tou因此不能把tu_tou tou 1改成tu_tou tou否则❌ 全部都是兔子的情况就永远检查不到。所以 C 错。 那么问题在哪里看最后if (tu_tou tou) printf(无解\n);假如兔 tou 鸡 0那么程序已经找到了答案并且break;跳出来。但是tu_tou tou依然成立于是程序会先说“找到答案了”然后又说“无解”这就出问题了。 怎么解决循环结束以后如果tu_tou tou 1才说明所有可能的兔子数量都尝试过了仍然没有找到答案。为什么因为循环for (tu_tou 0; tu_tou tou 1; tu_tou)如果没有breaktu_tou 0 1 2 ... tou tou1最后才退出。所以if (tu_tou tou 1)才代表真的无解。因此✅ D正确 815题考点地图题号主要考点小朋友要掌握什么8for循环循环结束后变量会怎样9for循环最后一次i10continue、break一个跳本轮一个结束循环11while条件什么时候成立、什么时候结束12printf、%N-i、每10个换行13continuecontinue后面的代码本轮不执行14数字拆位/10、%1015枚举一个一个尝试 找到答案break 最后送给大家一套“815题通关口诀”①for循环先初始化再看条件执行身体最后更新。②break循环立刻结束相当于“我不玩了直接回家”③continue跳过这一轮下一轮继续。相当于“这一关先跳过下一关见”④%10抓个位例如123 % 10得到3⑤/10砍掉个位123 / 10得到12⑥ 求第M位先/10^(M-1)再%10。即N / M10 % 10⑦ 枚举一个一个试试到正确答案就break。 最值得孩子形成的“程序阅读习惯”以后遇到阅读程序题千万不要一眼看答案。让孩子拿一支笔在草稿纸上画变量初值 ↓ 第1轮 ↓ 变量变化 ↓ 第2轮 ↓ 变量变化 ↓ …… ↓ 循环结束时变量是多少 ↓ 最后输出什么尤其要牢牢记住“循环体最后执行完不代表循环变量停在那里。”因为后面还有i以及continue会跳过后面的代码break会直接结束整个循环。这几个小陷阱正是一级考试里非常喜欢考的地方。
网站建设高端定制企业官网
RELATED

相关资讯

更多精彩内容,欢迎继续阅读

较早相关资讯

最新相关资讯

SR8201F国产百兆PHY调试实战:从机贴失败到杜邦线救场 2026/10/2 7:50:56

SR8201F国产百兆PHY调试实战:从机贴失败到杜邦线救场

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

阅读更多 →
Spring Boot 3.x 静态资源404与getHttpServletMapping错误解析 2026/10/2 7:50:50

Spring Boot 3.x 静态资源404与getHttpServletMapping错误解析

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

阅读更多 →
中软外包华为首月技术成长实录:从执行者到问题定义者 2026/10/2 7:50:50

中软外包华为首月技术成长实录:从执行者到问题定义者

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

阅读更多 →
加权最小二乘法:异方差矫正的原理、诊断与实战 2026/10/2 7:50:50

加权最小二乘法:异方差矫正的原理、诊断与实战

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

阅读更多 →
Yocto下载慢怎么办?清华镜像与PREMIRRORS双管齐下加速构建 2026/10/2 7:50:50

Yocto下载慢怎么办?清华镜像与PREMIRRORS双管齐下加速构建

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

阅读更多 →
大模型训练优化器全解析:从SGD到AdamW与Muon的实战指南 2026/10/2 7:50:50

大模型训练优化器全解析:从SGD到AdamW与Muon的实战指南

1. 大模型训练里优化器到底在干什么很多人第一次接触大模型训练,注意力全在模型结构、参数量、数据配比上,优化器往往被当成一个“调参黑盒”——反正就是AdamW,学习率设个1e-4或者3e-4,跑就完了。但真到了训练不稳定、loss突然起…

阅读更多 →

今日资讯

本周资讯

本月资讯

看完文章仍有疑问?

联系尧图顾问,获取一对一建站咨询

立即免费咨询 📞 400-888-8888
📞 ✉