switch语句的计算问题

来源:百度知道 编辑:UC知道 时间:2024/07/03 09:26:41
请看下面的程序:
main()
{ int k=0;
char c='A';
do
{ switch (c++)
{case 'A':k++;break;
case 'B':k--;
case 'C':k+=2;break;
case 'D':k=k%2;continue;
case 'E':k=k*10;break;
default:k=k/3;
}
k++;
}
while (c<'G')
printf("%d\n",k);
}
书上给出的"c和k值的变化情况
循环次数 执行switch时c和k的值 计算while(c<'G')时c和k的值
1 c='A',k=1 c='B',k=2
2 c='B',k=1,k=3(问题①) c='C',k=4
3 c='C',k=6 (问题②) c='D',k=7
4 c='D',k=1 c='E',k=1(continue起作用)④问题
5 c='E',k=10 c='F',k=11
6 c='F',k=3 (问题③)

哥哥把问题提的清楚些行么?比如,程序运行到那一步,你的期望值是什么,实际值又是什么,实际值怎么出来的我可以帮你解答!
补充:
当case'A'运行结速时;K=1原因不用我解释了吧?
当case'B'运行结速时;K=3原因case'B':k--; 后没有break;于是会继续运行 k+=2;break; 遇到break终止跳出;
当case'C'运行结速时;K=6原因case'B'运行结速K=3 经13行代码k++,K=4,再执行case'C'K=6,
当case'D'运行结速时;K=1原因case'C'运行结速K=6 经13行代码k++,K=7,再执行case'D' k=k%2得K=1
当case'E'运行结速时;K=10原因执行continue后13行代码k++ 不会执行
当C='F'运行结速时;K=3;原因'F'不在case 范围内,执行default另请注意第十五行while(c<'G') 'F'的ASC码<'G'啊所以while循环也成立
且'F'='E'+1出不来'F'才有问题呢!
实在对不起,当我写完了这些才理解了你的意思;哎呀智商太低了!惭愧惭愧!