题目
若有如下程序段,其中 $s,a,b,c$ 均已定义为整型变量,且 $a,c$ 均已赋值,$c>0$。
s = a;
for(b = 1; b <= c; b++) s += 1;
则与上述程序段功能等价的赋值语句是( )。
答案:B
考点
循环结构
解题思维
别盯着循环里的b看,它只是个计数器。这题本质就是算'累加',循环跑了c次,每次s加1,那s最终就是初始值a加上c。
常见错误
最容易犯的错就是被循环变量b迷惑,以为b会参与运算,或者把b当成c去理解。有的同学会选A,那是把b当成了c;有的会选C,那是只加了一次。记住,循环体里的s+=1执行了c次,跟b的具体值没关系,只跟循环次数c有关。
详细解析(节选)
NOIP 2014 普及组初赛第19题:循环累加的等价转化
这道题考什么
这题考查的是循环结构对变量的累积效应,属于基础语法题里的经典套路:给你一个带循环的赋值语句,让你把它等价成一个没有循环的赋值语句。命题人就是想看你能不能透过代码表象,抓住'循环次数决定增量'这个核心逻辑。
同考点真题
- 第 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);看解析 →