先进入do……while循环,
最初c='A',执行case 'A': k++; break;跳出switch循环,
k++,判断c<'G'为真,继续do……while循环,
这时c='B'执行case 'B': k--;case 'C': k+=2; break;跳出switch循环,
k++,判断c<'G'为真,继续do……while循,如此下去直到c<'G'为假.然后输出K值。
如图:
一开始c='A';switch(c++)执行case 'A': k++; break;出循环后又k++,此回合后k=2;
第二回合c='B';:switch(c++)执行case 'B': k--;(没有break继续执行下个case)case 'C': k+=2; break;循环后又执行k++,此回合后k=4;
第三回合c='C';:switch(c++)执行case 'C': k+=2; break;又执行k++,此回合后k=7;
第四回合c='D';:switch(c++)执行case 'D': k=k%2; continue;不执行k++,此回合后k=1;
第五回合c='E';:switch(c++)执行 case 'E': k=k*10; break;又执行k++,此回合后k=11;
第六回合c='F';:switch(c++)执行default: k=k/3;又执行k++,此回合后k=4;
所以选 B)k=4
你好好看下switch结构吧。
还有dowhile循环结构。
还有break,continue语句的意思。
很麻烦的一件事。大体如下,如果你仍然看不明白那就得看看更基础的东西了。
k=0;//根据对变量c的判断,执行语句顺序如下。
A:k++;k++; //结果k=2;
B:k--;k+=2;k++; //结果k=4;
C:k+=2;k++; //结果k=7;
D:k=k%2; //结果k=1;
E:k=k*10;k++; //结果k=11;
F:k=k/3;k++; //结果k=4;
switch(C++)是按照原来C的值判断,但C实际已经+1了
do while循环
每循环完1次,c的值 ,k的值
1, c='B' , k=2
2, c='C' , k=4
3, c='D' , k=7
4, c='E' , k=1
5, c='F' , k=11
6, c='G' , k=4
第1次WHILE K++ K++ K=2
第2次WHILE K-- k+=2 `K++ K=4
第3次WHILE k+=2 K++ K=7
第4次WHILE K%2 K=1
第5次WHILE K=K*10 K++ k=11
第6次WHILE K=k/3 K=3
第7次WHILE k=K++ K=4
就这样算