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


相关推荐
MLGDOU2 小时前
Chatsdk模型接口的设计
网络·c++
发疯幼稚鬼2 小时前
简单介绍各类算法
算法
平生不喜凡桃李2 小时前
LeetCode:LRU and LFU
算法·leetcode·哈希算法
编程大师哥2 小时前
如何在C++中使用Redis的事务功能?
开发语言·c++·redis
星诺算法备案2 小时前
算法备案中“落实算法安全主体责任”的实操构建
人工智能·算法·算法备案
你撅嘴真丑2 小时前
完数的判断 , 有规律的数列求和
算法
朔北之忘 Clancy2 小时前
第二章 分支结构程序设计(1)
c++·算法·青少年编程·竞赛·教材·考级·讲义
yongui478342 小时前
异步电机最小二乘法参数辨识的MATLAB实现
算法·matlab·最小二乘法
汉克老师2 小时前
GESP2025年9月认证C++二级真题与解析(编程题2(菱形))
c++·找规律·二维数组·枚举算法·曼哈顿距离·模拟画图