一、continue和break
使用while或for循环时,如果想提前结束循环(在不满足结束条件的情况下结束循环),可以使用break或continue关键字。
1.break关键字
当 break 关键字用于 while、for循环时,会终止循环而执行整个循环语句后面的代码。break 关键字通常和 if 语句一起使用,即满足条件时便跳出循环。
2.continue语句
continue 语句的作用是跳过循环体中剩余的语句而强制进入下一次循环。continue语句只用在 while、for 循环中,常与 if 条件语句一起使用,判断条件是否成立。
来看一个例子:

include

int main(){

char c = 0;

while(c!='\n'){  //回车键结束循环

scanf(“%c”,&c);

if(c'4' || c'5'){  //按下的是数字键4或5

continue;  //跳过当次循环,进入下次循环

}

printf(“%c”,c);

}

return 0;

}


运行结果:
0123456789
01236789
程序遇到while时,变量c的值为'\0',循环条件c!='\n'成立,开始第一次循环。scanf 使程序暂停执行,等待用户输入,直到用户按下回车键才开始读取字符。
break与continue的对比:break 用来结束循环,循环语句不再有执行的机会;continue 用来结束本次循环,直接跳到下一次循环,如果循环条件成立,还会继续循环。
continue和break语句的用法与区别总结
(1)当它们用在循环语句的循环体时,break用于立即退出本层循环,而continue仅仅结束本次循环(本次循环体内不执continue语句后的其它语句,但下一次循环还会继续执行。
(2) 如果有多层循环时,break只会跳出本层循环,不会跳出其他层的循环.
(3)break可用于switch语句,表示跳出整个switch语句块,而continue则不能单独的用于switch语句。但是continue可以用于循环内部的switch语句。
(4)break和continue语句在循环内的switch语句中使用时,是有区别的。在这种情况下的break是指跳出switch语句块(switch语句块的代码仍然执行)。而这种情况下的continue是指结束本次循环(不在执行switch后面的代码),进行下一次循环。
二、switch语句
当分支较少的时候,我们选择if else 语句解决,当分支比较多的时候,我们要使用switch case语句解决,针对分支的复杂性选择合适的程序解决。
当分支过多时,用 if else 处理会不太方便,而且容易出现 if else 配对出错的情况。
1.例如,输入一个整数,输出该整数对应的星期几的英文表示:

include

int main(){

int a;

printf("Input integer number:");

scanf("%d",&a);

if(a1){

printf("Monday\n");

}else if(a2){

printf("Tuesday\n");

}else if(a3){

printf("Wednesday\n");

}else if(a4){

printf("Thursday\n");

}else if(a5){

printf("Friday\n");

}else if(a6){

printf("Saturday\n");

}else if(a==7){

printf("Sunday\n");

}else{

printf("error\n");

}

return 0;

}

运行结果:
Input integer number:3
Wednesday
2.对于上述情况,在实际开发中一般使用 switch 语句代替,请看下面的代码:

include

int main(){

int a;

printf("Input integer number:");

scanf("%d",&a);

switch(a){

case 1: printf("Monday\n"); break;

case 2: printf("Tuesday\n"); break;

case 3: printf("Wednesday\n"); break;

case 4: printf("Thursday\n"); break;

case 5: printf("Friday\n"); break;

case 6: printf("Saturday\n"); break;

case 7: printf("Sunday\n"); break;

default:printf("error\n"); break;

}

return 0;

}


运行结果:
Input integer number:4
Thursday
3.switch 是另外一种选择结构的语句,用来代替简单的、拥有多个分枝的 if else 语句,基本格式如下:

switch(表达式){

case 整型数值1: 语句 1;

case 整型数值2: 语句 2;

......

case 整型数值n: 语句 n;

default: 语句 n+1;

}


执行过程:
(1)首先计算“表达式”的值,假设为 m。
(2)从第一个 case 开始,比较“整型数值1”和 m,如果它们相等,就执行冒号后面的所有语句,也就是从“语句1”一直执行到“语句n+1”,而不管后面的 case 是否匹配成功。
(3) 如果“整型数值1”和 m 不相等,就跳过冒号后面的“语句1”,继续比较第二个 case、第三个 case……一旦发现和某个整型数值相等了,就会执行后面所有的语句。假设 m 和“整型数值5”相等,那么就会从“语句5”一直执行到“语句n+1”。
(4)如果直到最后一个“整型数值n”都没有找到相等的值,那么就执行 default 后的“语句 n+1”。
注意,当和某个整型数值匹配成功后,会执行该分支以及后面所有分支的语句。
由于 default 是最后一个分支,匹配后不会再执行其他分支,所以也可以不添加break;语句。
最后需要说明的两点是:
(1)case 后面必须是一个整数,或者是结果为整数的表达式,但不能包含任何变量。请看下面的例子:

case 10: printf("..."); break;  //正确

case 8+9: printf("..."); break;  //正确

case 'A': printf("..."); break;  //正确,字符和整数可以相互转换

case 'A'+19: printf("..."); break;  //正确,字符和整数可以相互转换

case 9.5: printf("..."); break;  //错误,不能为小数

case a: printf("..."); break;    //错误,不能包含变量

case a+10: printf("..."); break;  //错误,不能包含变量


(2) default 不是必须的。