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(arr[0])


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

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

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


(3) 🧠 为什么是 arr[0]

因为后面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


相关推荐
coder攻城狮5 小时前
VTK系列1:在屏幕绘制多边形
c++·3d
Daydream.V5 小时前
逻辑回归实例问题解决(LogisticRegression)
算法·机器学习·逻辑回归
代码无bug抓狂人5 小时前
C语言之表达式括号匹配
c语言·开发语言·算法
不穿格子的程序员5 小时前
从零开始写算法——普通数组篇:缺失的第一个正数
算法·leetcode·哈希算法
Nebula_g5 小时前
线程进阶: 无人机自动防空平台开发教程(更新)
java·开发语言·数据结构·学习·算法·无人机
HAPPY酷5 小时前
构造与析构:C++ 中对象的温柔生灭
java·jvm·c++
又见野草5 小时前
C++类和对象(下)
开发语言·c++
rit84324996 小时前
基于MATLAB的环境障碍模型构建与蚁群算法路径规划实现
开发语言·算法·matlab
hoiii1876 小时前
MATLAB SGM(半全局匹配)算法实现
前端·算法·matlab
独自破碎E6 小时前
大整数哈希
算法·哈希算法