GESP 四级 · GESP 202306 C++ 四级 第 14 题

选择题 · 答案 D · 考点:循环控制

← 整套速查表 GESP 四级 全部真题

题目

执行以下 C++ 语言程序后,输出结果是( )。

#include <iostream>
using namespace std;
int main() {
    int array[3][3];
    for (int i = 0; i < 3; i++)
        for (int j = 0; j < 3; j++)
            array[i][j] = i * 10 + j;
    int sum;
    for (int i = 0; i < 3; i++)
        sum += array[i][i];
    cout << sum << endl;
    return 0;
}
答案:D

考点

循环控制

解题思维

这道题表面看是二维数组赋值和对角线求和,但核心考点是C++局部变量未初始化的未定义行为。拿到题先别急着算数字,先盯住int sum;这一行,问自己:它被赋过值了吗?没赋,那后面累加的结果就是随机垃圾,答案自然无法确定。

常见错误

学生最容易掉进‘默认从0开始’的惯性思维里,看到sum后面一直在加,就下意识觉得sum初始是0,于是心算出对角线元素0+11+22=33,直接选C。还有的会纠结数组对角线是不是0/10/20,把i*10+j看漏了j,或者把i*10+j算成i+j,导致算出3或30。这些错误都源于没抓住‘未初始化’这个致命漏洞,只关注了算术运算本身。

详细解析(节选)

【考点】二维数组初始化|局部变量未初始化陷阱|循环控制

1. 考纲定位

本题考查GESP四级‘基础语法’模块中数组声明与循环控制的综合运用。命题人特意挖空sum的初始化,专卡那些只背‘数组求和要加0’口诀、却忽略局部变量默认值的考生——这是四级最典型的‘看似正确实则漏洞百出’设计。很多学生看到int sum;后面紧接着就是sum += ...,下意识地认为sum是从0开始累加的,从而掉进陷阱。

同考点真题

在 OI伴学 里做这道题
登录后可计时作答、查看完整六段式解析,并按你的错题自动生成同类练习。
去刷题先做一次 AI 学情诊断