白騎士的C語言教學基礎篇 1.3 控制流

系列目錄

上一篇:白騎士的C語言教學基礎篇 1.2 C語言基礎語法

????????在這一節中,我們將介紹C語言中的控制流結構,包括條件語句、循環語句以及循環控制語句。這些結構允許我們根據不同的條件執行不同的代碼塊,從而使程序更具靈活性和功能性。

條件語句(if, else, switch)

????????條件語句用于根據表達式的結果執行不同的代碼塊。C語言中的條件語句包括 ‘if‘、‘else if‘、‘else‘ 和 ‘switch‘。

if 語句

????????‘if‘語句用于判斷表達式是否為真,如果為真,則執行相應的代碼塊結構如下:

if (condition) {// 如果condition為真,執行此代碼塊
}

? ? ? ? 例如:

int a = 10;if (a > 5) {printf("a is greater than 5\n");
}

if-else 語句

????????‘if-else‘ 語句在 ‘if‘ 條件為假時執行 ‘else‘ 代碼塊,結構如下:

if (condition) {// 如果condition為真,執行此代碼塊
} else {// 如果condition為假,執行此代碼塊
}

? ? ? ? 例如:

int a = 10;if (a > 15) {printf("a is greater than 15\n");
} else {printf("a is not greater than 15\n");
}

if-else if-else 語句

????????‘if-else if-else‘ 語句用于檢查多個條件,并執行相應的代碼塊,結構如下:

if (condition1) {// 如果condition1為真,執行此代碼塊
} else if (condition2) {// 如果condition2為真,執行此代碼塊
} else {// 如果以上條件都為假,執行此代碼塊
}

? ? ? ? 例如:

int a = 10;if (a > 15) {printf("a is greater than 15\n");
} else if (a > 5) {printf("a is greater than 5 but not greater than 15\n");
} else {printf("a is not greater than 5\n");
}

switch 語句

????????‘switch‘ 語句用于根據表達式的值執行不同的代碼塊,結構如下:

switch (expression) {case value1:// 如果expression等于value1,執行此代碼塊break;case value2:// 如果expression等于value2,執行此代碼塊break;// 可以有多個case分支default:// 如果expression不等于任何case的值,執行此代碼塊
}

? ? ? ? 例如:

int a = 2;switch (a) {case 1:printf("a is 1\n");break;case 2:printf("a is 2\n");break;case 3:printf("a is 3\n");break;default:printf("a is not 1, 2, or 3\n");
}

循環語句(for, while, do-while)

????????循環語句用于重復執行代碼塊,直到條件不再滿足。C語言中的循環語句包括 ‘for‘、‘while‘和‘do-while‘。

for 循環

????????‘for‘ 循環用于執行一個初始化語句,然后檢查條件,如果條件為真則執行循環體,最后執行更新語句,結構如下:

for (initialization; condition; update) {// 循環體
}

? ? ? ? 例如:

for (int i = 0; i < 5; i++) {printf("i = %d\n", i);
}

while 循環

????????‘while‘ 循環在每次迭代前檢查條件,如果條件為真則執行循環體,結構如下:

while (condition) {// 循環體
}

? ? ? ? 例如:

int i = 0;while (i < 5) {printf("i = %d\n", i);i++;
}

do-while 循環

????????‘do-while‘ 循環在每次迭代后檢查條件,因此循環體至少執行一次,結構如下:

do {// 循環體
} 
while (condition);

? ? ? ? 例如:

int i = 0;do {printf("i = %d\n", i);i++;
} 
while (i < 5);

循環控制(break, continue)

????????循環控制語句用于改變循環的執行流程。C語言中的循環控制語句包括 ‘break‘ 和 ‘continue‘。

break 語句

????????‘break‘ 語句用于立即退出循環,不再執行循環體中的剩余語句,例如:

for (int i = 0; i < 10; i++) {if (i == 5) {break;}printf("i = %d\n", i);
}

????????輸出:

i = 0
i = 1
i = 2
i = 3
i = 4

continue 語句

????????‘continue‘ 語句用于跳過當前迭代中的剩余語句,并開始下一次迭代,例如:

for (int i = 0; i < 10; i++) {if (i == 5) {continue;}printf("i = %d\n", i);
}

????????輸出:

i = 0
i = 1
i = 2
i = 3
i = 4
i = 6
i = 7
i = 8
i = 9

示例代碼

????????以下是一個綜合示例,展示了條件語句、循環語句和循環控制語句的使用:

#include <stdio.h>int main() {int num, i;printf("Enter a number: ");scanf("%d", &num);// 使用if-else語句判斷奇偶性if (num % 2 == 0) {printf("%d is even.\n", num);} else {printf("%d is odd.\n", num);}// 使用for循環計算階乘int factorial = 1;for (i = 1; i <= num; i++) {factorial *= i;}printf("Factorial of %d is %d.\n", num, factorial);// 使用while循環打印數字i = 1;while (i <= num) {printf("%d ", i);i++;}printf("\n");// 使用do-while循環打印數字i = 1;do {printf("%d ", i);i++;} while (i <= num);printf("\n");// 使用break和continue控制循環printf("Numbers from 1 to 10, skipping 5:\n");for (i = 1; i <= 10; i++) {if (i == 5) {continue; // 跳過5}printf("%d ", i);}printf("\n");return 0;
}

總結

????????通過本節的學習,我們已經了解了C語言中的條件語句、循環語句以及循環控制語句的基本用法。這些控制流結構是編寫靈活和高效程序的基礎。在接下來的章節中,我們將繼續探討C語言的函數和數據結構,進一步提升編程能力。

下一篇:白騎士的C語言教學基礎篇 1.4 函數與遞歸

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

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

相關文章

Python中的并發編程(5)PyQt 多線程

PyQt 多線程 1 卡住的計時器 我們定義了一個計時器&#xff0c;每秒鐘更新一次顯示的數字。此外我們定義了一個耗時5秒的任務oh_no&#xff0c;和按鈕“危險”綁定。 當我們點擊“危險”按鈕時&#xff0c;程序去執行oh_no&#xff0c;導致顯示停止更新了。 import sys im…

Aspose.PDF功能演示:在程序中合并 JPG 文件

Aspose.PDF 是一款高級PDF處理API&#xff0c;可以在跨平臺應用程序中輕松生成&#xff0c;修改&#xff0c;轉換&#xff0c;呈現&#xff0c;保護和打印文檔。無需使用Adobe Acrobat。此外&#xff0c;API提供壓縮選項&#xff0c;表創建和處理&#xff0c;圖形和圖像功能&am…

Kile鐘優化等級講解

這里直接說說kile的優化等級: 這里有4個等級,分別為:-O0、-O1、-O2、-O3 為什么要進行編譯優化? 主要目的: 1. 提高代碼執行的速度; 2. 減少內存占用; 3. 降低能耗,延長電池壽命; 4. 消除代碼中冗余和不必要的代碼,提高程序穩定性和可靠性。 Kile等級描述: -O0:這…

leetcode-21-回溯-全排列及其去重

一、[46]全排列 給定一個 沒有重復 數字的序列&#xff0c;返回其所有可能的全排列。 示例: 輸入: [1,2,3]輸出: [ [1,2,3], [1,3,2], [2,1,3], [2,3,1], [3,1,2], [3,2,1] ] 其中&#xff0c;不需要使用startIndex used數組&#xff0c;其實就是記錄此時path里都有哪些元素…

【圖論】200. 島嶼問題

200. 島嶼問題 難度&#xff1a;中等 力扣地址&#xff1a;https://leetcode.cn/studyplan/top-100-liked/ 問題描述 給你一個由 1&#xff08;陸地&#xff09;和 0&#xff08;水&#xff09;組成的的二維網格&#xff0c;請你計算網格中島嶼的數量。 島嶼總是被水包圍&…

一個專為Android平臺設計的高度可定制的日歷庫

大家好&#xff0c;今天給大家分享一個高度可定制的日歷庫kizitonwose/Calendar。 Calendar專為Android平臺設計&#xff0c;支持RecyclerView和Compose框架。它提供了豐富的功能&#xff0c;允許開發者根據需求定制日歷的外觀和功能。 項目介紹 此庫是開發Android應用時&…

大型語言模型評估調查

原文鏈接&#xff1a;A Survey on Evaluation of Large Language Models | ACM Transactions on Intelligent Systems and Technology 本文從三個關鍵維度&#xff1a;評價什么、在哪里評價和如何評價&#xff0c;對這些 LLMs 評價方法進行了全面回顧。 首先&#xff0c;我們…

第十四屆藍橋杯省賽C++A組F題【買瓜】題解(AC)

70pts 題目要求我們在給定的瓜中選擇一些瓜&#xff0c;可以選擇將瓜劈成兩半&#xff0c;使得最后的總重量恰好等于 m m m。我們的目標是求出至少需要劈多少個瓜。 首先&#xff0c;我們注意到每個瓜的重量最多為 1 0 9 10^9 109&#xff0c;而求和的重量 m m m 也最多為…

C++ 徹底搞懂指針(1)

當有人問起,什么是指針時,我會毫不猶豫地回答,指針變量存放的是地址!然后呢,好像也說不出什么了,今天就再來詳細看一下指針吧。 本文提綱如下: ? 指針變量 ? 未初始化的指針 ? NULL ? void指針 ? 指針的指針 首先要明白幾點: ? 每個字節都有…

用OpenAI接口給女朋友手搓AI小助理,她說要獎勵我,結果……

前言 最近&#xff0c;我那財經系的小女友迎來了考試周&#xff0c;她的復習資料已經堆得像珠穆朗瑪峰一樣高。壓力山大的她不斷讓我幫她整理這些資料&#xff0c;還頻頻向我傾訴她的苦水。雖然我自己也挺忙的&#xff0c;但為了愛&#xff0c;我只能忍痛扛起這重擔。。。為了…

【C++】STL-priority_queue

目錄 1、priority_queue的使用 2、實現沒有仿函數的優先級隊列 3、實現有仿函數的優先級隊列 3.1 仿函數 3.2 真正的優先級隊列 3.3 優先級隊列放自定義類型 1、priority_queue的使用 priority_queue是優先級隊列&#xff0c;是一個容器適配器&#xff0c;不滿足先進先出…

Spring Boot配置文件properties/yml/yaml

一、Spring Boot配置文件簡介 &#xff08;1&#xff09;名字必須為application,否則無法識別。后綴有三種文件類型&#xff1a; properties/yml/yaml&#xff0c;但是yml和yaml使用方法相同 &#xff08;2&#xff09; Spring Boot 項?默認的配置文件為 properties &#xff…

【單片機畢業設計選題24041】-基于STM32的水質檢測系統

系統功能: 系統上電后顯示“歡迎使用水質檢測系統請稍后”兩秒后進入正常顯示頁面。 第一頁面第一行顯示“系統狀態信息”&#xff0c;第二行顯示溫度和PH值信息&#xff0c;第三行顯示 渾濁度信息&#xff0c;第四行顯示TDS值信息。 第一頁面下的按鍵操作&#xff1a; 短…

Kotlin中的類

類初始化順序 constructor 里的參數列表是首先被執行的&#xff0c;緊接著是 init 塊和屬性初始化器&#xff0c;最后是次構造函數的函數體。 主構造函數參數列表firstProperty 初始化第一個 init 塊secondProperty 初始化第二個 init 塊次構造函數函數體 class Example const…

英語動詞時態

英語動詞時態總結 動詞時態一般進行完成完成進行現在一般現在時態動詞原形/動詞原形s&#xff08;第三人稱單數&#xff09;eat/eats現在進行時態助動詞be的變位動詞的現在分詞am/is/are eating現在完成時態助動詞have的變位動詞的過去分詞has/have eaten現在完成進行時態have…

SSE代替輪詢?

什么是 SSE SSE&#xff08;Server-Sent Events&#xff0c;服務器發送事件&#xff09;&#xff0c;為特定目的而擴展的 HTTP 協議&#xff0c;用于實現服務器向客戶端推送實時數據的單向通信。如果連接斷開&#xff0c;瀏覽器會自動重連&#xff0c;傳輸的數據基于文本格式。…

力扣(2024.07.01)

1. 84——柱狀圖中最大的矩形 給定 n 個非負整數&#xff0c;用來表示柱狀圖中各個柱子的高度。每個柱子彼此相鄰&#xff0c;且寬度為 1 。 求在該柱狀圖中&#xff0c;能夠勾勒出來的矩形的最大面積。 標簽&#xff1a;棧&#xff0c;數組&#xff0c;單調棧&#xff08;目…

面試題--SpringBoot

SpringBoot SpringBoot 是什么(了解) 是 Spring 的子項目,主要簡化 Spring 開發難度,去掉了繁重配置,提供各種啟動器,可以 讓程序員很快上手,節省開發時間. SpringBoot 的優點(必會) SpringBoot 對上述 Spring 的缺點進行的改善和優化&#xff0c;基于約定優于配置的思想&am…

rust嵌入式開發2024

老的rust embedded book 其實過時了. 正確的姿勢是embassy 入手. 先說下以前rust寫嵌入怎么教學小白的. 第一步,從這里 svd2rust 工具,自己生成庫第二部,有了這個庫,相當于就有了pac外設訪問文件,然后其實就可以搞起來了. 那么為啥不好搞了. 因為太亂了. 小白喜歡你告我咋弄…

[python][Anaconda]使用jupyter打開F盤或其他盤文件

jupyter有一個非常不好的體驗&#xff0c;就是不能在界面切換到其他盤來打開文件。 使用它&#xff0c;比較死板的操作是要先進入文件目錄&#xff0c;再運行jupyter。 以Windows的Anaconda安裝了jupyter lab或jupyter notebook為例。 1&#xff0c;先運行Anaconda Prompt 2&…