题目
【单选题】下列程序段[1]的输出结果是 。 int main(void) ( int m , k=0 , s=0 ; for(m=1 ; m<=4 ; m++) { switch(m%4) { case 0 : case 1 : s+=m ; break ; case 2 : case 3 : s-=m ; break ; ) k+=s ; } printf(“%d” , k) ; return 0 ; }A. 10 B. -2 C. -4 D. -12
【单选题】下列程序段[1]的输出结果是 。 int main(void) { int m , k=0 , s=0 ; for(m=1 ; m<=4 ; m++) { switch(m%4) { case 0 : case 1 : s+=m ; break ; case 2 : case 3 : s-=m ; break ; } k+=s ; } printf(“%d” , k) ; return 0 ; }
A. 10
B. -2
C. -4
D. -12
A. 10
B. -2
C. -4
D. -12
题目解答
答案
-4
解析
考查要点:本题主要考查对switch-case语句的理解和循环中变量的累加逻辑。需要根据m的取值,判断每个循环中s的变化,进而计算k的总和。
解题核心思路:
- 循环变量分析:
m从1到4依次取值,每次循环需计算m%4的结果。 switch-case逻辑:根据m%4的结果,判断执行case 0、case 1(加m)、case 2、case 3(减m)。- 变量更新顺序:先通过
switch修改s,再将s的值累加到k中。
破题关键点:
- 明确每个
m对应的case分支,避免混淆加减逻辑。 - 逐次计算
s和k的值,确保每一步的更新正确。
循环过程分析
当m=1时:
m%4 = 1,执行case 1:s += m→s = 0 + 1 = 1k += s→k = 0 + 1 = 1
当m=2时:
m%4 = 2,执行case 2:s -= m→s = 1 - 2 = -1k += s→k = 1 + (-1) = 0
当m=3时:
m%4 = 3,执行case 3:s -= m→s = -1 - 3 = -4k += s→k = 0 + (-4) = -4
当m=4时:
m%4 = 0,执行case 0:s += m→s = -4 + 4 = 0k += s→k = -4 + 0 = -4
最终结果:k = -4