第1个回答 2013-07-04
第一次进switch c的值是A
所以k++; 这时候k就是1;
出了switch,又++了一次,所以k=2; 这时候,c 的值是"B";
第二次进switch c的值是B
所以k--; 这时候k就是1;但是因为没有break,所以继续做k+=2; 所以k = 3;
出了switch,又++了一次,所以k=4; 这时候,c 的值是"C";
第三次进switch c的值是C
所以是k+=2; 所以k = 6;
出了switch,又++了一次,所以k=7; 这时候,c 的值是"D";
第四次进switch c的值是"D"
所以是k=k%2; 所以k = 7%2 = 1;因为是continue
所以又进了一次switch,这时候 c 的值是"E",所以k*=10 ,k=10
出了switch,又++了一次,所以k=11; 这时候,c 的值是"F";
第五次进switch c的值是"F"
所以没有F,所以进 k=k/3; 所以k = 11/3 = 3; (取整)
出了switch,又++了一次,所以k=4; 这时候,c 的值是"G";
退出
打印 k=4本回答被提问者采纳
第3个回答 2013-07-04
c=A
执行switch里面k++,碰到break,于是退出switch,执行后面的k++,最后得到k=2,c=B
C=B
执行switch里面k--因为没有break所以继续执行下一个case 'C':k+=2,接着碰到break,然后退出switch后面的k++,最后得到k=4,c=C
c=C
执行switch里面k+=2,碰到break,然后退出switch,执行后面的k++,最后得到k=7,c=D
c=D
执行switch里面k%=2,碰到continue,直接退出循环,进入下次循环,最后得到k=1,c=E
c=E
执行switch里面k*=10,碰到break,退出switch,执行后面的k++最后得到k=11,c=F
c=F
执行switch里面k/=3,switch结束,执行后面的k++最后得到k=4,c=G
退出循环
输出4
可能说的有点模糊,哪里不懂可以追问。
追问会运行case'A'吗?
为什么下面有网友回答说除了case'A'其它再都运行呢
追答因为这个是循环,循环变量c会一直变大,变大的值在switch里面都有相应的值,所以会全部都再运行。
第4个回答 2013-07-05
#include<stdio.h>
main()
{
char c='A';
int k=0;
do
{
switch(c++){
case'A':k++;printf("c=%c case 'A'\n",c-1);break;
case'B':k--;printf("c=%c case 'B'\n",c-1);
case'C':k+=2;printf("c=%c case 'C'\n",c-1);break;
case'D':k%=2;printf("c=%c case 'D'\n",c-1);continue;
case'E':k*=10;printf("c=%c case 'E'\n",c-1);break;
default:k/=3;printf("c=%c case default'\n",c-1);break;
}
k++;
}
while (c<'G');
printf("k=%d",k);
getch();
}
运行结果:
c=A case 'A'
c=B case 'B'
c=B case 'C'
c=C case 'C'
c=D case 'D'
c=E case 'E'
c=F case default'
k=4
case 只是选择的入口,真正的程序是case后面的部分,是连续的。在循环中,break与continue同义。