搜尋
首頁後端開發C#.Net教程c語言中實作循環結構的控制語句有哪些?

c語言中實作循環結構的控制語句有:while語句、do-while語句和for語句,一般形式為“while(表達式){語句區塊}”,“do{語句區塊}while (表達式);”,“for(表達式1; 表達式2; 表達式3){語句塊}”。

c語言中實作循環結構的控制語句有哪些?

所謂迴圈(Loop),就是重複地執行同一段程式碼,例如要計算1 2 3 …… 99 100 的值,就要重複進行99次加法運算。

while循環

while迴圈的一般形式為:

while(表达式){
    语句块
}

意思是,先計算「表達式」的值,當值為真(非0)時, 執行“語句區塊”;執行完“語句區塊”,再次計算表達式的值,如果為真,繼續執行“語句區塊”…這個過程會一直重複,直到表達式的值為假(0),就退出循環,執行while 後面的程式碼。

我們通常將「表達式」稱為迴圈條件,把「語句塊」稱為循環體,整個迴圈的過程就是不停判斷迴圈條件、並執行迴圈體程式碼的過程。

用while 迴圈計算1加到100的值:

#include <stdio.h>
int main(){
    int i=1, sum=0;
    while(i<=100){
        sum+=i;
        i++;
    }
    printf("%d\n",sum);
    return 0;
}

運行結果:

5050

程式碼分析:

1) 程式執行到while 時,因為i=1,i

2) 接下來會繼續判斷i

3) 重複執行步驟 2)。

4) 當循環進行到第100次,i 的值變成101,sum 的值變成5050;因為此時i

while 迴圈的整體思路是這樣的:設定一個有變數的迴圈條件,也即一個有變數的表達式;在迴圈體中額外加入一條語句,讓它能夠改變迴圈條件中變數的值。這樣,隨著迴圈的持續執行,循環條件中變數的值也會不斷變化,終有一個時刻,循環條件不再成立,整個循環就結束了。

如果循環條件中不包含變量,會發生什麼情況?

1) 迴圈條件成立時的話,while 迴圈會一直執行下去,永不結束,成為「死迴圈」。例如:

#include <stdio.h>
int main(){
    while(1){
        printf("1");
    }
    return 0;
}

運行程序,會不停地輸出“1”,直到使用者強制關閉。

2) 迴圈條件不成立的話,while 迴圈就一次也不會執行。例如:

#include <stdio.h>
int main(){
    while(0){
        printf("1");
    }
    return 0;
}

運行程序,什麼也不會輸出。

再看一個例子,統計從鍵盤輸入的一行字元的個數:

#include <stdio.h>
int main(){
    int n=0;
    printf("Input a string:");
    while(getchar()!=&#39;\n&#39;) n++;
    printf("Number of characters: %d\n", n);
    return 0;
}

執行結果:

Input a string:c.biancheng.net↙
Number of characters: 15

本例程式中的迴圈條件為 getchar()!='\n',其意義是,只要從鍵盤輸入的字元不是回車就繼續循環。迴圈體n ;完成對輸入字元數計數。

do-while循環

除了while循環,在C語言中還有一個 do-while 迴圈。

do-while迴圈的一般形式為:

do{
    语句块
}while(表达式);

do-while迴圈與while迴圈的不同在於:它會先執行“語句塊”,然後再判斷表達式是否為真,如果為真則繼續循環;如果為假,則終止循環。因此,do-while 迴圈至少要執行一次「語句塊」。

用do-while計算1加到100的值:

#include <stdio.h>
int main(){
    int i=1, sum=0;
    do{
        sum+=i;
        i++;
    }while(i<=100);
    printf("%d\n", sum);
    return 0;
}

運行結果:

5050

注意while(i最後的分號<code>;,這個必須要有。

while循環和do-while各有特點,大家可以適當選擇,實際編程中使用while循環較多。

除了while循環,C語言中還有 for 循環,它的使用更靈活,完全可以取代 while 循環。

for迴圈

上面我們使用while 迴圈來計算1加到100的值,程式碼如下:

#include <stdio.h>
int main(){
    int i, sum=0;
    i = 1;  //语句①
    while(i<=100 /*语句②*/ ){
        sum+=i;
        i++;  //语句③
    }
    printf("%d\n",sum);
    return 0;
}

#可以看到,語句①②③被放到了不同的地方,程式碼結構較為鬆散。為了讓程式更緊湊,可以使用 for 迴圈來代替,如下所示:

#include <stdio.h>
int main(){
    int i, sum=0;
    for(i=1/*语句①*/; i<=100/*语句②*/; i++/*语句③*/){
        sum+=i;
    }
    printf("%d\n",sum);
    return 0;
}

在 for 迴圈中,語句①②③被集中到了一起,程式碼結構一目了然。

for 迴圈的一般形式為:

for(表达式1; 表达式2; 表达式3){
    语句块
}

它的運行過程為:

1) 先執行「表達式1」。

2) 再執行“表達式2”,如果它的值為真(非0),則執行循環體,否則結束循環。

3) 執行完循環體後再執行「表達式3」。

4) 重複執行步驟 2) 和 3),直到「表達式2」的值為假,就結束循環。

在上面的步驟中,2) 和 3) 是一次循環,會重複執行,for 語句的主要作用就是不斷執行步驟 2) 和 3)。

“表达式1”仅在第一次循环时执行,以后都不会再执行,可以认为这是一个初始化语句。“表达式2”一般是一个关系表达式,决定了是否还要继续下次循环,称为“循环条件”。“表达式3”很多情况下是一个带有自增或自减操作的表达式,以使循环条件逐渐变得“不成立”。

for循环的执行过程可用下图表示:

c語言中實作循環結構的控制語句有哪些?

我们再来分析一下“计算从1加到100的和”的代码:

#include <stdio.h>
int main(){
    int i, sum=0;
    for(i=1; i<=100; i++){
        sum+=i;
    }
    printf("%d\n",sum);
    return 0;
}

运行结果:

5050

代码分析:

1) 执行到 for 语句时,先给 i 赋初值1,判断 i

2) 第二次循环时,i 的值为2,i

3) 重复执行步骤 2),直到第101次循环,此时 i 的值为101,i

由此我们可以总结出for循环的一般形式:

for(初始化语句; 循环条件; 自增或自减){
    语句块
}

for循环中的三个表达式

for 循环中的“表达式1(初始化条件)”、“表达式2(循环条件)”和“表达式3(自增或自减)”都是可选项,都可以省略(但分号;必须保留)。

1) 修改“从1加到100的和”的代码,省略“表达式1(初始化条件)”:

int i = 1, sum = 0;
for( ; i<=100; i++){
    sum+=i;
}

可以看到,将i=1移到了 for 循环的外面。

2) 省略了“表达式2(循环条件)”,如果不做其它处理就会成为死循环。例如:

for(i=1; ; i++) sum=sum+i;

相当于:

i=1;
while(1){
    sum=sum+i;
    i++;
}

所谓死循环,就是循环条件永远成立,循环会一直进行下去,永不结束。死循环对程序的危害很大,一定要避免。

3) 省略了“表达式3(自增或自减)”,就不会修改“表达式2(循环条件)”中的变量,这时可在循环体中加入修改变量的语句。例如:

for( i=1; i<=100; ){
    sum=sum+i;
    i++;
}

4) 省略了“表达式1(初始化语句)”和“表达式3(自增或自减)”。例如:

for( ; i<=100 ; ){
    sum=sum+i;
    i++;
}

相当于:

while(i<=100){
    sum=sum+i;
    i++;
}

5) 3个表达式可以同时省略。例如:

for( ; ; )  语句

相当于:

while(1)  语句

6) “表达式1”可以是初始化语句,也可以是其他语句。例如:

for( sum=0; i<=100; i++ )  sum=sum+i;

7) “表达式1”和“表达式3”可以是一个简单表达式也可以是逗号表达式。

for( sum=0,i=1; i<=100; i++ )  sum=sum+i;

或:

for( i=0,j=100; i<=100; i++,j-- )  k=i+j;

8) “表达式2”一般是关系表达式或逻辑表达式,但也可是数值或字符,只要其值非零,就执行循环体。例如:

for( i=0; (c=getchar())!=&#39;\n&#39;; i+=c );

又如:

for( ; (c=getchar())!=&#39;\n&#39; ; )
    printf("%c",c);

相关推荐:《c语言教程

以上是c語言中實作循環結構的控制語句有哪些?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
從網絡到桌面:C#.NET的多功能性從網絡到桌面:C#.NET的多功能性Apr 15, 2025 am 12:07 AM

C#.NETisversatileforbothwebanddesktopdevelopment.1)Forweb,useASP.NETfordynamicapplications.2)Fordesktop,employWindowsFormsorWPFforrichinterfaces.3)UseXamarinforcross-platformdevelopment,enablingcodesharingacrossWindows,macOS,Linux,andmobiledevices.

C#.NET與未來:適應新技術C#.NET與未來:適應新技術Apr 14, 2025 am 12:06 AM

C#和.NET通過不斷的更新和優化,適應了新興技術的需求。 1)C#9.0和.NET5引入了記錄類型和性能優化。 2).NETCore增強了雲原生和容器化支持。 3)ASP.NETCore與現代Web技術集成。 4)ML.NET支持機器學習和人工智能。 5)異步編程和最佳實踐提升了性能。

c#.net適合您嗎?評估其適用性c#.net適合您嗎?評估其適用性Apr 13, 2025 am 12:03 AM

c#.netissutableforenterprise-levelapplications withemofrosoftecosystemdueToItsStrongTyping,richlibraries,androbustperraries,androbustperformance.however,itmaynotbeidealfoross-platement forment forment forment forvepentment offependment dovelopment toveloperment toveloperment whenrawspeedsportor whenrawspeedseedpolitical politionalitable,

.NET中的C#代碼:探索編程過程.NET中的C#代碼:探索編程過程Apr 12, 2025 am 12:02 AM

C#在.NET中的編程過程包括以下步驟:1)編寫C#代碼,2)編譯為中間語言(IL),3)由.NET運行時(CLR)執行。 C#在.NET中的優勢在於其現代化語法、強大的類型系統和與.NET框架的緊密集成,適用於從桌面應用到Web服務的各種開發場景。

C#.NET:探索核心概念和編程基礎知識C#.NET:探索核心概念和編程基礎知識Apr 10, 2025 am 09:32 AM

C#是一種現代、面向對象的編程語言,由微軟開發並作為.NET框架的一部分。 1.C#支持面向對象編程(OOP),包括封裝、繼承和多態。 2.C#中的異步編程通過async和await關鍵字實現,提高應用的響應性。 3.使用LINQ可以簡潔地處理數據集合。 4.常見錯誤包括空引用異常和索引超出範圍異常,調試技巧包括使用調試器和異常處理。 5.性能優化包括使用StringBuilder和避免不必要的裝箱和拆箱。

測試C#.NET應用程序:單元,集成和端到端測試測試C#.NET應用程序:單元,集成和端到端測試Apr 09, 2025 am 12:04 AM

C#.NET應用的測試策略包括單元測試、集成測試和端到端測試。 1.單元測試確保代碼的最小單元獨立工作,使用MSTest、NUnit或xUnit框架。 2.集成測試驗證多個單元組合的功能,常用模擬數據和外部服務。 3.端到端測試模擬用戶完整操作流程,通常使用Selenium進行自動化測試。

高級C#.NET教程:ACE您的下一次高級開發人員面試高級C#.NET教程:ACE您的下一次高級開發人員面試Apr 08, 2025 am 12:06 AM

C#高級開發者面試需要掌握異步編程、LINQ、.NET框架內部工作原理等核心知識。 1.異步編程通過async和await簡化操作,提升應用響應性。 2.LINQ以SQL風格操作數據,需注意性能。 3..NET框架的CLR管理內存,垃圾回收需謹慎使用。

C#.NET面試問題和答案:提高您的專業知識C#.NET面試問題和答案:提高您的專業知識Apr 07, 2025 am 12:01 AM

C#.NET面試問題和答案包括基礎知識、核心概念和高級用法。 1)基礎知識:C#是微軟開發的面向對象語言,主要用於.NET框架。 2)核心概念:委託和事件允許動態綁定方法,LINQ提供強大查詢功能。 3)高級用法:異步編程提高響應性,表達式樹用於動態代碼構建。

See all articles

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

AI Hentai Generator

AI Hentai Generator

免費產生 AI 無盡。

熱門文章

R.E.P.O.能量晶體解釋及其做什麼(黃色晶體)
4 週前By尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.最佳圖形設置
4 週前By尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.如果您聽不到任何人,如何修復音頻
4 週前By尊渡假赌尊渡假赌尊渡假赌
WWE 2K25:如何解鎖Myrise中的所有內容
1 個月前By尊渡假赌尊渡假赌尊渡假赌

熱工具

VSCode Windows 64位元 下載

VSCode Windows 64位元 下載

微軟推出的免費、功能強大的一款IDE編輯器

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

Dreamweaver Mac版

Dreamweaver Mac版

視覺化網頁開發工具

mPDF

mPDF

mPDF是一個PHP庫,可以從UTF-8編碼的HTML產生PDF檔案。原作者Ian Back編寫mPDF以從他的網站上「即時」輸出PDF文件,並處理不同的語言。與原始腳本如HTML2FPDF相比,它的速度較慢,並且在使用Unicode字體時產生的檔案較大,但支援CSS樣式等,並進行了大量增強。支援幾乎所有語言,包括RTL(阿拉伯語和希伯來語)和CJK(中日韓)。支援嵌套的區塊級元素(如P、DIV),

Atom編輯器mac版下載

Atom編輯器mac版下載

最受歡迎的的開源編輯器