(五)流程控制switchcase
文章目录
- switch case
- 用法
- 全配套break
- 示例
- 演示
- 不全配套break
- 不怎么常规的写法
- 常规的写法
- 示例1
- 演示1
- 示例2
- 演示2
- 经典成绩分类案例
- 代码
- 演示
switch case
相对于ifelse的嵌套,switch case 有点像并列的感觉
用法
switch (一定要放整数类型,int 型变量、char 型变量,但不能放float 型变量、double 型变量、小数常量通通不行){
//这里面罗列(枚举)所要的事件(情况),格式case xx: break;case 0:break;case 1:break;default :break;//其他情况 全部归到default里面
}
全配套break
这里带break;每执行一个情况(事件),就跳出switch,注意细节;
示例
#include <stdio.h>int main()
{int cmd ;printf("这是一个switch case的程序================\n");puts("请输入一个整型数字");scanf("%d",&cmd);switch(cmd){case 1:puts("满足了条件1的情况");break;case 2:puts("满足了条件2的情况");break;case 3:puts("满足了条件3的情况");break;default:puts("其他非1,2,3的情况");break;}return 0;
}
演示

不全配套break
不带break,会执行多个情况(事件)直到某个情况里面带有break才会跳出switch,一般满足多个情况,按照示例写法,注意细节;
不怎么常规的写法
#include <stdio.h>int main()
{int cmd ;printf("这是一个switch case的程序================\n");puts("请输入一个整型数字");scanf("%d",&cmd);switch(cmd){case 1:puts("满足了条件1的情况");//break;case 2:puts("满足了条件2的情况");break;case 3:puts("满足了条件3的情况");break;default:puts("其他非1,2,3的情况");break;}return 0;
}
演示:

常规的写法
示例1
#include <stdio.h>int main()
{int cmd ;printf("这是一个switch case的程序================\n");puts("请输入一个整型数字");scanf("%d",&cmd);switch(cmd){case 1:case 2:puts("满足了条件1的情况");puts("也满足了条件2的情况");break;case 3:puts("满足了条件3的情况");break;default:puts("其他非1,2,3的情况");break;}return 0;
}
演示1

示例2
char 类型作为情况索引,其它负数作为情况自行测试
#include <stdio.h>int main()
{int cmd ;char cdata;printf("这是一个switch case的程序================\n");puts("请输入一个整型数字");scanf("%d",&cmd);switch(cmd){case 1:case 2:case 3:case 4:case 5:puts("满足了条件1,2,3,4,5的情况");break;case 6:puts("满足了条件6的情况");break;default:puts("其他非1,2,3,4,5,6的情况");break;}getchar();//吸收scanf的回车结束符,一定要注意printf("char 类型作为情况索引================\n");puts("请输入一个大写字母");scanf("%c",&cdata);switch(cdata){case 'A':puts("满足了条件A的情况");break; case 'B':puts("满足了条件B的情况");break;case 'C':puts("满足了条件C的情况");break;default:puts("其他非A,B,C的情况");break;}return 0;
}
演示2

经典成绩分类案例
代码
#include <stdio.h>int main()
{int score;printf("经典成绩分类编程\n");puts("请输入分数");scanf("%d",&score);switch(score/10){case 0:case 1:case 2:case 3:case 4:case 5:printf("等级为D,不及格,学渣\n");break;case 6:case 7:printf("等级为C,勉强及格,一般般\n");break;case 8:case 9:printf("等级为B,良好,不错了\n");break;case 10:printf("等级为A,优秀,学霸\n");break;default:puts("非法输入");break; }return 0;
}
这个代码稍微有点问题,就是100-109都是可以触发case10事件的
演示

----- 如有错误欢迎大家批评指正!!!