C语言基础问题求解!!

#include<stdio.h>
int 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("k=%d\n",k);
return 0;
}
输出结果·是什么为什么??while(c++)中的c++是循环后+1还是+1后再循环????

您好!很高兴为您解答。

程序运行结果是k=4

首先解释一下c++和++c的问题:switch(c++)中,是先引用c变量的值,再将c自加1,也就是switch(c++)语句结束后,c的值立即自加1;如果是switch(++c)那就是c变量先自加1,再引用c的值,也就是switch(++c)语句执行前,c就先自加1,再执行语句switch(c)。

对程序运行的解释如下:

循环之前的内容就不必多说了,相信LZ懂的。

第一次循环:相当于switch(‘A’),于是k自加1(k=1);出switch后k又自加1(k=2),判断相当于while(’B‘<'G'),继续循环;

第二次循环:相当于switch(‘B’),于是k自减1(k=1),然后再自加2(无break的缘故,k=3);出switch后k又自加1(k=4),判断相当于while(’C‘<'G'),继续循环;

第三次循环:相当于switch(‘C’),于是k自加2(k=6);出switch后k又自加1(k=7),判断相当于while(’D‘<'G'),继续循环;

第四次循环:相当于switch(‘D’),于是k等于除以2的余数(k=1);由于continue出switch后k不自加1(k=1),判断相当于while(’E‘<'G'),继续循环;

第五次循环:相当于switch(’E‘),于是k等于k乘以10(k=10);出switch后k又自加1(k=11),判断相当于while(’F‘<'G'),继续循环;

第六次循环:相当于switch(‘F’),于是k等于k除以3(k=3);出switch后k又自加1(k=4),判断相当于while(’G‘<'G'),退出循环;

最后输出k=4

望采纳~如您还有不解,欢迎追问~
温馨提示:答案为网友推荐,仅供参考
第1个回答  2013-11-13
答案是0,没有break就要继续算下去,直到break或者default,c++是先用再加。
第2个回答  2013-11-13
结果为k=4
switch(c++)中的c++是先判断后加1追问

就是运行了case再+1吗??如果换成++c结果又是多少??

追答

是运行了case再+1

如果换成++c结果是k=2

追问

contiune是跳出do-while还是switch?

追答

contiune是跳出do-while的本次循环进入下一次是否循环的判定,也就是说这些

case'E':k=k*10;break;
default:k=k/3;
}
k++;
并不执行

相似回答