有关case break continue的问题

来源:百度知道 编辑:UC知道 时间:2024/05/13 06:54:28
#include "stdio.h"
main( )
{char s[ ]="ABCCDA",c; int k;
for(k=1;(c=s[k])!='\0';k++)
{switch(c)
{case 'A':putchar('%');continue;
case 'B':++k;break;
default:putchar('*');
case 'C':putchar('&');continue;
}
putchar('#');
}
}
结果是:#&*&%

break 和continue在循环里的用法我知道,但这里是swtich我就搞不清了,请告诉我答案里的每个字符是怎么输出的,谢谢!

#include "stdio.h"
void main( )
{
char s[ ]="ABCCDA",c; int k;

for(k=1;(c=s[k])!='\0';k++) //从B开始的循环
{
/*
第一次循环为B,然后使++k,然后跳出switch语句执行一次输入"#",同时循环变量k++所以此时k已经为3了
第二次赋值c为第二个C,执行输入&,然后continue,即直接跳过下面的语句进行下一次循环,k++;此时k为4
第三次循环C赋值为D,下来没有,则输出*,由于没有break语句跳出,则继续向下执行case 'C',此时输出&然后又continue
进入下一次循环,k++,此时k为5
第四次循环C赋值为A,则输出%,又是continue,所以又直接进入下一次循环,k++,此时k=5,已经超出了范围,则循环结束,程序结束。

*/
switch(c)
{
case 'A':putchar('%');continue;
case 'B':++k;break;
default:putchar('*');
case 'C':putchar('&');continue;
}
putchar('#');
}
}