C语言switch简单计算

#include

int main(){

            int i,m=0,n=0,k=0;

           for(i=9; i<=11;i++)

                  switch(i%10){

                            case 0:     printf("%d\n",m);

m++; n++; break;

                          case 1:    printf("%d\n",n);

n++; break;

                          default:  k++; n++;

                    }

            printf("%d %d %d\n",m,n,k); 

         return 0;

}

答案0 2 1 3 1怎么来的

i=9进来default执行后k=1 n=1
i=10进来 case 0执行后,先打印m,这时m=0所有打印的第一个就是0,再m n+1后就是m=1,n=2
i=11时,case 1执行,先打印n,打印出2,然后再n+1后n=3
循环结束就最后输出

i=9时i % 10=9,既不是9也不是1,执行default那部分的,k++,n++,然后k=1,n=1
之后是i=10,i % 10 = 0,执行case 0下面的语句,输出m,此时m=0,则输出0,然后m++,n++,m变为1,n变为2
然后 i = 11,此时 i % 10 = 1,执行case 1下面的语句,输出n,n=2,则输出2,然后n++,n边为3
最后输出m,n,k,依次是1,3,1