题目
执行下面 C++ 代码后,输出是()。
string str=("chen");
int x=str.length();
int temp=0;
for(int i=0;i<=x;i++)
{
temp++;
}
cout<<temp<<endl;
答案:C
考点
循环结构
解题思维
这题核心就是数循环次数。拿到题先看字符串长度x=4,再看for循环条件i<=x,i从0开始,所以i会取0,1,2,3,4这5个数,每次循环temp加1,最后输出5。
常见错误
学生最容易栽在两个地方:一是把循环条件i<=x看错成i<x,导致少算最后一次迭代,得出4;二是数字符串长度时数错,把'chen'看成3个字母。视觉上'chen'确实只有4个字母,但命题人喜欢用短字符串干扰判断。另外,有些同学会忽略i从0开始,误以为i从1开始,导致计数偏差。这些坑都是条件判断和基础语法结合处的典型陷阱。
详细解析(节选)
GESP三级第5题:循环次数陷阱详解
这道题考什么
这道题表面看是简单的字符串处理和循环计数,实则精准命中GESP三级《C++编程》中"循环结构"的核心考点——循环次数的精确计算。命题人特意选取了一个短字符串"chen",长度x=4,再配合条件i<=x,就是要考察学生在面对"等号"时的敏感度,以及是否能准确追踪循环变量的取值范围。
同考点真题
- 第 23 题· NOIP 2008 普及组初赛试题 · 答案 23看解析 →
- 第 25 题· NOIP 2008 普及组初赛试题 · 答案 5 4 10 1 6 22 -59 -6 -11 -6看解析 →
- 第 26 题· NOIP 2008 普及组初赛试题 · 答案 DBGEFCA看解析 →
- 第 27 题· NOIP 2008 普及组初赛试题 · 答案 change[i] >= 'A' && change[i] <= 'Z'change[i] <= 'Z'str[i] >= 'A' && str[i] <= 'Z'str[i] <= 'Z'str[i] = change[str[i] - 'a'];ChangeString();看解析 →
- 第 28 题· NOIP 2008 普及组初赛试题 · 答案 a[left]a[j]<valuea[j]<=valuevalue>a[j]value>=a[j]a[i]>valuea[i]>=valuea[i]=value;i+1,right,nFindKth(left,i-1,n);看解析 →