下面程序的运行结果是什么?为什么?

来源:百度知道 编辑:UC知道 时间:2024/07/02 08:13:34
#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("k=%d\n", k);
}

改下程序 #include <stdio.h>

int main()
{
int k=0;

char c='A';

do
{
switch(c++)
{
case 'A': k++; printf("k={%d}\n", k); break;
case 'B': k--; printf("k=[%d]\n", k);
case 'C': k+=2; printf("k={%d}\n", k); break;
case 'D': k=k%2; printf("k=[%d]\n", k);continue;
case 'E': k=k*10; printf("k={%d}\n", k); break;
default: k=k/3; printf("k=[%d]\n", k);
}
k++; printf("k=(%d)\t", k);
}while(c<'G');

printf("k=%d\n", k);
}
编译下 看输出
先执行 switch 语句 k++; k=1;
在执行 下面的k++ ; k=2;
然后回到switch k-- ; k=1;
由于没有 break; 忽略了 case 标号 继续 k=3;
执行下面的语句 k++ ; k=4;
在执行 语句 k+=2; k=6;
执行下面的语句 k++; k=7;
执行语句 k%=2; k=1;
由于是 continue; 语句 中断后继续执行