引例:
输入1-5中的任意一共数字,对应的打印字符A,B,C,D,E
int num = 0;
printf("Input a number[1,5]:");
scanf("%d",&num);
if( num == 1)
printf("A\n");
else
if(num==2)
printf("B\n");
else if(num== 3)
printf("C\n");
else
if(num == 4)
printf("D\n");
else
if(num ==5 )
printf("E\n");
else
printf("Invalid Inut\n");
问题:有没有更加简洁的多分支选择结构语句?
switch-更简洁的多分支选择结构
wsitch(var)
{
case x;
//语句x1;
//......var == x,时,执行这里的语句
//语句xn;
break;//每个分支代码的最后必须加上break,否则将继续向下执行。
case y;
//语句y1;
//......var == y,时,执行这里的语句
//语句yn;
break;
case z;
//语句z1;
//......var == z,时,执行这里的语句
//语句zn;
break;
default;//默认情况,执行default的语句
}
示例分析:
#include<stdio.h>
int main( )
{
int a= 1;//先定义三个变量
int b = 2;
char sign =0;//char是只有一个的整型
printf("Input a sign:");//打印字符串
scanf("%c",&sign);//输入字符
getchar();//解决闪退问题
switch(sign)//进行多分支选择
{
case'+'://如果键盘上输入的是+,就是进行加法运算,然后跳出;
printf("%d + %d = %d\n",a, b, a+ b);
break;
case'-'://如果键盘上输入的是-,就是进行减法运算,然后跳出;
printf("%d-%d=%d\n",a,b,a-b);
break;
default://如果上面都不满足;
printf("Unsupport sign:%c\n", sign);
}
getchar();
return 0;
}
运行结果:
更改1
现在根据所学,对引例进行更改;
#include<stdio.h>
int main( )
{
int num= 0;//先定义三个变量
printf("Input a number[1,5]:");//打印字符串
scanf("%d",&num);//输入字符
getchar();//解决闪退问题
switch( num )//进行多分支选择
{
case 1://如果键盘上输入的是1,就是A,然后跳出
printf("A\n");
break;
case 2://如果键盘上输入的是2,就是B,然后跳出
printf("B\n");
break;
case 3://如果键盘上输入的是3,就是C,然后跳出
printf("C\n");
break;
case 4://如果键盘上输入的是4,就是D,然后跳出
printf("D\n");
break;
case 5://如果键盘上输入的是5,就是E,然后跳出
printf("E\n");
break;
default://如果上面都不满足
printf("Invalid Inut\n");
}
getchar();
return 0;
}
运行结果:
switch 实验小结
1.switch 仅能适用于离散变量或值(整数值 ),如果用浮点型就会报错;
2.case 是分支入口,匹配成功后执行case 下的语句;
3.当语句全部执行后,需要使用 break 跳出执行分支;
4.default 分支不是必须的(类似于 else 分支不是必须的);
示例分析:
#include<stdio.h>
int main()
{
int num = 0;
printf("Input a number:");
scanf("%d",&num);
getchar();
switch( num % 3)//%整除3取余数
{
case 0:
printf("Object Number:%d\n",num);//需要的数
break;//不要忘记break,如果没有就会把所有需要打印的都打印了
case 1:
printf("Bigger!\n");//数大了,减一就可以除三
break;
case 2:
printf("Smaller!\n");//数小了,减一就可以除三
break;
}
getchar();
return 0;
}
运行结果:
switch语句的分支合并技巧
switch(var)
{
case a;
case b;
语句1;//var == a||var == b时,执行这里的语句;
......
语句n;
break;
case c;
case d;
语句1;//var == a||var == b时,执行这里的语句;
......
语句n;
break;
default;
......
}
更改2
#include<stdio.h>
int main( )
{
int num= 0;//先定义三个变量
printf("Input a number[1,5]:");//打印字符串
scanf("%d",&num);//输入字符
getchar();//解决闪退问题
switch( num )//进行多分支选择
{
case 1:
case 2:
case 3:
case 4:
case 5:
printf("%c\n" , 'A'+(num-1) );
//B-A=1,(B=A+1);C-A=2,(C=A+2)...E-A=4,(E=A+4)
//注意,时‘’,不是“”
break;
default://如果上面都不满足
printf("Invalid Inut\n");
}
getchar();
return 0;
}
运行结果:
小结:
1.switch 是一种更简洁的分支选择结构
2.switch 仅能适用于整数(小数不可用)
3.case 是分支入口,匹配成功后执行 case 下的语句
4.当语句全部执行后,需要使用 break 跳出执行分支
5.多个 case 可合并在一起,执行相同的语句