简答题
👁️ 浏览量:

试题题干

#define N 5
void main()
{
     int k, s1=0,s2=0;
     for(k=1;k<N;k++)
     switch(k%4)
     {   case1:
         case 2:s1+=1;break;
         case3:
         case0:s2+=1;break;
     }
     printf("s1=%d,s2=%d\n",s1,s2);

参考答案

试题解析

当switch后面“表达式”的值,与某个case后面的“常量表达式”的执行时,则执行该case后面的语句,当执行到语句break;时,跳出switch语句,即

k=1时,k%4=1%4=1,执行case1,没有遇到break继续执行case2,则s1+=1等价于s1=s1+1=1,遇到break结束循环,此时变量k的值为2; 

k=2时,k%4=2%4=2,执行case2,则s1+=1等价于s1=s1+1=1+1=2,遇到break结束循环,此时变量k的值为3; 

k=3时,k%4=3%4=3,执行case3,没有遇到break继续执行case0,则s2+=1等价于s2=s2+1=1,遇到break结束循环,此时变量k的值为4; 

k=4时,k%4=4%4=0,执行case0,则s2+=1等价于s2=s2+1=1+1=2,遇到break结束循环,此时变量k的值为5; 

k=5时,不符合k<5,结束循环。故输出的s1和s2的值为s1=2,s2=2