引例:
输入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");
elseprintf("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 可合并在一起,执行相同的语句