c语言 循环结构

来源:百度知道 编辑:UC知道 时间:2024/06/01 04:48:29
#include"stdio.h"
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);
}
输出的的结果是4
我想知道这个答案是怎么出来的 谢谢

C++ 代表c先参与运算,再增1

c = 'A' case 'A': k++ = 1; k++ = 2 ; c++ = 'B' 'B'<'G'
c = 'B' case 'B':k-- = 1;由于没有break,继续执行到case 'C':
k = k+2 = 3; k++ = 4; c++ = 'C' 'C'<'G'
c = 'C' case 'C':k = k+2 = 6; k++ = 7;c++ = 'D' 'D'<'G';
c = 'D' case 'D':k = k%2 = 1; continue 不执行k++了; c++ = 'E' 'E'<'G';
c = 'E' case 'E':k = k*10 = 10; k++ = 11 ;c++ = 'F' 'F'<'G';
c = 'F' default:k=k/3 = 3;k++ = 4;c++ = 'G' 'B'=='G';
所以:
k = 4
注意几点:

C++ 代表c先参与运算,再增1
case 后没有break,继续向下执行

好复杂啊!

c='A' k++ 1 c='B' //注意这里是c++,即执行完case语句再自增1
k++ 2
c='B' k-- 1
//这里的case 'B'语句体中并没有break,故顺序执行到case 'C'
c=