前言:前段时间因为博主在校的事情过多,在文章的更新上有所怠慢,在接下来的时间里,我会尽快更新,尽早补上之前的文章。好了,言归正传,我们生活中肯定会遇到各种各样的选择,同样在c语言的学习,我们在编写代码时也会遇到分支选择,为了解决这个问题,c语言中的分支语句为我们轻松解决这个问题。
标题1:分支if语句
分支中最基本的分支就是分为两个分支,if语句就是用来解决二分支问题或者三分支等三分支问题。例如简单的比较两个不相等的数字大小的程序
除了运用三目运算符
#define _CRT_SECURE_NO_WARNINGS 1 #includeint main() { int a = 0, b = 0; scanf("%d %d", &a, &b); int max = (a > b ? a : b); printf("max=%d", max); return 0; }
我们也可以使用if语句来判断
#define _CRT_SECURE_NO_WARNINGS 1 #includeint main() { int a = 0, b = 0; int max = 0; scanf("%d %d", &a, &b); if (a < b) { printf("max=%d", b); } else { printf("max=%d", a); } return 0; }
if语句在使用时要牢记带上大括号,如果没有大括号,if语句只会引领紧跟他的下面一条语句,
除了上面的情况外,if语句的不规范书写也可能会造成“悬空else”的问题
#define _CRT_SECURE_NO_WARNINGS 1 #includeint main() { int a = 0; int b = 2; if (a == 1) if (b == 2) printf("hehe"); else printf("haha"); return 0; }
这个代码就是典型的悬空else,造成这个悬空else就是因为代码风格不好,对于缩进和大括号的把握不好,但如果改成下面的这个样子就清晰多了
标题2:分支switch语句
平时简单的判断用if语句就可以实现判断,但是,生活中的判断并不会那么简单,例如星期几的判断,当然这个代码也可以用if语句解决
#define _CRT_SECURE_NO_WARNINGS 1 #includeint main() { int day = 0; scanf("%d", &day);//输入1-7,表示从星期一到星期天 if (day == 1) printf("今天是星期一"); else if (day == 2) printf("今天是星期二"); else if (day == 3) printf("今天是星期三"); else if (day == 4) printf("今天是星期四"); else if (day == 5) printf("今天是星期五"); else if (day == 6) printf("今天是星期六"); else if (day == 7) printf("今天是星期天"); return 0; }
但这样的代码书写起来,太过麻烦。这时就可以用switch 语句
#define _CRT_SECURE_NO_WARNINGS 1 #includeint main() { int day = 0; scanf("%d", &day);//输入1-7,表示从星期一到星期天 switch (day) { case 1: { printf("今天是星期一"); break; } case 2: { printf("今天是星期二"); break; } case 3: { printf("今天是星期三"); break; } case 4: { printf("今天是星期四"); break; } case 5: { printf("今天是星期五"); break; } case 6: { printf("今天是星期六"); break; } case 7: { printf("今天是星期天"); break; } } return 0; }
case后面的值的顺序并没有从小到大,或者是从大到小的规定,只是为了让代码有序,才选择一种顺序进行排序
注意:switch()里的一定是一个整形表达式,而这里的case相当于是一个个入口,当switch()里的整形表达式满足哪个case后面的值(这里的值也一定要是整形常量)时,程序从哪进去开始运行直到结束,不信可以运行一下下面的代码
#define _CRT_SECURE_NO_WARNINGS 1 #includeint main() { int day = 0; scanf("%d", &day);//输入1-7,表示从星期一到星期天 switch (day) { case 1: { printf("今天是星期一"); } case 2: { printf("今天是星期二"); } case 3: { printf("今天是星期三"); } case 4: { printf("今天是星期四"); } case 5: { printf("今天是星期五"); } case 6: { printf("今天是星期六"); } case 7: { printf("今天是星期天"); } } return 0; }
如果是浮点型的话,绝对不能使用switch语句
default子语句default语句的作用是默认,即当switch语句中case语句后面的整型常量都不能满足switch()里的整型表达式的值时,就会执行default语句后面的代码。例如:
#define _CRT_SECURE_NO_WARNINGS 1 #includeint main() { int day = 0; scanf("%d", &day);//输入1-7,表示从星期一到星期天 switch (day) { case 1: { printf("今天是星期一"); } case 2: { printf("今天是星期二"); } case 3: { printf("今天是星期三"); } case 4: { printf("今天是星期四"); } case 5: { printf("今天是星期五"); } case 6: { printf("今天是星期六"); } case 7: { printf("今天是星期天"); } default: { printf("输入错误,请输入1-7的数字n"); break; } } return 0; }



