C語言while循環的用法(非常詳細,附帶實例)

while?是 C 語言中的一種循環控制結構,用于在特定條件為真時重復執行一段代碼。

while 循環的語法如下:

while (條件表達式) {
? ? // 循環體:條件為真時執行的代碼
}

  • 條件表達式:返回真(非 0)或假(0)的表達式,決定是否繼續循環。
  • 大括號?{}:定義循環體,若只有一行語句,可省略,但建議保留以提高可讀性。

while 循環的核心是一個條件表達式,當條件為真(非 0)時,循環體內的代碼會反復執行,直到條件變為假(0)。while 循環的運行流程是:

  1. 檢查?條件表達式
  2. 若為真,執行循環體,然后返回步驟 1。
  3. 若為假,退出循環,繼續執行后續代碼。

也就是說,while 循環的邏輯是:“只要條件成立,就繼續執行。”?

在 C語言中,while?循環特別適合那些循環次數不固定、依賴條件判斷的場景。接下來,我們將深入探討 while 循環的用法、使用場景以及注意事項。

【實例】簡單計數。

/**
*  系統學習C語言 https://xiecoding.cn/c/
**/
#include <stdio.h>int main(void) {int count = 0;while (count < 5) {printf("計數:%d\n", count);count++;}return 0;
}

輸出結果:

計數:0
計數:1
計數:2
計數:3
計數:4

count < 5?初始為真,循環體執行 5 次,每次?count?自增,直到?count = 5,條件為假,循環結束。

while常見使用場景

1) 已知次數的循環

雖然?while?更適合動態條件,但也可以用于固定次數的循環。

/**
*  系統學習C語言 https://xiecoding.cn/c/
**/
#include <stdio.h>int main(void) {int i = 1;while (i <= 10) {printf("%d ", i);i++;}printf("\n");return 0;
}

輸出結果:

1 2 3 4 5 6 7 8 9 10

2) 累加計算

用?while?實現累加或求和。

/**
*  系統學習C語言 https://xiecoding.cn/c/
**/
#include <stdio.h>int main(void) {int sum = 0, num = 1;while (num <= 100) {sum += num;num++;}printf("1 到 100 的和是:%d\n", sum);return 0;
}

輸出結果:

1 到 100 的和是:5050

sum?累加每次的?num,直到?num > 100

3) 輸入驗證

while?常用于等待用戶輸入符合條件。

/**
*  系統學習C語言 https://xiecoding.cn/c/
**/
#include <stdio.h>int main(void) {int num;printf("請輸入一個正數:");scanf("%d", &num);while (num <= 0) {printf("輸入錯誤,請輸入一個正數:");scanf("%d", &num);}printf("你輸入的正數是:%d\n", num);return 0;
}

輸出結果(示例輸入):

請輸入一個正數:-5
輸入錯誤,請輸入一個正數:0
輸入錯誤,請輸入一個正數:3
你輸入的正數是:3

C語言do-while循環

C語言還提供?do-while?循環,與?while?的區別是條件后置,至少執行一次循環體:

do {
? ? // 循環體:先執行一次
} while (條件表達式);

【實例】do-while 用法
/**
*  系統學習C語言 https://xiecoding.cn/c/
**/
#include <stdio.h>int main(void) {int num = 0;do {printf("num = %d\n", num);num++;} while (num < 3);return 0;
}

輸出結果:

num = 0
num = 1
num = 2

即使初始?num = 0,循環體先執行一次,然后檢查條件。

while注意事項

1) 避免死循環

若條件永遠為真,會導致死循環。

// 錯誤示例
while (1) { printf("無限循環\n"); } // 死循環

解決方法:確保條件最終會變為假,或使用?break?跳出。

2) break和continue

break?立即退出循環,continue?跳過本次循環剩余部分。

/**
*  系統學習C語言 https://xiecoding.cn/c/
**/
#include <stdio.h>int main(void) {int i = 0;while (i < 10) {i++;if (i == 3) continue; // 跳過 3if (i == 7) break;    // 在 7 退出printf("%d ", i);}printf("\n");return 0;
}

輸出結果:

1 2 4 5 6

3) 條件表達式類型

條件必須返回整數值(非 0 為真,0 為假),避免使用浮點數直接比較。

// 不推薦
float f = 0.1;
while (f < 1.0) { ... } // 浮點誤差可能導致問題

總結

while 是 C 語言程序常用的一種循環結構,適合處理條件動態變化的重復任務。

學習 while 循環語句,除了它本身的語法外,你還需要掌握?do-while?變體以及?breakcontinue?的用法,才能靈活控制程序的執行流程。

在 C 語言程序中使用 while 循環語句時,要避免出現死循環的情況。讀完本文,恭喜你已經徹底掌握 while 循環語句的用法。

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

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

相關文章

1.短信登錄

1.0 問題記錄 1.0.1 redis 重復 token 問題 每次用戶登錄時&#xff0c;后端會創建一個新的 token 并存入 Redis&#xff0c;但之前登錄的 token 還沒有過期。這可能會導致以下問題&#xff1a; 1. Redis 中存在大量未過期但實際已不使用的 token2. 同一用戶可能有多個有效 …

需求與技術實現不匹配,如何協調

協調需求與技術實現不匹配問題&#xff0c;需要加強技術參與需求階段、推動架構與需求同步設計、建立跨職能溝通機制&#xff0c;其中加強技術參與需求階段是最關鍵的一步。 需求如果脫離技術實際&#xff0c;就容易導致實現困難、資源浪費甚至項目失敗。根據麥肯錫的一項研究&…

java每日精進 5.11【WebSocket】

1.純Websocket實現消息發送 1.1一對一發送 前端 用戶在輸入框輸入消息內容(sendText) 選擇特定接收用戶(sendUserId) 點擊發送按鈕觸發handlerSend方法 構造消息內容JSON: {text: "Hello", // 消息內容toUserId: 123 // 目標用戶ID } 包裝為WebSocket標準格式…

【NextPilot日志移植】params.c解析

params.c 參數說明 params.c 文件的主要作用是定義與 SD卡日志記錄 相關的參數。這些參數用于配置日志記錄的行為&#xff0c;包括日志記錄的時間、內容、存儲管理以及加密設置等。 1. UTC 偏移量 (SDLOG_UTC_OFFSET) PARAM_DEFINE_INT32(SDLOG_UTC_OFFSET, 0);用途&#xf…

jFinal 使用 SolonMCP 開發 MCP(擁抱新潮流)

MCP 官方的 java-sdk 目前只支持 java17。直接基于 mcp-java-sdk 也比較復雜。使用 SolonMCP&#xff0c;可以基于 java8 開發&#xff08;像 MVC 的開發風格&#xff09;&#xff0c;且比較簡單。 1、SolonMCP 簡介 SolonMCP&#xff08;全稱&#xff1a;solon-ai-mcp&#…

“端 - 邊 - 云”三級智能協同平臺的理論建構與技術實現

摘要 隨著低空經濟與智能制造的深度融合&#xff0c;傳統集中式云計算架構在實時性、隱私保護和資源效率上的瓶頸日益凸顯。本文提出“端 - 邊 - 云”三級智能協同平臺架構&#xff0c;以“時空 - 資源 - 服務”三維協同理論為核心&#xff0c;構建覆蓋終端感知、邊緣計算、云端…

【如何搭建開發環境】

了解java程序 JAVA體系結構 跨平臺原理與編譯和反編譯 如何學習java語言&#xff0c;如何搭建環境 設置JAVA_HOME&#xff0c;指向jdk的安裝目錄這一級即可。比如我的JDK安裝在C:\java\jdk1.8.0_25&#xff0c;那JAVA_HOME的值就是C:\java\jdk1.8.0_25設置Path變量 在Path值后…

LegoGPT,卡內基梅隆大學推出的樂高積木設計模型

LegoGPT 是由卡內基梅隆大學開發的一款創新性樂高積木設計模型&#xff0c;能夠根據用戶的文本提示生成結構穩固、可組裝的樂高模型。該模型基于自回歸語言模型和大規模樂高設計數據集進行訓練&#xff0c;用戶只需輸入簡單的文字描述&#xff0c;LegoGPT 就能逐步構建出物理穩…

深入理解 NumPy:Python 科學計算的基石

在數據科學、人工智能和科學計算的世界里&#xff0c;NumPy 是一塊繞不過去的基石。它是 Python 語言中用于高性能科學計算的基礎包&#xff0c;幾乎所有的數據分析與機器學習框架&#xff08;如 Pandas、TensorFlow、Scikit-learn&#xff09;都離不開它的支持。 一、什么是 …

Java基礎(IO)

所有操作都在內存&#xff0c;不能長時間保存&#xff0c;IO主要在硬盤&#xff0c;可以長時間保存。 一、File類 File類被定義為文件和目錄路徑名的抽象表示形式&#xff0c;這是因為 File 類既可以表示文件也可以表示目錄&#xff0c;他們都通過對應的路徑來描述。 提供構…

仿正點原子驅動BMP280氣壓傳感器實例

文章目錄 前言 一、寄存器頭文件定義 二、設備樹文件中添加節點 三、驅動文件編寫 四、編寫驅動測試文件并編譯測試 總結 前言 本文驅動開發仿照正點原子的iic驅動實現&#xff0c;同時附上bmp280的數據手冊&#xff0c;可訪問下面的鏈接&#xff1a; BMP280_Bosch(博世…

論壇系統(中-1)

軟件開發 編寫公共代碼 定義狀態碼 對執?業務處理邏輯過程中可能出現的成功與失敗狀態做針對性描述(根據需求分析階段可以遇見的問題提前做出定義)&#xff0c;?枚舉定義狀態碼&#xff0c;先定義?部分&#xff0c;業務中遇到新的問題再添加 定義狀態碼如下 狀態碼類型描…

E+H流量計通過Profibus DP主站轉Modbus TCP網關與上位機輕松通訊

EH流量計通過Profibus DP主站轉Modbus TCP網關與上位機輕松通訊 在現代工業自動化的廣闊舞臺上&#xff0c;Profibus DP與Modbus TCP這兩種通信協議各領風騷&#xff0c;它們在不同的應用場景中發揮著舉足輕重的作用。但工業生產的復雜性往往要求不同設備、系統之間能夠順暢溝…

服務器中存儲空間不足該怎么辦?

服務器作為存儲數據信息的重要網絡設備&#xff0c;隨著企業業務的不斷拓展&#xff0c;所需要存儲的數據信息也在不斷增加&#xff0c;最終會導致服務器中存儲空間不足&#xff0c;這不僅會影響到服務器系統性能&#xff0c;還會造成業務無法正常執行&#xff0c;那么&#xf…

C++23 views::chunk_by (P2443R1) 詳解

文章目錄 引言C23 范圍庫概述范圍視圖&#xff08;Range Views&#xff09;范圍算法&#xff08;Range Algorithms&#xff09;范圍適配器&#xff08;Range Adapters&#xff09; std::views::chunk_by 介紹基本概念特性使用場景 示例代碼簡單示例自定義謂詞示例 總結 引言 在…

零碳園區能源系統-多能互補體系

構建以可再生能源為核心的零碳園區能源系統&#xff0c;需整合光儲直柔、光伏發電、微電網、氫能與儲能技術&#xff0c;通過多能協同與智能調控實現能源生產、存儲、消費全鏈條優化。以下是系統性實施方案&#xff1a; 一、系統架構設計 1. 多能互補體系 &#xff08;圖示&a…

elastic search學習

首先在自己電腦上安裝elastic search。安裝成功后&#xff0c;查看ES是否啟動成功。 安裝過程參考&#xff1a;ElasticSearch入門1: mac 安裝 - 霜井 - 博客園 安裝完成后&#xff0c;直接執行bin目錄中的elastic search命令后&#xff0c;就可以啟動成功&#xff01; 在網頁…

mysql8常用sql語句

查詢結果帶行號 -- 表名為 mi_user&#xff0c; 假設包含列 id &#xff0c;address SELECT ROW_NUMBER() OVER (ORDER BY id) AS row_num, t.id, t.address FROM mi_user t ; SELECT ROW_NUMBER() OVER ( ) AS row_num, t.id, t.address FROM mi_user t ; 更新某列數…

Memcached 服務搭建和集成使用的詳細步驟示例

以下是 Memcached 服務搭建和集成使用的詳細步驟示例&#xff1a; 一、搭建 Memcached 服務 安裝 Memcached Linux 系統 yum 安裝&#xff1a;執行命令 yum install -y memcached memcached-devel。源碼安裝 下載源碼&#xff1a;wget http://www.memcached.org/files/memcach…

2. 盒模型/布局模塊 - 響應式產品展示頁_案例:電商產品網格布局

2. 盒模型/布局模塊 - 響應式產品展示頁 案例&#xff1a;電商產品網格布局 <!DOCTYPE html> <html><head><meta charset"utf-8"><title></title></head><style type"text/css">:root {--primary-color…