当前位置:首页 > 课程体系 > 正文

004. 分支结构

一、比较运算符

用于比较两个操作数的关系,返回 bool 类型结果(true 或 false)。
运算符含义示例
==等于a == b
!=不等于a != b
>大于a > b
<小于a < b
>=大于等于a >= b
<=小于等于a <= b
#include <iostream>
#include <cstdio>
using namespace std;
int main() {
    // 比较运算符示例
    cout << (5 == 5) << endl; // 相等,输出 1(true)
    cout << (5 > 3) << endl;  // 大于,输出 1(true)
    cout << (5 < 3) << endl;  // 小于,输出 0(false)
    cout << (5 >= 5) << endl; // 大于等于,输出 1(true)
    cout << (5 <= 3) << endl; // 小于等于,输出 0(false)
    cout << (5 != 3) << endl; // 不等于,输出 1(true)
    return 0;}

二、逻辑运算符

用于组合多个条件,返回 bool 类型结果。
运算符含义示例结果说明
&&逻辑与(且)a && b当 a 和 b 均为 true 时返回 true
||逻辑与(或)a || b当 a 和 b 有一个为 true 时返回 true
!逻辑非(取反)!a当 a 为 false 时返回 true,反之亦然
#include <iostream>
#include <cstdio>
using namespace std;
int main(){
    int ch = 90, en = 89;
    // 逻辑与 &&
    if (ch >= 90 && en >= 90) cout << "通过" << endl;
    else cout << "未通过" << endl;

    // 逻辑或 ||
    if (ch >= 90 || en >= 90) cout << "通过" << endl;
    else cout << "未通过" << endl;

    // 逻辑非 !
    if (!(ch >= 90)) cout << "未通过" << endl;
    else cout << "通过" << endl;

    return 0;
}

三、单分支结构(if 语句)

语法格式
cpp
运行
if (条件表达式) {
    // 条件为 true 时执行的代码块}
示例
cpp
运行
#include <iostream>
#include <cstdio>
using namespace std;
int main() {
    int score = 85;
    if (score >= 60) { // 条件为 true 时执行
        cout << "成绩合格!" << endl;
    }
    return 0;
}

四、双分支结构(if-else 语句)

语法格式
cpp
运行
if (条件表达式) {
    // 条件为 true 时执行的代码块} else {
    // 条件为 false 时执行的代码块
}
示例
cpp
运行
#include <iostream>
#include <cstdio>
using namespace std;
int main() {
    int score = 55;
    if (score >= 60) {
        cout << "成绩合格!" << endl;
    } else { // 条件为 false 时执行
        cout << "成绩不合格!" << endl;
    }
    return 0;}

五、多分支结构(if-else if-else 语句)

语法格式
cpp
运行
if (条件表达式1) {
    // 条件1为 true 时执行} else if (条件表达式2) {
    // 条件1为 false 且条件2为 true 时执行} else {
    // 所有条件均为 false 时执行
}
示例
cpp
运行
#include <iostream>
#include <cstdio>
using namespace std;
int main() {
    int score = 78;
    if (score >= 90) {
        cout << "等级:A" << endl;
    } else if (score >= 80) { // 条件1不满足时判断条件2
        cout << "等级:B" << endl;
    } else if (score >= 60) {
        cout << "等级:C" << endl;
    } else { // 所有条件均不满足时执行
        cout << "等级:D" << endl;
    }
    return 0;
}

六、三目运算符(?:

语法格式
cpp
运行
条件表达式 ? 表达式1 : 表达式2
  • 若条件为 true,返回 表达式 1 的值;

  • 若条件为 false,返回 表达式 2 的值。

示例
cpp
运行
#include <iostream>
#include <cstdio>
using namespace std;
int main() {
    int a = 10, b = 20;
    int max = (a > b) ? a : b; // 等价于 if-else 结构
    cout << "较大值:" << max << endl;
    return 0;}

七、switch-case 语句

用于多条件分支判断,适用于离散值的比较(如整数、字符等)。
语法格式
cpp
运行
switch (表达式) {
    case 常量1:
        // 执行代码块1
        break; // 跳出 switch
    case 常量2:
        // 执行代码块2
        break;
    ...
    default: // 可选,所有 case 均不匹配时执行
        // 执行代码块
        break;
}
注意事项
  1. case 后必须是常量表达式,且值必须唯一。

  2. break 用于终止当前 case 的执行,避免穿透效应(若省略 break,会继续执行下一个 case)。

  3. default 分支可选,相当于 if-else 中的 else

示例
cpp
运行
#include <iostream>
#include <cstdio>
using namespace std;
int main() {
    int day = 3;
    switch (day) {
        case 1:
            cout << "星期一" << endl;
            break;
        case 2:
            cout << "星期二" << endl;
            break;
        case 3:
            cout << "星期三" << endl; // 匹配 day=3
            break; // 跳出 switch
        default:
            cout << "未知日期" << endl;
    }
    return 0;
}

八、分支结构对比


结构适用场景特点
if单条件或简单双条件判断灵活,可处理复杂表达式
if-else二选一的条件判断清晰区分条件成立与不成立的场景
if-else if多条件互斥判断(连续区间)按顺序判断条件,适合范围比较(如成绩等级划分)
switch多条件等值判断(离散值)效率更高,结构更清晰,但要求条件为离散值且必须是整型 / 字符型等可比较类型
三目运算符简单条件赋值或表达式语法简洁,适用于一行代码解决简单逻辑



// 经典代码
#include <iostream>
#include <cstdio>
using namespace std;
int main(){
	int d;
	cin >> d;
	switch(d){
		case 1:
		case 2:
		case 3:
		case 4:
		case 5:
			cout << "工作日";
			break;
		case 6:
		case 7:
			cout << "休息日";
			break;
		default:
			cout << "输入有误";	 
	}
	return 0; 
} 


#include <iostream>
#include <cstdio>
using namespace std;
int main(){
	int score;
	cin >> score;
	switch(score / 10){
		case 9:
			cout << "A";
			break;
		case 8:
			cout << "B";
			break;
		case 7:
			cout << "C";
			break;
		case 6:
			cout << "D";
			break;
		default:
			cout << "不及格";	 
	}
	return 0; 
}

#include <iostream>
#include <cstdio>
using namespace std;
// 三目运算符    ? : 
int main(){
	int a, b;
	cin >> a >> b;
//	if(a > b) cout << a;
//	else cout << b;
	cout << (a > b ? a : b); 
	return 0; 
}

分支嵌套 

#include <iostream>
#include <cstdio>
using namespace std;
int user = 123, pwd = 456, u, p;
int main(){
	cin >> u >> p;
	if(u == user){
		if(p == pwd) cout << "登录成功";
		else cout << "密码错误"; 
	}else cout << "账号错误";
	return 0; 
}

// 判断闰年
#include <iostream>
#include <cstdio>
using namespace std;
int y;
int main(){
	cin >> y;
	if(y % 400 == 0 || y % 4 == 0 && y % 100 != 0) cout << "闰年";
	else cout << "平年"; 
	
	return 0; 
}


有话要说...