3.5 if语句和switch语句的嵌套形式
3.5.1 if语句的嵌套
允许在if语句中包含一个或多个if的语句,称为if的语句嵌套。如图:
#include <stdio.h>
int main() {
int gameover = 0;
int player = 0;
scanf_s("%d %d", &gameover, &player);
if (gameover == 0) {
if (player == 2) {
printf("my turn\n");
}
else {
printf("your turn\n");
}
}
else {
printf("game over\n");
}
return 0;
}
注意:if一定一定要与else配对,且遵从就近原则(else与离它最近的if匹配),否则要加大括号表明。另外,一个if对应一个else。
语义:计算表达式,判断非零为真,零为假
底层:顺序判断,从上到下依次求值,满足就走对应分支(可以画流程图解决);else if 是串行判断。
else if和else的区别:else if前面条件不符合时候判断的其它情况,else放在末尾,当前面所有的if和else if都不能被满足时候使用的兜底分支,与前面的条件互斥。它们只要有一个分支命中,后面所有分支直接跳过,不会继续判断。
3.5.2 switch语句的嵌套
在switch语句中,可以包含另一个switch语句。
switch-case:(上课时候的笔记)
1、控制表达式只能是整数型的结果,if是不限数据类型的
2、常量可以是常数,也可以是常数计算的表达式
3、根据表达式的结果,寻找匹配的case,并执行case后面的语句,直到break为止
4、如果所有的case都不匹配,那么就执行default后面的语句;如果没有default,那么就什么都不做
break:(也是上课时候的笔记)
switch语句可以看作是一种基于计算的跳转,计算控制表达式的值后,程序会跳转到相匹配的case(分支标号)处。分支标号只是说明switch内部位置的路标,在执行完分支中的最后一条语句后,如果后面没有break,就会顺序执行到下面的case里去,直到遇到一个break或者switch结束为止。
#include <stdio.h>
int main(){
int grade;
printf("请输入百分制成绩:");
scanf("%d", &grade);
switch (grade) {
case 10:
case 9:
printf("A");
break;
case 8:
printf("B");
break;
case 7:
printf("C");
break;
case 6:
printf("D");
break;
default:
printf("E");
break;
}
return 0;
}
以下用两个流程图直观体现if语句和switch语句的区别,继续感谢AI的帮忙:
点击查看代码
flowchart TD
A[开始] --> B{条件1成立?}
B --是--> C[执行分支1] --> Z[结束]
B --否--> D{条件2成立?}
D --是--> E[执行分支2] --> Z
D --否--> F{条件3成立?}
F --是--> G[执行分支3] --> Z
F --否--> H[else兜底分支] --> Z
点击查看代码
flowchart TD
A[开始] --> B[计算表达式,得到整型val]
B --> C{匹配case?}
C --val==case1--> D[case1代码<br/>break跳出] --> Z[结束]
C --val==case2--> E[case2代码<br/>break跳出] --> Z
C --val==case3--> F[case3代码<br/>break跳出] --> Z
C --都不匹配--> G[default兜底] --> Z
include&It;stdio.h>
int main(){
printf("Welcome to lonelywhale's world!\n");
printf("It's a whale named Willow");
return 0;
}

浙公网安备 33010602011771号