导语:switch语句是一个多分支选择语句,并且可以支持嵌套
switch语句的基本格式
switch语句通过将表达式的值与常量值进行比对,如果相等则执行后面的语句,如果不相等则跳到下一个case语句,当表达式和常量值相等,switch语句会将当前case语句以及后面所有的case语句全部输出。假如我们要实现用户输入一个数字来判断今天是星期几,那么就可以用下面的代码实现
1. //#define _CRT_SECURE_NO_WARNINGS 1 2. //#include <stdio.h> 3. //int main() 4. //{ 5. // int day = 0; 6. // printf("请输入一个数字\n"); 7. // scanf("%d", &day); 8. // switch (day) 9. // { 10. // case 1:printf("星期一\n"); 11. // break; 12. // case 2:printf("星期二\n"); 13. // break; 14. // case 3:printf("星期三\n"); 15. // break; 16. // case 4:printf("星期四\n"); 17. // break; 18. // case 5:printf("星期五\n"); 19. // break; 20. // case 6:printf("星期六\n"); 21. // break; 22. // case 7:printf("星期天\n"); 23. // break; 24. // } 25. // return 0; 26. //}
这里我们加上一个break语句会有意想不到的结果,当语句运行到break时就不再运行了,接下来剩下的case语句也不会再执行,switch语句结束,看下面的代码的运行结果
1. //#define _CRT_SECURE_NO_WARNINGS 1 2. //#include <stdio.h> 3. //int main() 4. //{ 5. // int day = 0; 6. // printf("请输入一个数字\n"); 7. // scanf("%d", &day); 8. // switch (day) 9. // { 10. // case 1:printf("星期一\n"); 11. // break; 12. // case 2:printf("星期二\n"); 13. // break; 14. // case 3:printf("星期三\n"); 15. // break; 16. // case 4:printf("星期四\n"); 17. // break; 18. // case 5:printf("星期五\n"); 19. // break; 20. // case 6:printf("星期六\n"); 21. // break; 22. // case 7:printf("星期天\n"); 23. // break; 24. // } 25. // return 0; 26. //}
如果用户输入时不小心输入了一个switch语句中没有的常量值怎么办呢,只需要一个default就可以解决问题,请看下面代码将会体现出default的作用
1. //#define _CRT_SECURE_NO_WARNINGS 1 2. //#include <stdio.h> 3. //int main() 4. //{ 5. // //实现1-5都为工作日,6,7为休息日,可以看出当case语句后没有执行语句且没有break时代码会从条件判断成立进入,直到遇到break 6. // int day = 0; 7. // scanf_s("%d", &day); 8. // switch (day) 9. // { 10. // case 1: 11. // case 2: 12. // case 3: 13. // case 4: 14. // case 5:printf("工作日\n"); 15. // break; 16. // case 6:printf("休息日\n"); 17. // break; 18. // case 7:printf("休息日\n"); 19. // break; 20. // default:printf("请重新输入\n"); 21. // break; 22. // } 23. // 24. // return 0; 25. //}
switch的嵌套语句,这就需要你们自己去尝试的领悟,得出代码的结果
1. //#define _CRT_SECURE_NO_WARNINGS 1 2. //#include <stdio.h> 3. //int main() 4. //{ 5. // int n = 1; 6. // int m = 2; 7. // switch (n) 8. // { 9. // case 1:m++; 10. // case 2:n++; 11. // case 3: 12. // switch (n) //switch语句可以支持嵌套 13. // { 14. // case 1:n++; 15. // case 2:m++; n++; 16. // break; 17. // default: 18. // break; 19. // } 20. // case 4:m++; 21. // break; 22. // default: 23. // break; 24. // } 25. // printf("m=%d,n=%d\n", m, n); 26. // return 0; 27. //}
本章终,谢谢大家支持!