7progress control-选择(switch)
switch语句
格式:
switch (表达式)
{
case 常量表达式1: 语句1;
case 常量表达式2: 语句2;
case 常量表达式3: 语句3;
default: 常量表达式4: 语句4;
}
#include <stdio.h>
int main(void)
{
int val;
printf("请你输入楼层:\n");
scanf("%d", &val);
switch (val)
{
case 1:
printf("1层开!\n");
break;
case 2:
printf("2层开!\n");
break;
case 3:
printf("3层开!\n");
break;
default:
printf("没有盖到这一层!\n");
break;
}
return 0;
}
说明:(1)case是程序的入口,一旦找到程序的入口,case将失效。
(2)break的作用是终止switch;
break和continue
break如果用于循环,则用来终止循环;
break如果用于switch,则用于终止switch;
break不能直接用于if,除非if属于循环内部的一个子句;
例题:
#include <stdio.h>
int main(void)
{
int i;
for (i=0; i<3; ++i)
{
if (3>2)
break;//break虽然是if的内部语句,但break却终止的外部的for循环
printf("嘿嘿!\n");
}
return 0;
}
break只能终止距离它最近的循环
#include <stdio.h>
int main(void)
{
int i, j;
for (i=1; i<4; ++i)
{
for (j=1; j<4; ++j)
break;//break只能终止距离它最近的循环
printf("同志们好!\n");
}
return 0;
}
在多层switch嵌套中,break只能终止距离它最近的switch
#include <stdio.h>
int main(void)
{
int x=1, y=0, a=0, b=0;
switch(x)//第一个switch
{
case 1:
switch(y)//第二个switch
{
case 0:
a++;
break;//终止的是第二个switch
case 1:
b++;
break;
}
b = 100;
break;//终止的是第一个switch
case 2:
a++;
b++;
break;
}
printf("a=%d, b=%d\n", a, b);
return 0;
}
/*
在vc++6.0中的输出结果:a=1, b=100
*/
continue
用于跳过本次循环余下的语句,转去判断是否要执行下次循环
1)for语句的格式:
for (1, 2, 3)
{
A;
B;
continue;//该语句执行后,执行语句3,C和D语句都会被跳过去,C和D语句不会被执行
C;
D;
}
流程:执行continue语句后,执行语句3,C和D语句都会被跳过去,C和D语句不会被执行;
2)while语句的格式
while(表达式)
{
A;
B;
continue;//该语句执行后,去执行表达式,C和D都会被跳过去,C和D语句不会被执行
C;
D;
}
流程:执行continue语句后,执行表达式,C和D语句都会被跳过去,C和D语句不会被执行;

浙公网安备 33010602011771号