c++之分支

深入理解 C++ 分支結構:從基礎到實戰

在 C++ 編程的世界里,分支結構是控制程序流程的重要手段,它賦予程序 “思考” 和 “選擇” 的能力,讓程序能夠根據不同的條件執行不同的代碼塊。本文將帶大家深入探索 C++ 分支結構,結合豐富的代碼示例,幫助你更好地掌握這一關鍵知識點。

一、C++ 分支結構基礎概念

分支結構的核心在于根據條件表達式的真假,決定程序執行的路徑。在 C++ 中,常見的分支語句有if語句、if-else語句以及switch語句。條件表達式的結果通常是一個布爾值(true或false),當表達式為true時,執行對應的代碼塊;為false時,則跳過該代碼塊,執行后續其他代碼或進入其他分支。

二、if語句詳解

if語句是最基本的分支語句,它的語法格式如下:

if (條件表達式) {// 當條件表達式為true時執行的代碼塊}

例題 1:判斷一個數是否為偶數

#include <iostream>using namespace std;int main() {int num = 12;if (num % 2 == 0) {cout << num << " 是偶數" << endl;}return 0;}

在上述代碼中,通過num % 2 == 0判斷num是否能被 2 整除,若條件為true,則輸出該數是偶數。

新增例題 2:判斷字符是否為大寫字母

 
#include <iostream>using namespace std;int main() {char ch = 'A';if (ch >= 'A' && ch <= 'Z') {cout << ch << " 是大寫字母" << endl;}return 0;}

此代碼利用字符的 ASCII 碼范圍,通過if語句判斷輸入字符是否為大寫字母。

三、if-else語句的應用

if-else語句在if語句的基礎上,增加了條件為false時的執行分支,語法格式如下:

if (條件表達式) {// 當條件表達式為true時執行的代碼塊} else {// 當條件表達式為false時執行的代碼塊}

例題 3:判斷兩個數的大小關系

 
#include <iostream>using namespace std;int main() {int a = 10, b = 15;if (a > b) {cout << a << " 大于 " << b << endl;} else {cout << a << " 小于等于 " << b << endl;}return 0;}

該代碼通過if-else判斷兩個整數a和b的大小關系,并輸出相應結果。

例題 4:判斷年份是否為閏年

#include <iostream>using namespace std;int main() {int year = 2024;if ((year % 4 == 0 && year % 100 != 0) || (year % 400 == 0)) {cout << year << " 是閏年" << endl;} else {cout << year << " 不是閏年" << endl;}return 0;}

代碼依據閏年的判斷規則,使用if-else語句判斷輸入年份是否為閏年。

四、switch語句進階

switch語句用于多分支判斷,它根據一個表達式的值,在多個case分支中進行匹配選擇,語法結構如下:

 
switch (表達式) {case 常量表達式1:// 代碼塊1break;case 常量表達式2:// 代碼塊2break;default:// 默認執行的代碼塊}

例題 5:根據數字輸出季節

#include <iostream>using namespace std;int main() {int month = 8;switch (month) {case 3:case 4:case 5:cout << "春季" << endl;break;case 6:case 7:case 8:cout << "夏季" << endl;break;case 9:case 10:case 11:cout << "秋季" << endl;break;case 12:case 1:case 2:cout << "冬季" << endl;break;default:cout << "無效的月份" << endl;}return 0;}

此代碼根據輸入的月份數字,利用switch語句輸出對應的季節。

例題 6:根據用戶輸入指令執行操作

#include <iostream>using namespace std;int main() {char command = 'c';switch (command) {case 'a':cout << "執行操作A" << endl;break;case 'b':cout << "執行操作B" << endl;break;case 'c':cout << "執行操作C" << endl;break;default:cout << "無效指令" << endl;}return 0;}

代碼模擬根據用戶輸入的字符指令,通過switch語句執行不同的操作。

五、分支結構的實際應用場景

在實際項目開發中,分支結構無處不在。例如,在用戶登錄系統中,需要根據用戶輸入的賬號密碼是否正確,決定是允許登錄并跳轉到用戶主頁,還是提示賬號密碼錯誤;在游戲開發中,根據玩家的不同選擇觸發不同的劇情和任務;在電商系統中,根據用戶的會員等級計算不同的折扣價格等。

以一個簡單的電商折扣計算為例:

#include <iostream>using namespace std;int main() {double originalPrice = 200.0; // 商品原價int memberLevel = 2; // 會員等級,1為普通會員,2為銀卡會員,3為金卡會員double discount;if (memberLevel == 1) {discount = 0.95; // 普通會員95折} else if (memberLevel == 2) {discount = 0.9; // 銀卡會員9折} else if (memberLevel == 3) {discount = 0.85; // 金卡會員85折} else {discount = 1.0; // 非會員無折扣}double finalPrice = originalPrice * discount;cout << "商品原價:" << originalPrice << " 元" << endl;cout << "會員等級:" << memberLevel << endl;cout << "折扣后價格:" << finalPrice << " 元" << endl;return 0;}

上述代碼根據會員等級計算不同的折扣,進而得出商品的最終價格,充分展示了分支結構在實際業務邏輯處理中的重要作用。

六、總結與注意事項

掌握 C++ 分支結構是編寫靈活、智能程序的基礎。在使用分支語句時,需要注意以下幾點:

  1. if語句中的條件表達式必須是能產生布爾值的表達式。
  1. 在switch語句中,case后的常量表達式值必須唯一,且與switch表達式的類型要兼容;break語句用于及時跳出switch結構,避免出現 “穿透” 現象(若不寫break,會繼續執行下一個case的代碼)。
  1. 合理使用嵌套的分支結構可以實現更復雜的邏輯判斷,但要注意代碼的可讀性和維護性,避免過度嵌套導致代碼過于復雜。

通過本文的學習和代碼實踐,相信你對 C++ 分支結構有了更深入的理解和掌握。在后續的編程學習和項目開發中,多多運用分支結構,讓你的程序更加智能和強大!

上述新增了多個不同類型的例題,如果還想增加特定領域的例題,或是調整例題難度,都能隨時和我說。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/907822.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/907822.shtml
英文地址,請注明出處:http://en.pswp.cn/news/907822.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

LLMs之MCP:如何使用 Gradio 構建 MCP 服務器

LLMs之MCP&#xff1a;如何使用 Gradio 構建 MCP 服務器 導讀&#xff1a;本文詳細介紹了如何使用Gradio構建MCP服務器&#xff0c;包括前提條件、構建方法、關鍵特性和相關資源。通過一個簡單的字母計數示例&#xff0c;演示了如何將Gradio應用轉換為LLM可以使用的工具。Gradi…

ubuntu20.04.5-arm64版安裝robotjs

ubuntu20.04.5arm上使用robotjs #ssh&#xff0c;可選 sudo apt update sudo apt install openssh-server sudo systemctl status ssh sudo systemctl enable ssh sudo systemctl enable --now ssh #防火墻相關&#xff0c;可選 sudo ufw allow ssh sudo ufw allow 2222/tc…

craw4ai 抓取實時信息,與 mt4外行行情結合實時交易,基本面來覺得趨勢方向,搞一個外匯交易策略

結合實時信息抓取、MT4行情數據、基本面分析的外匯交易策略框架&#xff0c;旨在通過多維度數據融合提升交易決策質量&#xff1a;行不行不知道先試試&#xff0c;理論是對的&#xff0c;只要基本面方向沒錯 策略名稱&#xff1a;Tri-Sync 外匯交易系統 核心理念 「基本面定方…

Python中scapy庫詳細使用(強大的交互式數據包操作程序和庫)

更多內容請見: 爬蟲和逆向教程-專欄介紹和目錄 文章目錄 一、scapy概述1.1 scapy介紹1.2 安裝1.3 交互模式1.4 安全注意事項二、基本使用2.1 數據包構造基礎2.2 數據包發送2.3 數據包嗅探2.4 數據包分析與操作2.5 網絡掃描技術2.6 協議實現示例三、高級功能3.1 數據包重放3.2 …

基于Web的瀕危野生動物保護信息管理系統設計(源碼+定制+開發)瀕危野生動物監測與保護平臺開發 面向公眾參與的野生動物保護與預警信息系統

博主介紹&#xff1a; ?我是阿龍&#xff0c;一名專注于Java技術領域的程序員&#xff0c;全網擁有10W粉絲。作為CSDN特邀作者、博客專家、新星計劃導師&#xff0c;我在計算機畢業設計開發方面積累了豐富的經驗。同時&#xff0c;我也是掘金、華為云、阿里云、InfoQ等平臺…

[SAP] 矩陣復制(Matrix Copy)

SAP中的復制粘貼功能被稱為矩陣復制&#xff0c;通過點擊對話框或屏幕&#xff0c;并執行下述命令&#xff0c;使用矩陣復制就可以復制多行文本 ① 按下Ctrl-Y&#xff0c;從左上到右下拖拉鼠標來選擇文本 ② 文本高亮顯示后&#xff0c;按下Ctrl-C ③ 移到新的位置插入文本…

【筆記】在 MSYS2(MINGW64)中安裝 Python 工具鏈的記錄

#工作記錄 &#x1f4cc; 安裝背景 操作系統&#xff1a;MSYS2 MINGW64當前時間&#xff1a;2025年6月1日Python 版本&#xff1a;3.12&#xff08;默認通過 pacman 安裝&#xff09;目標工具鏈&#xff1a; pipxnumpypipsetuptoolswheel &#x1f6e0;? 安裝過程與結果記錄…

OpenCV CUDA模塊結構分析與形狀描述符------在 GPU 上計算圖像的原始矩(spatial moments)函數spatialMoments()

操作系統&#xff1a;ubuntu22.04 OpenCV版本&#xff1a;OpenCV4.9 IDE:Visual Studio Code 編程語言&#xff1a;C11 算法描述 該函數用于在 GPU 上計算圖像的原始矩&#xff08;spatial moments&#xff09;。這些矩可用于描述圖像中物體的形狀特征&#xff0c;如面積、質…

Nacos實戰——動態 IP 黑名單過濾

1、需求分析 一些惡意用戶&#xff08;?可能是黑客、爬蟲、DDoS ?攻擊者&#xff09;可能頻繁請求服務器資?源&#xff0c;導致資源占用過高。針對這種問題&#xff0c;可以通過IP? 封禁&#xff0c;可以有效拉?黑攻擊者&#xff0c;防止資源?被濫用&#xff0c;保障合法…

opencv + jpeg_turbo(啟用SIMD加速)

背景 opencv的imreadimwrite耗時過大 一張5M的圖片讀用了140ms,寫一張1.7M的圖片用149ms 平臺&#xff1a;mingw64編譯Windows程序版本&#xff1a;opencv4.5.4 加速方案 opencv啟用openmpopencv啟用jpeg_turbojpeg_turbo啟動SIMD加速 下載jpeg_turbo源碼 opencv源碼自帶…

Redis 主從節點

Redis 主從節點的核心區別 特性主節點 (Master)從節點 (Slave/Replica)讀寫權限可讀可寫只讀&#xff08;默認配置&#xff09;數據流向數據來源從主節點同步數據連接關系可連接多個從節點只能連接一個主節點故障切換故障時需要手動/自動提升從節點可被提升為新的主節點命令執…

汽車安全:功能安全FuSa、預期功能安全SOTIF與網絡安全Cybersecurity 解析

汽車安全的三重防線&#xff1a;深入解析FuSa、SOTIF與網絡安全技術 現代汽車已成為裝有數千個傳感器的移動計算機&#xff0c;安全挑戰比傳統車輛復雜百倍。 隨著汽車智能化、網聯化飛速發展&#xff0c;汽車電子電氣架構已從簡單的分布式控制系統演變為復雜的移動計算平臺。現…

github好玩的工具

以下是 GitHub 上一些有趣且實用的開源工具推薦,涵蓋 AI 應用、效率提升、趣味開發等方向,結合最新趨勢和項目熱度整理: 一、AI 與深度偽造工具 Deep-Live-Cam 僅需一張圖片即可在視頻直播中實時替換人臉,適用于內容創作和虛擬角色開發,支持多平臺硬件運行(如 NVIDIA CUD…

Python應用for循環臨時變量作用域

大家好!如果你剛開始學習Python&#xff0c;可能會對for循環中臨時變量的作用域感到好奇。下面通過一個簡單的練習&#xff0c;幫助你理解這個概念。 代碼呈現: i 0 for i in range(5):print(i)print(i)代碼介紹: 首先我們初始化變量i 0然后進入for循環&#xff0c;這里i成為…

深度學習---負樣本訓練

一、負樣本的本質與核心作用 1. 定義與范疇 負樣本&#xff08;Negative Sample&#xff09;是與目標樣本&#xff08;正樣本&#xff09;在語義、特征或任務目標上存在顯著差異的樣本。其核心價值在于通過對比學習引導模型學習樣本間的判別性特征&#xff0c;而非僅記憶正樣本…

實驗設計與分析(第6版,Montgomery)第3章單因子實驗:方差分析3.11思考題3.7 R語言解題

本文是實驗設計與分析&#xff08;第6版&#xff0c;Montgomery著&#xff0c;傅玨生譯) 第3章單因子實驗&#xff1a;方差分析3.11思考題3.7 R語言解題。主要涉及單因子方差分析&#xff0c;正態性假設檢驗&#xff0c;殘差與擬合值的關系圖&#xff0c;平方根變換。 X<-c(…

【PhysUnits】15.8 引入P1后的減法運算(sub.rs)

一、源碼 這段代碼實現了一個類型級別的二進制數減法系統&#xff0c;包含標準減法和帶借位減法。 use core::ops::{Neg, Not, Sub}; use super::basic::{Z0, N1, P1, B0, B1, Integer, NonZero}; use super::add1::Add1; use super::sub1::Sub1; use super::standardization…

npm install命令都做了哪些事情

npm install&#xff08;或其簡寫 npm i&#xff09;是 Node.js 項目中最重要的命令之一&#xff0c;它負責安裝項目所需的所有依賴項。下面我將詳細解釋這個命令的完整執行過程和底層機制&#xff0c;讓你徹底理解它背后的工作原理。 一、npm install 的完整工作流程 1. 依賴…

mkdir: cannot create directory ‘gitlab-stu’: No space left on device

Linux中創建目錄時報錯“mkdir: cannot create directory ‘gitlab-stu’: No space left on device”&#xff0c;磁盤空間不足。 使用df命令查看&#xff0c;發現 / 下面use%占滿了&#xff1a; 查看inode使用情況&#xff1a; 可以看到docker的數據大部分存放在/var/lib/do…

中國高分辨率高質量地面NO2數據集(2008-2023)

時間分辨率&#xff1a;日空間分辨率&#xff1a;1km - 10km共享方式&#xff1a;開放獲取數據大小&#xff1a;15.36 GB數據時間范圍&#xff1a;2008-01-01 — 2023-12-31元數據更新時間&#xff1a;2024-08-19 數據集摘要 ChinaHighNO2數據集是中國高分辨率高質量近地表空氣…