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)📄 题目

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

✅ 正确答案: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


相关推荐
倒头就睡的小比特2 天前
算法竞赛C++常用的STL
c++·算法
weilx12342 天前
C++笔记-文件IO-<fcntl.h>
c++
小羊没烦恼!2 天前
初探性能优化——2个月到4小时的性能提升
java·开发语言·windows·算法·c#
猎头南楼3 天前
知识社区推荐系统实践:新用户冷启动与长短期兴趣建模的挑战 资深推荐算法工程师
人工智能·深度学习·算法·机器学习
Smileyqp沛沛3 天前
前端?C++ ?较大差异基础罗列
c++·基础·前端转c++
C语言小火车3 天前
C/C++ 为什么需要编译器?
开发语言·c++
旖旎夜光3 天前
力控面试题 01.01: 判定字符是否唯一(位运算) —— 题解
c++·学习·算法·leetcode·力控
wzdark3 天前
大规模并行计算中的负载均衡算法研究4
算法
吞下星星的少年·-·3 天前
C++ 萌新语法入门篇
c++·算法比赛
Because_of_Her13 天前
并查集-听课笔记
笔记·算法·并查集