switch语句是多分支语句,用来实现多分支结构
用法:
switch(表达式) //表达式不能是浮点型
{
case 常量c1:
语句1
case 常量c2:
语句
……
case 常量cn:
语句n
default:
语句n+1
}
首先switch里的表达式会和c1比较,如果相等则执行语句1,反之继续判断c2,,以此类推,直到判断cn,相等执行语句n,反之执行语句n+1
这里要注意 假如表达式的值与其中一个case后面的值一样的话,会执行输出该值语句和后面所有的case的下的语句(包括default下的语句),这个问题可以使用break语句开跳出switch语句结构(break加在case语句块内的语句后面)
代码:
/*switch实现多分支结构
范例 这是星期几*/
#include <stdio.h>
int main()
{
int week;
scanf("%d",&week);
switch(week)
{
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");
}
return 0;
}
简单四则运算范例
代码:
/*switch实现多分支结构
范例 简单四则运算(了解思路自编写)*/
#include <stdio.h>
int main()
{
float a,b;
char c;
printf("请输入俩数运算");
scanf("%f%c%f",&a,&c,&b);
switch(c)
{
case '+':
printf("%f%c%f=%f",a,c,b,a+b);break;
case '-':
printf("%f%c%f=%f",a,c,b,a-b);break;
case '*':
printf("%f%c%f=%f",a,c,b,a*b);break;
case '/':
if(b!=0)
printf("%f%c%f=%f",a,c,b,a/b);
else
printf("分母不能为0\n");break;
default:
printf("运算符输入错误");
}
return 0;
}
/*switch实现多分支结构
课后观察*/
#include <stdio.h>
int main()
{
int a=2,b=7,c=5;
switch(a>0)
{
case 1:
switch(b<0)
{
case 1:
printf("@");break;
case 2:
printf("!");break;
} //第一个大case后面没有break 所以输出下面的语句,无论条件是否成立,均输出
case 0:
switch(c==5)
{
case 1:
printf("*");break;
case 2:
printf("#");break;
default:
printf("#");break;
}
default:
printf("&");
}
printf("\n");
return 0;
}
结果为*& 多次判断,灵活应用break的特性进行编写