溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

C語言循環(huán)結(jié)構(gòu)實(shí)例代碼分析

發(fā)布時(shí)間:2022-08-26 15:29:54 來源:億速云 閱讀:132 作者:iii 欄目:開發(fā)技術(shù)

今天小編給大家分享一下C語言循環(huán)結(jié)構(gòu)實(shí)例代碼分析的相關(guān)知識(shí)點(diǎn),內(nèi)容詳細(xì),邏輯清晰,相信大部分人都還太了解這方面的知識(shí),所以分享這篇文章給大家參考一下,希望大家閱讀完這篇文章后有所收獲,下面我們一起來了解一下吧。

while循環(huán)

while循環(huán)的流程圖大致就是這樣子

C語言循環(huán)結(jié)構(gòu)實(shí)例代碼分析

語法結(jié)構(gòu)

while( expression )   //判斷表達(dá)式是否成立,成立就執(zhí)行循環(huán)體,不成立則不進(jìn)入
循環(huán)體;

接下來我們使用一下while循環(huán),打印1-10的數(shù)字

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

C語言循環(huán)結(jié)構(gòu)實(shí)例代碼分析

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

while循環(huán)中break和continue

break

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

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

C語言循環(huán)結(jié)構(gòu)實(shí)例代碼分析

可以看出,當(dāng)i=5的時(shí)候,直接跳出了整個(gè)循環(huán)不再執(zhí)行

break是直接跳出循環(huán),也是直接跳出switch-case

continue

在英語中,continue是繼續(xù)的意思 ,在循環(huán)中,表示跳過這次循環(huán)進(jìn)行下一次循環(huán)

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

大家可以猜一下,可想而知,大家可能會(huì)認(rèn)為結(jié)果是 1 2 3 4 6 7 8 9 10 跳過5,我們來分析一下

C語言循環(huán)結(jié)構(gòu)實(shí)例代碼分析

C語言循環(huán)結(jié)構(gòu)實(shí)例代碼分析

光標(biāo)一直在閃爍,死循環(huán),那怎么樣才能達(dá)到跳過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就不會(huì)跳過循環(huán)因子 -i 的變化,所以不會(huì)死循環(huán),來看結(jié)果

C語言循環(huán)結(jié)構(gòu)實(shí)例代碼分析

成功跳過了5,大家在while循環(huán)中使用continue時(shí)一定要注意循環(huán)因子的問題

continue 在while循環(huán)中的作用就是:

  • 本次循環(huán)中continue后邊的代碼不會(huì)再執(zhí)行而是直接跳轉(zhuǎn)到while語句的判斷部分。

  • 進(jìn)行下一次循環(huán)的入口判斷。

for循環(huán)

語法結(jié)構(gòu)

for( 表達(dá)式1 ; 表達(dá)式2 ; 表達(dá)式3)

循環(huán)體;

  • 表達(dá)式1為**初始化部分,用于初始化循環(huán)變量的**。

  • 表達(dá)式2為_條件判斷部分_,用于**判斷循環(huán)時(shí)候終止**。

  • 表達(dá)式3為_調(diào)整部分_,用于**_循環(huán)條件的調(diào)整 _**。

C語言循環(huán)結(jié)構(gòu)實(shí)例代碼分析

for循環(huán)中break和continue

break

for循環(huán)中break與while循環(huán)中break完全相同,表示跳出循環(huán)

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

C語言循環(huán)結(jié)構(gòu)實(shí)例代碼分析

break基本沒啥區(qū)別,就是跳出循環(huán)

continue

for循環(huán)中continue跳出的依然是此次循環(huán),但是并不會(huì)跳過表達(dá)式3

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

C語言循環(huán)結(jié)構(gòu)實(shí)例代碼分析

依然是跳過5,continue不會(huì)跳過表達(dá)式3,意味著i++可以執(zhí)行,不會(huì)造成死循環(huán)

當(dāng)然,一個(gè)人想寫bug誰也攔不住他

比如:

C語言循環(huán)結(jié)構(gòu)實(shí)例代碼分析

for循環(huán)中省略表達(dá)式的問題

for循環(huán)中有3個(gè)表達(dá)式,都可以省略,但是分號(hào)一個(gè)不能少

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

for(;????; 這樣的代碼,如果循環(huán)體中沒有break,基本就是妥妥死循環(huán),并不建議大家這樣使用

for循環(huán)嵌套

當(dāng)出現(xiàn)兩個(gè)for循環(huán)的時(shí)候,需要考慮循環(huán)控制的問題,行列,內(nèi)外循環(huán)都代表什么?大家需要想清楚

寫一個(gè)九九乘法表

#include <stdio.h>
int main() {
	int i = 0;
	int j = 0;
	for (i = 1; i < 10; i++) {  //控制行
		for (j = 1; j <= i; j++) {
			printf("%d * %d = %d  ", j, i, i * j); //控制列
		}
		printf("\n");
	}
	return 0;
}

一般情況下,內(nèi)層循環(huán)因子的控制條件都和外層循環(huán)因子有關(guān)系

下面給大家?guī)讉€(gè)for循環(huán)的注意事項(xiàng)

  • 不可在for 循環(huán)體內(nèi)修改循環(huán)變量,防止 for 循環(huán)失去控制。

  • 建議for語句的循環(huán)控制變量的取值采用“前閉后開區(qū)間”寫法

#include <stdio.h>
int main(){
    int arr[10] = {1,2,3,4,5,6,7,8,9,10};//數(shù)組下標(biāo)從0到9
    int i = 0;
    for(;i <=9;i++)  //前閉后閉
        printf("%d ",arr[i]);    
    for(;i < 10;i++)//前閉后開
        printf("%d ",arr[i]);
    return 0;
}

前閉后開區(qū)間的寫法,可能使數(shù)字有了某種含義,比如例子中的10,剛好是打印元素的個(gè)數(shù),也是數(shù)組的長度

給大家補(bǔ)充一個(gè)小知識(shí)

警惕for循環(huán)后邊直接跟分號(hào)的題,學(xué)校愛出這玩意,懂得都懂

do-while循環(huán)

do-while循環(huán)與其他兩種循環(huán)有很大不同,而也是使用頻率最小的循環(huán)

do
    循環(huán)體
while(判斷條件);

C語言循環(huán)結(jié)構(gòu)實(shí)例代碼分析

do-while循環(huán)最大的特點(diǎn)就是無論如何,循環(huán)體一定會(huì)執(zhí)行一次

只有在對(duì)應(yīng)場景中,才應(yīng)該使用do-while循環(huán)

do-while循環(huán)中,break以及continue的用法與while循環(huán)中一樣,本文不在贅述。

goto語句

對(duì)于goto語句,是一種跳轉(zhuǎn),其實(shí)沒必要說,因?yàn)槟苡盟鉀Q的用循環(huán)都能解決

簡單介紹一下,但是并不推薦大家使用

#include <stdio.h>
int main()
{
    printf("hehe\n");
    goto flag;
    printf("haha\n");
flag:
    printf("heihei\n");
    return 0;
}

goto 會(huì)直接跳轉(zhuǎn)到flag標(biāo)記處,跳過打印haha

C語言循環(huán)結(jié)構(gòu)實(shí)例代碼分析

以上就是“C語言循環(huán)結(jié)構(gòu)實(shí)例代碼分析”這篇文章的所有內(nèi)容,感謝各位的閱讀!相信大家閱讀完這篇文章都有很大的收獲,小編每天都會(huì)為大家更新不同的知識(shí),如果還想學(xué)習(xí)更多的知識(shí),請(qǐng)關(guān)注億速云行業(yè)資訊頻道。

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場,如果涉及侵權(quán)請(qǐng)聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI