
🟦 第 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)📄 题目
以下关于 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