条件判断结构——复杂if-else结构
一、课上练习
编程练习
示例代码
判断成绩等级代码示例
1#include <bits/stdc++.h>
2using namespace std;
3
4int main() {
5 int fenshu;
6 cin >> fenshu;
7 if (fenshu >= 86) {
8 cout << "VERY GOOD" << endl;
9 } else {
10 if (fenshu >= 60) {
11 cout << "GOOD" << endl;
12 } else {
13 cout << "BAD" << endl;
14 }
15 }
16 return 0;
17}小明暑假的零花钱代码示例
1#include <bits/stdc++.h>
2using namespace std;
3
4int main() {
5 int fenshu;
6 cin >> fenshu;
7 if (fenshu >= 90) {
8 cout << fenshu * 3 << endl;
9 } else if (fenshu >= 80) {
10 cout << fenshu * 2 << endl;
11 } else if (fenshu >= 70) {
12 cout << fenshu << endl;
13 } else {
14 cout << 50 << endl;
15 }
16 return 0;
17}分段函数代码示例
1#include <bits/stdc++.h>
2using namespace std;
3
4int main() {
5 double x;
6 cin >> x;
7 double y = 0;
8 if (x < 5) {
9 y = -x + 2.5;
10 } else if (x < 10) {
11 y = 2 - 1.5 * (x - 3) * (x - 3);
12 } else {
13 y = x / 2 - 1.5;
14 }
15 printf("%.3f", y);
16 return 0;
17}计算邮费代码示例
1#include <bits/stdc++.h>
2using namespace std;
3
4int main() {
5 int zhongliang;
6 char flag;
7 cin >> zhongliang >> flag;
8 int youfei = 8;
9 if (zhongliang > 1000) {
10 zhongliang -= 1000;
11 youfei += zhongliang / 500 * 4;
12 if (0 != zhongliang % 500) {
13 youfei += 4;
14 }
15 }
16 if ('y' == flag) {
17 youfei += 5;
18 }
19 cout << youfei << endl;
20 return 0;
21}闰年判断代码示例
1#include <bits/stdc++.h>
2using namespace std;
3
4int main() {
5 int year;
6 cin >> year;
7 if (0 == year % 400) {
8 cout << "Y" << endl;
9 } else {
10 if (0 == year % 100) {
11 cout << "N" << endl;
12 } else {
13 if (0 == year % 4) {
14 cout << "Y" << endl;
15 } else {
16 cout << "N" << endl;
17 }
18 }
19 }
20 return 0;
21}
22#include <bits/stdc++.h>
23using namespace std;
24
25int main() {
26 int year;
27 cin >> year;
28 if (0 == year % 400 || 0 != year % 100 && 0 == year % 4) {
29 cout << "Y" << endl;
30 } else {
31 cout << "N" << endl;
32 }
33 return 0;
34}二、知识总结
✨ if-else嵌套结构
语法格式
嵌套if-else结构允许在一个if或else代码块内部包含另一个if-else结构,用于需要多级条件判断的场景。
if-else嵌套语法格式
1if (布尔表达式1) {
2 if (布尔表达式2) {
3 操作1
4 } else {
5 操作2
6 }
7} else {
8 if (布尔表达式3) {
9 操作3
10 } else {
11 操作4
12 }
13}if-else嵌套流程图
正在渲染流程图...
注意事项
使用嵌套if-else时需要注意以下几点:
- 嵌套结构中任意的if结构都可以单独使用
- if后的布尔表达式需要用一对小括号包裹住
- 如果if-else后只跟一个if-else结构,则认为是一个大的操作,可以不加大括号(但建议初学者始终加大括号,避免出错)
综合示例:判断成绩等级
根据分数判断成绩等级:先判断是否优秀,再判断是否及格。
正在渲染流程图...
判断成绩等级代码
1int score;
2cin >> score;
3if (score >= 90) {
4 if (score >= 95) {
5 cout << "特优" << endl;
6 } else {
7 cout << "优秀" << endl;
8 }
9} else {
10 if (score >= 60) {
11 cout << "及格" << endl;
12 } else {
13 cout << "不及格" << endl;
14 }
15}✨ if-else if-else链结构
语法格式
if-else链用于根据多个条件依次检查并执行对应的代码块,是嵌套if-else的一种简化写法。
if-else链语法格式
1if (布尔表达式1) {
2 操作1
3} else if (布尔表达式2) {
4 操作2
5} else if (布尔表达式3) {
6 操作3
7} else {
8 操作4
9}if-else链流程图
正在渲染流程图...
注意事项
使用if-else链时需要注意以下几点:
- if后的布尔表达式需要用一对小括号包裹住
- if-else if结构可以单独使用,即最后可以省略一个else
- 如果if-else后需要执行多行代码,必须使用大括号包裹住
综合示例:闰年判断
能被400整除是闰年;能被100整除但不能被400整除不是闰年;能被4整除是闰年;其他不是闰年。
正在渲染流程图...
闰年判断代码
1int year;
2cin >> year;
3if (year % 400 == 0) {
4 cout << "闰年" << endl;
5} else if (year % 100 == 0) {
6 cout << "非闰年" << endl;
7} else if (year % 4 == 0) {
8 cout << "闰年" << endl;
9} else {
10 cout << "非闰年" << endl;
11}