GESP 四级 · GESP 202312 C++ 四级 第 9 题

选择题 · 答案 A

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

题目

在如下的 C++ 代码中实现了对字符串中出现的 26 个字母的个数统计,横线处应填入是( )。

string str="HELLO CHEN A DAI";
int strlen=str.length();
char alpha[26]={65};
int cnt[26]={0};
for(int i=1;i<26;i++)
{
    __________;
}
for(int i=0;i<26;i++)
{
    cout<<alpha[i]<<" ";
}
cout<<endl;
for(int i=0;i<26;i++)
{
    for(int j=0;j<strlen;j++)
    {
        if(alpha[i]==str[j])
        {
            cnt[i]++;
        }
    }
}
for(int i=0;i<26;i++)
{
    cout<<cnt[i]<<" ";
}
答案:A

解题思维

这题考的是ASCII码的连续性和数组元素间的依赖关系。拿到题先别想怎么写循环,直接看alpha[0]给了65,循环从i=1开始,那alpha[1]肯定得是66,alpha[2]是67……所以横线处必须用前一个元素来推导当前元素,这就是解题的钥匙。

常见错误

最容易栽跟头的就是觉得'既然要填'A'到'Z',那就直接写alpha[i]=65'或者'alpha[i]=65+i',完全忽略了题目里alpha[0]已经固定为65这个前提。还有一种坑是看错了循环变量i的起始值,以为i从0开始,结果选了个会访问负下标的选项。其实命题人就是喜欢用这种'默认你会补全'的陷阱,让你以为只要填个65就行,结果发现数组全乱套。还有那些一看到数组就下意识想用指针或者引用改实参的,这题压根没涉及参数传递,纯属画蛇添足。

详细解析(节选)

【考点】ASCII字符编码|数组初始化|循环变量依赖

1. 考纲定位

本题考查GESP四级《C++语言基础》模块中字符数组与ASCII码的核心考点。命题人专门挖'数组填充逻辑'这一深坑——绝大多数考生会误以为alpha[i]=65这种写法能自动填满数组,实则他们根本没理解ASCII码连续递增这一编码规律,也忽略了数组元素间的前后依赖关系。

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