GESP2025年9月认证C++三级真题与解析(单选题9-15)


🟦 第 9 题:双重 for 循环的"数字阶梯"

(1)📄 题目(代码)

cpp 复制代码
for (int i = 0; i < 4; i++) {
    for (int j = 0; j <= i; j++) {
        cout << j;
    }
    cout << "#";
}

选项中哪一个是输出结果?

正确答案:A

cpp 复制代码
0#01#012#0123#

(2)🧸 故事理解:爬楼梯的小朋友

  • 外层 i:控制"爬到第几层"

  • 内层 j:从 0 数到当前层数


(3)🧠 一步一步执行

第 1 轮:i = 0

cpp 复制代码
0#

第 2 轮:i = 1

cpp 复制代码
j = 0, 1 → 输出 01#

第 3 轮:i = 2

cpp 复制代码
j = 0, 1, 2 → 输出 012#
第 4 轮:i = 3
cpp 复制代码
j = 0, 1, 2, 3 → 输出 0123#

最终:

cpp 复制代码
0#01#012#0123#

(4)🧠 语法总结

代码 意义
外层 for 控制"行"
内层 for 控制"列"
j <= i 每一行比上一行多一个

答案:A



🟦 第 10 题:变量作用域谁说错了?

(1)📄 题目

以下关于 C++ 变量作用域 的说法,错误的是( )。

A. for 中的变量只在 for 内有效

B. 函数内变量只在函数内有效

C. 全局变量在整个程序中都有效

D. 不同函数的局部变量可以同名

正确答案:C


(2)🧸 故事:校园里的名字牌

  • 局部变量:教室里的学生

  • 全局变量:校园公告牌


(3)🧠 为什么 C 错?

选项C的说法不严谨 。在C++中,全局变量 (在所有函数外部声明的变量)默认具有全局作用域 ,但若使用static关键字修饰(如static int x;),则其作用域会被限制在当前源文件内,而非整个程序。

❌ 不是"整个程序随便用"


(4)✔ 其他选项为什么对?

  • A:for 里的变量,出了 for 就"消失"

  • B:函数结束,变量"下课回家"

  • D:不同函数是不同教室,同名不冲突

❌ 错的是 C



🟦 第 11 题:反转整数的"最大安全值"

(1)📄 题目

关于下面反转整数代码,说法正确的是( )。

(核心是 int reversed

正确答案:D

👉 能反转的最大正整数是 1463847412


(2)🧸 故事:杯子会不会溢出来?

  • int 是一个杯子

  • 最大能装:2147483647


(3) 🧠 为什么不是所有数都能反转?

比如:

cpp 复制代码
x = 2147483647

反转后是:

cpp 复制代码
7463847412 ❌ 超杯子了!

(4) 🧠 只有这个最大安全数:

cpp 复制代码
1463847412 → 2147483641(还在范围内)

✅ 正确答案:D



🟦 第 12 题:找最大值,第一步怎么走?

(1)📄 题目

cpp 复制代码
int maxVal = ________;

正确答案:C(arr0


(2)🧸 故事:班级选最高的小朋友

你要比身高,第一步一定是:

👉 先选第一个人当"临时最高"


(3) 🧠 为什么是 arr0

因为后面for循环,枚举参与比较的是:

i 从 1开始,没有 arr 0

cpp 复制代码
for (int i = 1; i < size; i++) {
    if (arr[i] > maxVal)
        maxVal = arr[i];
}

maxVal = arr[0] 才能枚举全部数组,把班级里所有小朋友都比较。


cpp 复制代码
int maxVal = arr[0];
for (int i = 1; i < size; i++) {
    if (arr[i] > maxVal)
        maxVal = arr[i];
}

现在能够找遍全班,选出最高的小朋友了。

✅ 答案:C



🟦 第 13 题:函数规则哪条是对的?

(1)📄 题目

以下关于 C++ 函数的说法,正确的是( )。

正确答案:D


(2)🧠 为什么选 D?

C++11 开始
函数必须写返回类型

cpp 复制代码
max(int a, int b) ❌ 不允许
int max(int a, int b) ✔

(3)❌ 其他选项错误原因

  • A:还有引用、指针传参 ❌

  • B:函数结束,形参立刻释放 ❌

  • C:void 函数 可以写 return;

cpp 复制代码
void printMessage() {
    std::cout << "Hello";
    return; // 提前退出,后面的代码不执行
    std::cout << " World"; // 不会执行
}
  • 编译结果:完全合法,无警告或错误。

✅ 正确:D



🟦 第 14 题:代码里有几处错误?

(1)📄 题目代码

cpp 复制代码
#include <iostream>
using namespace std;
int main() {
    const int SIZE = 5;
    int arr[SIZE];
    for (int i = 0; i <= SIZE; i++) {
        arr[i] = i * 2;
    }
    cout << arr[SIZE] << endl;
    return 0;
}

问:有几处错误?

正确答案:C(2 处)


(2)🧸 故事:数组越界

这段代码里:

❌ 发生了数组越界的情况**!**

cpp 复制代码
#include <iostream>
using namespace std;
int main() {
    const int SIZE = 5;
    int arr[SIZE];
    for (int i = 0; i <= SIZE; i++) {   //i <= SIZE , 数组越界了
        arr[i] = i * 2;
    }
    cout << arr[SIZE] << endl;         //arr[SIZE], 数组越界了
    return 0;
}

数组中元素下标为0 ~ n-1


✅ 错二处 → C



🟦 第 15 题:string 和 char 谁在说谎?

(1)📄 题目

以下关于 stringchar[] 的说法,错误的是( )。

正确答案:D


(2)❌ 为什么 D 错?

cpp 复制代码
char a[] = "abc";
char b[] = "abc";

if (a == b) ❌ 比的是地址!

(3)🧠 正确比较方式

cpp 复制代码
strcmp(a, b) == 0

string 才能:

cpp 复制代码
if (s1 == s2) ✔

(4 )其他选项:

对比 string char\[\]
赋值 = strcpy
长度 length() strlen
自动扩容

❌ 错误选项:D


相关推荐
兰令水1 小时前
leecodecode【面试150】【2026.6.14打卡-java版本】
java·算法·面试
凡人叶枫8 小时前
Effective C++ 条款30:透彻了解 inlining 的里里外外
linux·开发语言·c++·嵌入式开发·effective c++
noipp8 小时前
推荐题目:洛谷 P10907 [蓝桥杯 2024 国 B] 蚂蚁开会
c语言·c++·算法·编程·洛谷
学逆向的8 小时前
C++纯虚函数
开发语言·c++·网络安全
程序员二叉8 小时前
【JUC】线程池全套深度详解|参数|流程|拒绝策略|调优|异常处理
java·开发语言·jvm·算法·面试·juc
青山木9 小时前
Hot 100 --- 轮转数组
java·数据结构·算法
徐小夕9 小时前
Loop Engineering 深度解析与实战指南(全网最全)
前端·算法·github
凡人叶枫9 小时前
Effective C++ 条款22:将成员变量声明为 private
linux·开发语言·c++
北域码匠10 小时前
SHA-1算法:安全哈希原理与应用解析
算法·c#·哈希算法
坚果派·白晓明11 小时前
【鸿蒙PC】SDL3 移植:AtomCode Skills 4 步速通多媒体库适配
c++·华为·ai编程·harmonyos·atomcode·c/c++三方库