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

选择题 · 答案 D

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

题目

下列 C++ 代码输入 1,2,3,4,执行后,将输出的是( )。

string str="";
cin>>str;
int strlen=str.length();
for(int i=0;i<strlen;i++)
{
    if(str[i]<='9'&&str[i]>='0')
    {
        cout<<str[i];
    }
    else
    {
        cout<<"#";
    }
}
答案:D

解题思维

这题考cin读字符串、长度计算和字符遍历。先想cin读入的是整个'1,2,3,4'(含逗号),长度是7,别把逗号当分隔符去数数字个数,直接按字符一个个判断数字还是逗号即可。

常见错误

最容易错在把逗号当成‘分隔符’,以为cin会只读数字或长度只算数字个数,从而选C(多算一个#)或B(数字个数数错)。其实cin>>str对空格前的连续字符都会读进来,逗号也是字符,长度就是7。再看选项A,它把'2'和'3'中间的逗号漏了,输出'1#4#',说明做题时可能把逗号当成空格自动跳过了,或者误以为循环只到某个位置,这都是对cin和循环边界理解不到位。记住:cin不跳过逗号,长度包含逗号,循环跑满7次,每个非数字字符都输出#。

详细解析(节选)

【考点】字符串长度计算|字符遍历|cin输入流

命题视角

GESP四级爱考字符串模块里‘长度≠数字个数’这个认知偏差。输入里含逗号,命题人故意让你以为cin会像读整数那样忽略逗号,或者让你以为长度只算数字,结果for循环跑完输出里#的数量和位置全错了。选项A、B、C都是这种偏差的典型产物。

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