首頁 > 軟體

C語言迴圈結構深入刨析

2022-08-18 14:01:13

總述

生活中不止處處是選擇,還時常面臨著重複做某事,比如呢,我們日復一日的學習、敲程式碼、

C語言中提供了 —while迴圈—for迴圈—do-while迴圈來表達迴圈

接下來,對三種迴圈進行分別介紹

while迴圈

while迴圈的流程圖大致就是這樣子

語法結構

while( expression )   //判斷表示式是否成立,成立就執行迴圈體,不成立則不進入
迴圈體;

接下來我們使用一下while迴圈,列印1-10的數位

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

這便是while最簡單的用法,接下來看一下while中的break和continue

while迴圈中break和continue

break

看到break大家肯定不陌生,選擇結構中的switch-case就要搭配著break使用哦

#include <stdio.h>
int main(){
    int i = 1;
    while(i < 11)
    {
        if( 5 == i)
            break;
        printf("%d ",i++);
    }
    return 0;
}

可以看出,當i=5的時候,直接跳出了整個迴圈不再執行

break是直接跳出迴圈,也是直接跳出switch-case

continue

在英語中,continue是繼續的意思 ,在迴圈中,表示跳過這次迴圈進行下一次迴圈

#include <stdio.h>
int main() {
    int i = 1;
    while (i < 11)
    {
        if (5 == i)
            continue; // 把break換成continue試一下
        printf("%d ", i++);
    }
    return 0;
}

大家可以猜一下,可想而知,大家可能會認為結果是 1 2 3 4 6 7 8 9 10 跳過5,我們來分析一下

遊標一直在閃爍,死迴圈,那怎麼樣才能達到跳過5的效果呢,

核心問題在於**這樣i的值沒辦法變化,那我們把i放在continue前面來試試**

#include <stdio.h>
int main() {
    int i = 0;
    while (i < 11)
    {
        i++;
        if (5 == i)
            continue;
        printf("%d ", i);
    }
    return 0;
}

這樣continue就不會跳過迴圈因子 -i 的變化,所以不會死迴圈,來看結果

成功跳過了5,大家在while迴圈中使用continue時一定要注意迴圈因子的問題

continue 在while迴圈中的作用就是:

  • 本次迴圈中continue後邊的程式碼不會再執行而是直接跳轉到while語句的判斷部分。
  • 進行下一次迴圈的入口判斷。

for迴圈

語法結構

for( 表示式1 ; 表示式2 ; 表示式3)

迴圈體;

  • 表示式1為**初始化部分,用於初始化迴圈變數的**。
  • 表示式2為_條件判斷部分_,用於**判斷迴圈時候終止**。
  • 表示式3為_調整部分_,用於**_迴圈條件的調整 _**。

for迴圈中break和continue

break

for迴圈中break與while迴圈中break完全相同,表示跳出迴圈

#include <stdio.h>
int main() {
	int i = 0;
	for (i = 1; i < 10; i++) {
		if (5 == i)
			break;
		printf("%d ", i);
	}
	return 0;
}

break基本沒啥區別,就是跳出迴圈

continue

for迴圈中continue跳出的依然是此次迴圈,但是並不會跳過表示式3

#include <stdio.h>
int main() {
	int i = 0;
	for (i = 1; i < 10; i++) {
		if (5 == i)
			continue;
		printf("%d ", i);
	}
	return 0;
}

依然是跳過5,continue不會跳過表示式3,意味著i++可以執行,不會造成死迴圈

當然,一個人想寫bug誰也攔不住他

比如:

for迴圈中省略表示式的問題

for迴圈中有3個表示式,都可以省略,但是分號一個不能少

int main(){
    int i = 0;
    //可以寫成這樣
    for (i=0;i<10;)
        ;
    //還可以這樣
    for(i = 0;;)
        ;
    //甚至是這樣
    for(;;);  //三分號一個也不能少
}

for(;


IT145.com E-mail:sddin#qq.com