分支结构
本课目标:
掌握逻辑条件表达式的用法,学会用分支结构实现程序的“决策功能”。
一、引言
二、逻辑条件表达式:程序的“判断标准”
逻辑条件表达式会计算出一个布尔值(bool),只有两种结果:true(真)或false(假)。
1. 布尔类型(bool)
true:代表“成立”(如“5 > 3”是真的);false:代表“不成立”(如“5 < 3”是假的)。
2. 比较运算符(用于比较大小/相等)
| 运算符 | 含义 | 示例 | 结果 |
|---|---|---|---|
== | 等于 | 5 == 3 | false |
!= | 不等于 | 5 != 3 | true |
> | 大于 | 5 > 3 | true |
< | 小于 | 5 < 3 | false |
>= | 大于等于 | 5 >= 5 | true |
< = | 小于等于 | 5 < = 3 | false |
示例:
int a = 5, b = 3;
a > b // true (真)
a == b // false (假)
a != b // true (真)
a <= 5 // true (真)
3. 逻辑运算符(用于组合多个条件)
| 运算符 | 名称 | 规则 | 示例 | 结果 |
|---|---|---|---|---|
&& | 逻辑与 | 两边都为true,结果才true | (5>3) && (10 < 20) | true |
| ` | ` | 逻辑或 | 只要有一边为true,结果就true | |
! | 逻辑非 | 取反(true变false,反之亦然) | !(5>3) | false |
真值表:
| A | B | A && B | A || B | !A |
|---|---|---|---|---|
| 真 | 真 | 真 | 真 | 假 |
| 真 | 假 | 假 | 真 | 假 |
| 假 | 真 | 假 | 真 | 真 |
| 假 | 假 | 假 | 假 | 真 |
示例:
#include <bits/stdc++.h>
using namespace std;
int main() {
int score = 85;
bool isPass = (score >= 60); // true
cout<<isPass<<endl;
int age = 16;
bool canVote = (age >= 18); // false
cout<<canVote<<endl;
// 组合条件
bool isExcellent = (score >= 90) && (age < 18); // false
bool isTeenager = (age >= 13) && (age <= 19); // true
cout<<isExcellent<<endl;
cout<<isTeenager<<endl;
return 0;
}
三、分支结构:程序的“决策流程”
分支结构根据条件的真假,选择执行不同的代码块。C++中最常用的分支语句是**if语句**。
1. 最简单的if语句(单分支)
当条件满足时,执行指定代码;否则,跳过。
语法:
if (条件表达式) {
// 条件为true时执行的代码
}
示例:判断一个数是否为正数
#include <bits/stdc++.h>
using namespace std;
int main() {
int num;
cin >> num; // 输入一个数
if (num > 0) { // 如果num大于0
cout << "这是一个正数" << endl;
}
return 0;
}
2. 带else的if语句(双分支)
当条件不满足时,执行另一段代码。
语法:
if (条件表达式) {
// 条件为true时执行的代码
} else {
// 条件为false时执行的代码
}
示例:判断奇偶数
#include <bits/stdc++.h>
using namespace std;
int main() {
int num;
cin >> num;
if (num % 2 == 0) { // 能被2整除(余数为0)
cout << "这是一个偶数" << endl;
} else {
cout << "这是一个奇数" << endl;
}
return 0;
}
3. 多分支else if语句
处理多个条件的分支(如成绩分级)。
语法:
if (条件1) {
// 条件1为true时执行的代码
} else if (条件2) {
// 条件1为false,条件2为true时执行的代码
} else {
// 所有条件都不满足时执行的代码
}
####示例####:
1、根据成绩划分等级
#include <bits/stdc++.h>
using namespace std;
int main() {
double score;
cin >> score;
if (score >= 90) {
cout << "优秀" << endl;
} else if (score >= 80) {
cout << "良好" << endl;
} else if (score >= 70) {
cout << "中等" << endl;
} else if (score >= 60) {
cout << "及格" << endl;
} else {
cout << "不及格" << endl;
}
return 0;
}
4. 嵌套if语句(复杂条件)
在if或else内部再使用if语句,处理更复杂的逻辑。
####示例:
- 判断一个数是否在1~100之间
#include <bits/stdc++.h>
using namespace std;
int main() {
int num;
cin >> num;
if (num > 0) { // 先判断是否为正数
if (num < 100) { // 再判断是否小于100
cout << "这个数在1到99之间" << endl;
} else {
cout << "这个数大于等于100" << endl;
}
} else {
cout << "这个数小于等于0" << endl;
}
return 0;
}
- 判断闰年的代码:
#include <bits/stdc++.h>
using namespace std;
int main() {
int year;
cin >> year;
if (year % 4 == 0) {
if (year % 100 == 0) {
if (year % 400 == 0) {
cout << year << "是闰年" << endl;
} else {
cout << year << "不是闰年" << endl;
}
} else {
cout << year << "是闰年" << endl;
}
} else {
cout << year << "不是闰年" << endl;
}
return 0;
}
四、实战练习
练习1:三角形类型判断
练习2:简单计算器
#include <bits/stdc++.h>
using namespace std;
int main() {
char op;
double num1, num2;
cin >> num1 >> op >> num2;
if (op == '+') {
cout << num1 + num2 << endl;
} else if (op == '-') {
cout << num1 - num2 << endl;
} else if (op == '*') {
cout << num1 * num2 << endl;
} else if (op == '/') {
if (num2 != 0) {
cout << num1 / num2 << endl;
} else {
cout << "错误:除数不能为0" << endl;
}
} else {
cout << "无效的操作符" << endl;
}
return 0;
}
五、常见错误与注意事项
-
混淆=和==:
=是赋值,==是比较// 错误
if (a = 5) { ... } //a 被赋值为5,条件表达式始终为true
// 正确
if (a == 5) { ... } -
忘记花括号:如果代码块有多条语句,必须使用花括号
// 错误 - 只有cout语句受if控制
if (score >= 60)
cout << "及格" << endl;
cout << "恭喜!" << endl;
// 正确
if (score >= 60) {
cout << "及格" << endl;
cout << "恭喜!" << endl;
} -
逻辑运算符优先级:
!>&&>||// 建议使用括号明确优先级
if ((a > 0 && b > 0) || c > 0) -
缩进很重要:
C++中缩进不影响程序运行,但良好的缩进能让代码更易读(建议用Tab或空格缩进)。 -
覆盖所有分支:
用else if和else确保所有可能的情况都被处理(避免“意外情况”)。